Config management és minio bevezetése
Alex - 1 éveMi 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