Config management és minio bevezetése

Alex - 6 hónapja

Mi az a hasura, mire jó?

Egy olyan service, amihez hozzá köthetjük az adatbázisunkat. Az adatbázis tábláihoz, mezőihez generál nekünk egy GraphQL API-t, és szükség esetén Rest API endpoint-okat is lehet hozzárendelni. A GraphQL subscription-t is támogatja, így azonnal építhetjük a realtime frontendünket is. Ezen felül permission kezelés is hozzárendelhető a táblákhoz és mezőkhöz. A segítségével rengeteg időt és emberi erőforrást lehet megspórolni, ugyanis a webes felületén könnyedén létrehozhatóak az adatbázis módosításai amiről migráló fájlokat is automatikusan generál. Szerverre feltölteni a frissítést pedig a hasura cli segítségével úgy megtehetjük hogy az éles service-ünknek nem kell leállnia se. Plusz bónusz hogy performance-ra sem lehet panasz.

Miért volt a bevezetésére szükség?

A szobákban rengeteg raspberry fut (Clock, sound player, terminal game stb). Szobánként más config beállítások tartoznak az eszközökhöz. Szobánként más mqtt-hez kell kapcsolódni, esetleg a Clockoknak más-más videót kell tudni lejátszani szobánként. Korábban a config fizikailag volt tárolva az eszközökön. Meghibásodás esetén vagy nullából össze kellett építeni a hozzá tartozó configot, vagy még az előzőről le lehetett szedni ha még tudott üzemelni. Sok eszközünk volt, mindegyikre egyedi config-al, nehéz volt összefogni a beállításokat.

Hogy zajlott a bevezetés?

A meglévő rendszereket át kellett írni úgy, hogy a config managementből szedjék az adatokat. Adatbázis oldalon könnyen fel tudtuk úgy építeni a táblákat a játékokhoz hogy a primary key lett az eszköz ip címe. Így az eszköz könnyen le tudja kérni a saját ip címével a hozzá tartozó configot. A letöltött configot pedig cacheljük az eszközön, arra az esetre ha nem lenne elérhető valamiért a config management, a játékok akkor is játszhatóak maradjanak.

A bevezetésével még azt is nyertük, hogy lett egy olyan központi rész a rendszerben, ahol láthatjuk az eszközöket és hogy milyen szerepük van a szobában. Ez korábban egy táblázatban volt vezetve

Hogy jön a minio a képbe?

A min.io egy nagy teljesítményű objektum tároló amit Go nyelven írtak.

Az eszközökön voltak tárolva videofájlok, amiket szintén központosítani szerettünk volna. Így könnyebben átlátható és karbantarthatóak a szobákhoz tartozó videók.

A szobában futó rendszerek programjai is ide vannak feltöltve, és egy app updater program segítségével frissítjük le a szobákban automatikusan a rendszereket. Erről a programról egy másik cikkben olvashatunk majd.

A későbbiekben még a hangfájlok is ide lesznek átrakva, jelenleg a régi online rendszerről töltődnek le a hangfájlok.

Min.io Szabadulószoba Hasura.io GraphQL Rest API MQTT

Olvasnék még ...