Webáruház Szegeden
A kategóriánként eltérő attribútumú katalógus MongoDB-ben van, az elérhetőség és a kosarak pedig Redisen keresztül futnak, hogy a listaoldalak ne terheljék minden megjelenítésnél a fő adatbázist.
MongoDB üzemeltetés Magyarországon, Redis-szel kiegészítve, a csapatunk gondozásában: háromcsomópontos replica set, hitelesítés és TLS, memóriakorlátos cache kiürítési szabállyal, valamint perzisztencia és rendszeres visszaállítási gyakorlat. Ez illik a gyakran változó sémájú alkalmazásokhoz és minden olyan API-hoz, amelynek ingadozó forgalom mellett is gyorsan kell válaszolnia a felhasználóknak.
Két különböző szerep, ezért két különböző beállítás. A MongoDB háromcsomópontos replica setet kap, a valódi lekérdezésekhez illő indexeket, ahol számít, sémaellenőrzést, és tesztelt visszaállítással rendelkező mentést. A Redis memóriakorlátot kap, a szerephez illő kiürítési szabályt, AOF vagy RDB perzisztenciát, valamint Sentinelt az átváltáshoz. A kettőt együtt figyeljük, mert egy cache-kiesés azonnal terhelésként jelenik meg a fő adatbázison. A beállítást minden esetben a te forgalmi mintáid alapján finomítjuk, nem egy általános sablon szerint.
A legtöbb MongoDB- és Redis-incidens nem a forgalomból, hanem a telepítés után érintetlenül hagyott alapértelmezett beállításból ered. Ezért minden átadásnál ugyanazt a listát alkalmazzuk, és beírjuk a dokumentációba, hogy bármikor magad is ellenőrizhesd. A nyilvánosan elérhető, jelszó nélküli példányokat automatikus scannerek órákon belül megtalálják a telepítés után, ezért nálunk a hálózati elkülönítés egyetlen környezetben sem opcionális. Ezt a fegyelmet a teszt- és a fejlesztői környezetekben is ugyanúgy tartjuk, nem csak éles rendszeren.
A Redis akkor lép be, amikor ugyanazt a választ ezerszer kellene újraszámolni: katalógusok, elérhetőség, kosarak, forgalomkorlátozás, feldolgozási sorok. A MongoDB akkor, amikor a dokumentumok eltérnek egymástól, és a séma verzióról verzióra változik: változó attribútumú katalógusok, ügyféllapok, események, tartalom. Ha az adataid szigorúan relációsak, és pénzügyi riportokra van szükséged, nyíltan elmondjuk, hogy a PostgreSQL a jobb választás, és megmutatjuk, miért ezt javasoljuk helyette.
Az üzemeltetés a havi keretbe tartozik: 1–8 óra a VPS-terveken, csomagtól függően 5–10 óra a dedikált és 10 óra a GPU szervereken, a cPanelen 1 óra az Advanced tervtől felfelé. Az ügyfélpanelből kéred, a DevOps szolgáltatások menüpontban, a te javasolt határidőddel. Az órák nem gördülnek át a következő hónapra, ezért tervezünk velük: egyik hónapban a migráció és a hardening, a másikban az indexek és a cache-szabály. A kereten felül is dolgozunk, külön számlázással.
Minden előfizetés havi DevOps, Kiberbiztonsági és Programozási órákat tartalmaz: 1 óra a cPanel Advanced csomagtól felfelé, 1–8 óra VPS esetén, dedikált szervereken csomagtól függően 5–10 óra, GPU szervereken pedig 10 óra. Az órákat az ügyfélpanelből lehet kérni, nem vihetők át a következő hónapra, és ami a keretet meghaladja, azt elfogadjuk és külön számlázzuk.
Kérést nyitsz az ügyfélpanel DevOps szolgáltatások menüpontjában, megadod a jelenlegi adatmennyiséget, a forgalom típusát és a neked megfelelő határidőt.
Megnézzük a lekérdezéseket, a memóriahasználatot és azt, hogyan használja az alkalmazás a cache-t, majd megegyezünk, mi fér bele az adott havi keretbe.
Beállítjuk a replica setet, a hitelesítést, a memóriaszabályokat és a mentést, majd figyeljük a cache-találati arányt és az alkalmazás által érzékelt válaszidőt.
Megkapod a konfigurációkat, a hozzáférési szabályokat, a mentési tervet, az átváltási lépéseket, valamint a visszaállítási gyakorlat eredményét.
A kategóriánként eltérő attribútumú katalógus MongoDB-ben van, az elérhetőség és a kosarak pedig Redisen keresztül futnak, hogy a listaoldalak ne terheljék minden megjelenítésnél a fő adatbázist.
A változó szerkezetű időpontok és páciens-adatlapok MongoDB-ben vannak privát hálózati hozzáféréssel, a Redis pedig a betegportál munkameneteit és forgalomkorlátozását tartja.
A futárok aktuális pozíciója és a kiosztási sorok rövid TTL-lel Redisen mennek keresztül, míg a rendeléstörténet MongoDB-ben marad, időszakonként particionálva.
A Redis egy memóriaalapú adatbázis, amelyet cache-elésre, munkamenetekre, feldolgozási sorokra és forgalomkorlátozásra használnak. Az adatokat RAM-ban tartja, ezért nagyon gyorsan válaszol, de helyesen beállított memóriakorlátra, kiürítési szabályra és perzisztenciára van szüksége, hogy újraindításkor ne veszítsen adatot.
A VPS-csomagok, a dedikált szerverek és a GPU szerverek, root hozzáféréssel, Frankfurtban. A cPanelen ez nem lehetséges, ott a klasszikus LAMP-verem fut. Ha másik szolgáltatótól jössz, a migráció ingyenes, és mi végezzük, közösen egyeztetett leállási ablakkal.
VPS-re vagy dedikált szerverre van szükséged. A MongoDB a folyamat, a memória és a hálózat feletti kontrollt igényli, ami megosztott tárhelyen nem érhető el. Ráadásul egy helyesen kialakított replica set három csomópontból áll, ami dedikált erőforrást és privát hálózatot feltételez közöttük.
A MongoDB a fő tároló azokra a dokumentumokra, amelyeket meg kell őrizni: lapok, katalógusok, események. A Redis a gyors, jellemzően ideiglenes réteg: cache, munkamenetek, sorok. Kiegészítik, nem helyettesítik egymást. Ha az adataid szigorúan relációsak, mindkettő helyett a PostgreSQL-t javasoljuk.
Az első lépés, hogy ne legyen nyilvánosan elérhető. A szolgáltatást a privát interfészre vagy VPN-re kötjük, lezárjuk a portot a tűzfalon, bekapcsoljuk a hitelesítést, a TLS-t és az ACL-eket, majd kívülről ellenőrizzük, hogy a port nem válaszol. Egy nyitott, jelszó nélküli példány órák alatt kompromittálódik.
A halmaz automatikusan új elsődleges csomópontot választ, az alkalmazás pedig a driveren keresztül újracsatlakozik. Az átváltást átadáskor teszteljük, nem csak beállítjuk, és a dokumentációban rögzítjük, milyen nyomot hagy a naplókban, hogy a csapatod azonnal felismerje a helyzetet.
Ellenőrizzük a kitettséget, beállítjuk a hitelesítést, a TLS-t és a privát hálózatot, majd a beleértett órákból megoldjuk a replikációt és a mentést.