Наши технологии
SWeather автоматически и круглосуточно превращает данные космических аппаратов и обсерваторий в прогнозы космической погоды. Его делает небольшая команда на современной платформе .NET.
Архитектура
Система разделена на независимые части, поэтому каждую можно менять, не ломая остальные.
- Модульный монолит: один сервис из независимых модулей.
- У каждого модуля свои слои контрактов, домена, данных и API.
- Модули общаются через генерируемый при компиляции медиатор и через интеграционные события в шине сообщений.
- Архитектурные тесты не пропускают зависимость одного модуля от другого.
Современная платформа
Мы работаем на актуальных версиях инструментов и держим код в строгости.
- .NET 11 с runtime async и nullable-ссылками во всём коде.
- ASP.NET Core с Minimal API, OpenAPI и версионированием, а также Blazor Server.
- Microsoft Aspire для локального окружения.
- Доступ к данным через Entity Framework Core и Dapper.
- Строгая сборка: любое предупреждение — ошибка, стиль кода проверяется при сборке.
- Мультиязычность: русский, английский, китайский, финский и норвежский.
Искусственный интеллект
AI помогает объяснять космическую погоду, а AI-агенты могут пользоваться нашими данными.
- Microsoft.Extensions.AI и OpenAI-совместимые клиенты.
- Microsoft Agent Framework.
- DeepL.
- Tesseract OCR.
- MCP-сервер с инструментами для AI-агентов.
Хранилища и обмен сообщениями
Каждый вид данных хранится там, где ему место.
- PostgreSQL с PostGIS.
- ClickHouse.
- Garnet и двухуровневый гибридный кэш.
- RustFS — S3-совместимое объектное хранилище.
- RabbitMQ и Rebus.
Производительность
Тяжёлые расчёты выполняются быстро и не расходуют память впустую.
- SIMD-векторизация и FMA-инструкции в Geopack.
- Расчёты Geopack и парсеры данных без выделения памяти.
- NativeAOT: Geopack — нативная библиотека, которой Python пользуется без .NET.
Визуализация
Графики и карты строятся на сервере автоматически.
- Наша библиотека на основе ScottPlot, графики в формате WebP.
Тесты
Каждое изменение проверяется автоматически, прежде чем дойдёт до пользователей.
- Модульные тесты в каждом репозитории.
- Интеграционные тесты с PostgreSQL, RabbitMQ и S3-хранилищем в контейнерах.
- Архитектурные тесты и тесты контейнера зависимостей.
- Тесты отрисовки графиков.
- Бенчмарки на BenchmarkDotNet против деградации производительности.
Контейнеры и эксплуатация
Система поставляется в контейнерах и сама сообщает о своём состоянии.
- Docker-образы с многоэтапной сборкой; сборка автоматизирована на Fallout.
- OpenTelemetry, Prometheus, Loki, Tempo и Grafana; health check'и и бизнес-метрики.
- Диагностический sidecar снимает дампы памяти и трассировки без остановки сервиса.
- CI проверяет стиль, собирает, тестирует и публикует каждое изменение.
Открытый код
Мы за открытый код: наши научные и инфраструктурные библиотеки опубликованы на GitHub, NuGet.org и PyPI.