Valós idejű SaaS platform: skálázható webalkalmazás építése műholdas küldetésirányításhoz

A kihívás

Ahogy a kisméretű műholdak egyre képesebbé válnak, az üzemeltetésükhöz használt szoftverek nem tartottak lépést ezzel. A polcról vásárolható küldetésirányító eszközök merevek és általánosak, nem tudnak alkalmazkodni egyedi hardverkonfigurációkhoz vagy nem szabványos kommunikációs beállításokhoz. Ügyfelünk két műholdprogramjánál (RADCUBE és VIREO) minden egyes műhold egyedi komponensekkel, testre szabottan épült, ami azt jelentette, hogy egyetlen létező szoftvertermék sem tudta kezelni az adott üzemeltetési munkafolyamataikat, tesztelési pipeline-jaikat vagy adatintegrációs igényeiket. Röviden: ez egy klasszikus szoftveres probléma volt, az ügyfélnek egy olyan platformra volt szüksége, amely még nem létezett.

A követelmények úgy olvasnak, mint egy komplex SaaS termékbrief. Az ügyfélnek egyetlen, böngészőalapú platformra volt szüksége, amely a műholdas küldetés teljes életciklusát kezeli, a korai hardvertesztektől egészen a pályán zajló élő üzemeltetésig. Integrálódnia kellett a saját fejlesztésű földi állomásukkal (a Földön található fizikai antenna- és rádióberendezéssel, amely a világűrben lévő műholdakkal kommunikál), valós idejű antennapozicionálást, jelfeldolgozást és élő adatmegjelenítést kezelve. Minden adatprotokollnak meg kellett felelnie a CCSDS és az ECSS szabványoknak; ezek az űradat-rendszerek nemzetközi szabványai, amelyek ahhoz hasonlíthatók, ahogyan a HTTP és a REST definiálja a webes kommunikációt, csak éppen az űreszközök adatcseréjéhez. Mindezek tetejébe a rendszerarchitektúrának elég modulárisnak kellett lennie ahhoz, hogy egyszerre több műholdat és földi állomást is támogasson, a jövőbeli további skálázás lehetőségével.

A megoldás

A nulláról terveztünk és építettünk egy teljesen egyedi, webalapú küldetésirányító platformot, modern SaaS-stílusú architektúrát alkalmazva. A platform egyetlen felületként szolgál mindenhez, amire az üzemeltetőknek szükségük van: műholdak irányítása, beérkező adatfolyamok feldolgozása, földiállomás-berendezések automatizálása és tesztszimulációk futtatása. Ahelyett, hogy egy polcról vásárolt eszközt alakítottunk volna át, egy célra szabott terméket építettünk, amely az ügyfél küldetésportfóliójával együtt tud fejlődni.

A technológiai döntések egy valós idejű, adatintenzív webalkalmazás igényeit tükrözték. A frontenden Reactot és Gatsbyt használtunk egy reszponzív, komponensalapú felület felépítéséhez. A backenden a Node.js kezelte az alkalmazás alaplogikáját, C++ modulokkal a teljesítménykritikus jelfeldolgozási feladatokhoz. A valós idejű kommunikációhoz a Deepstream.io-t implementáltuk, amely alacsony késleltetésű, kétirányú adatstreamelést tesz lehetővé a szerver és az üzemeltetői dashboardok között (ez elengedhetetlen, amikor a műhold állapotfrissítéseinek azonnal meg kell jelenniük, amint megérkeznek). A MongoDB-t választottuk a küldetéskonfigurációk és üzemeltetési feljegyzések tárolására, az InfluxDB-t (egy időbélyeg-sorozatokra optimalizált adatbázis, amely nagy áteresztőképességű, szekvenciális adatokhoz készült) pedig a műholdas telemetria, azaz a műholdak által a Földre visszaküldött állapot- és szenzoradatok folyamatos adatáramának befogadására. A nagy méretű bináris adatokat, például a nyers jelrögzítéseket, GridFS-sel tároltuk. A teljes rendszert Dockerrel konténerizáltuk, ami konzisztens telepítéseket és egyszerű skálázást tesz lehetővé.

