Vår teknologi
SWeather gjør data fra romfartøy og observatorier om til romværvarsler, automatisk og døgnet rundt. Et lite team bygger det på en moderne .NET-plattform.
Arkitektur
Systemet er delt i uavhengige deler, slik at hver del kan endres uten å ødelegge de andre.
- En modulær monolitt: én tjeneste bygget av uavhengige moduler.
- Hver modul har egne lag for kontrakter, domene, data og API.
- Modulene kommuniserer gjennom en kildegenerert mediator i prosessen og gjennom integrasjonshendelser på en meldingsbuss.
- Arkitekturtester stopper bygget når én modul avhenger av en annen.
Moderne plattform
Vi bygger på oppdaterte versjoner av verktøyene våre og holder koden streng.
- .NET 11 med runtime async og nullable-referansetyper overalt.
- ASP.NET Core med Minimal API, OpenAPI og versjonerte endepunkter, samt Blazor Server.
- Microsoft Aspire for det lokale miljøet.
- Datatilgang med Entity Framework Core og Dapper.
- Streng bygging: hver advarsel er en feil, og kodestilen sjekkes under byggingen.
- Flerspråklighet: russisk, engelsk, kinesisk, finsk og norsk.
Kunstig intelligens
KI hjelper med å forklare romværet, og KI-agenter kan bruke dataene våre.
- Microsoft.Extensions.AI og OpenAI-kompatible klienter.
- Microsoft Agent Framework.
- DeepL.
- Tesseract OCR.
- En MCP-server med verktøy for KI-agenter.
Lagring og meldinger
Hver type data ligger i lagringen som passer den.
- PostgreSQL med PostGIS.
- ClickHouse.
- Garnet og en hybridbuffer i to nivåer.
- RustFS, en S3-kompatibel objektlagring.
- RabbitMQ og Rebus.
Ytelse
Tunge beregninger går raskt og sløser ikke med minne.
- SIMD-vektorisering og FMA-instruksjoner i Geopack.
- Geopack-beregninger og dataparsere uten minneallokeringer.
- NativeAOT: Geopack er et native bibliotek som Python bruker uten .NET.
Visualisering
Grafer og kart tegnes automatisk på serveren.
- Vårt eget bibliotek bygget på ScottPlot, grafer i WebP.
Tester
Hver endring kontrolleres automatisk før den når brukerne.
- Enhetstester i hvert repositorium.
- Integrasjonstester med PostgreSQL, RabbitMQ og S3-lagring i containere.
- Arkitekturtester og tester av avhengighetscontaineren.
- Tester av grafgjengivelse.
- Ytelsestester med BenchmarkDotNet mot ytelsesforringelse.
Containere og drift
Systemet leveres i containere og rapporterer sin egen helse.
- Docker-bilder bygget i flere trinn; byggingen er automatisert med Fallout.
- OpenTelemetry, Prometheus, Loki, Tempo og Grafana; helsesjekker og forretningsmålinger.
- En diagnostikk-sidecar samler minnedumper og sporinger uten å stoppe tjenesten.
- Kontinuerlig integrasjon sjekker stil, bygger, tester og publiserer hver endring.
Åpen kildekode
Vi støtter åpen kildekode: våre vitenskapelige biblioteker og infrastrukturbiblioteker er publisert åpent på GitHub, NuGet.org og PyPI.