Az adatvizualizációhoz integráltuk a Grafanát, hogy az üzemeltetők gazdag, valós idejű dashboardokat kapjanak a műhold állapotmutatóiról, a kommunikációs kapcsolat állapotáról és a küldetés idővonalának előrehaladásáról. Emellett beépítettük a Cesiumot, egy 3D földgömb-megjelenítő motort, hogy interaktív térképen jelenítsük meg a műholdak pályapozícióit és a földi állomások lefedettségi zónáit. Az élő üzemeltetésen túl a platform teljes szimulációs környezeteket is támogatott, lehetővé téve a mérnökcsapatok számára, hogy hardverprototípusok és minősítési modellek ellen futtassanak teszteket, mielőtt egy műhold egyáltalán elhagyná a földet. Ez azt jelentette, hogy ugyanaz a szoftver szolgálta ki mind a fejlesztést, mind az éles üzemet, csökkentve a kontextusváltást és megszüntetve a különálló eszközláncok szükségességét.

Image courtesy of C3S LLC.

Az eredmény

A platform sikeresen működtette mind a RADCUBE, mind a VIREO műholdküldetést elejétől a végéig. Validálásra került a műholdas hardverfejlesztés minden szakaszában, a korai breadboard-prototípusoktól a mérnöki és minősítési modelleken át egészen a végleges, repülésre kész egységekig. Ez a végponttól végpontig terjedő lefedettség bizonyította, hogy egyetlen webplatform megbízhatóan ki tudja szolgálni a teljes termékéletciklust, nem csak a végső üzembe helyezést.

A valós idejű adatstreamelés és az automatizált munkafolyamatok drámaian csökkentették a műholdküldetés üzemeltetéséhez szükséges manuális munkát. Az üzemeltetők egyetlen böngészőalapú felületről tudták figyelni az élő telemetriát (a műholdról streamelt állapot- és szenzoradatokat), parancsokat küldeni a műholdaknak, és kezelni a földi állomás antennáit. Ez jelentősen csökkentette az üzemeltetők terhelését, és kisebb, karcsúbb csapatok számára is elérhetővé tette a küldetésirányítást.

A platform moduláris, konténerizált architektúrája azt jelentette, hogy egy új műholdküldetés bevezetése minimális további mérnöki munkát igényelt. Az új küldetéseket a rendszer alaparchitektúrájának újratervezése nélkül lehetett konfigurálni és integrálni, ezzel a platformot egy újrafelhasználható termékalappá alakítva, ahelyett hogy egyszeri projektszállítás maradt volna.

Ez a projekt bebizonyította, hogy a modern webes technológiák és felhőnatív tervezési minták (React, Node.js, Docker, idősoros adatbázisok, valós idejű streamelés) képesek megfelelni a biztonságkritikus, valós idejű rendszerek szigorú követelményeinek, még egy olyan speciális területen is, mint a műholdüzemeltetés. Az ügyfél nem csupán egy működő terméket kapott, hanem egy hosszú távú technológiai platformot, amely továbbra is támogatja bővülő küldetésportfólióját.

Image courtesy of C3S LLC.

A projekt technológiai stackje

Node.js JavaScript runtime

Node.js

C++ programming language

C++

React JavaScript library

React

Cesium 3D mapping platform

Cesium

Docker containerization platform

Docker

MongoDB database

MongoDB

InfluxDB time series database

InfluxDB

Deepstream real-time server

Deepstream

Gatsby static site generator

Gatsby

Grafana analytics platform

Grafana

Hosszú távú eredmények

Moduláris, konténerizált architektúra, amely készen áll a jövőbeli műholdas küldetések közötti skálázásra
Csökkentett üzemeltetői terhelés valós idejű automatizálás és egységes, böngészőalapú felület révén
Bebizonyította, hogy modern webes és felhőnatív technológiák képesek üzemeltetni küldetéskritikus rendszereket