Amit a termelés telepítése során tanultam

Termelés telepítése. Minden projekt utolsó szakasza. Amikor az idõ folyamán elvégzett kemény munkája él, a célközönség felhasználja. Biztosan izgalmas időszak, különösen akkor, ha részt vesz az infrastruktúra beállításának folyamatában!

A telepítési folyamatokban korábban is részt vettem. De ezúttal egy hatalmas rendszeren dolgoztam a térfogat, a technológiai halmaz és az infrastruktúra tekintetében, ami csábító escapade volt! Első kézből tapasztaltam meg az egész folyamatot, és jó néhány dolgot megtanultam.

Itt található a tanulásom felsorolása, amelyre emlékezni fogok és fejlesztői pályafutásom során alkalmazom.

A két oszlop: Előkészítés és tervezés⏱️

Magától értetődik, hogy az előkészítésnek és a tervezésnek része kell lennie minden tevékenységének. De ami a termelés kiépítését illeti, ez szabállyá válik. Ez adott, elengedhetetlen . Ismernie kell a projektben dolgozott technológiák bonyolultságát. El kell gondolkodnia azon is, hogy milyen infrastruktúra lenne a legalkalmasabb a különféle rendszerek futtatására.

Az általunk épített rendszer technológiai verem részeként nodejs-ból, MongoDB-ből, InfluxDB-ből, redisből, asp.net-ből és rabbitMQ-ból állt . A rendszer egyik elsődleges követelménye hatalmas mennyiségű adat napi szintű kezelése volt. Így a rendszernek egy megfelelő telepítési térképet szem előtt tartva kellett életbe lépnie, amely világosan megfogalmazta a következőket:

  • Milyen rendszert / technológiát kellett volna futtatni, milyen gépen
  • A rendszerek klaszterezésére vonatkozó előírások
  • Hogy mindezek az önálló dobozok bolondbiztos módon beszélnek egymással.

Helyi, globálisan gondolkodik?

Nos, ez volt néhány tanács a projekt építészétől / barátomtól. Magamnak és a csapat néhány más fejlesztőjének nem volt semmilyen előzetes tapasztalata ilyen hatalmas rendszer bevezetéséről karrierünk során. Tehát építészünk azt tanácsolta, hogy helyben hozzunk létre egy azonos gyártási rendszert.

Ez azt jelentette, hogy mindenről gyakorlati tapasztalattal kell rendelkeznünk. A fürtözött NodeJS környezettől (amely 8 fürtből áll) és több szerveres MongoDB telepítéstől a gyártásra kész Redis telepítésig, a gyártásra kész pm2 konfigurációkig és környezeti változókig!

És mindent dokumentáltunk. Az összes gyártási beállítást kidolgoztuk a helyi gépeinken, majd végig végig teszteltük. Később feljegyeztük az összes lépést, amely a gépeinken a végső működő infrastruktúra helyi eléréséhez szükséges. Ez a gyakorlat segített megtalálni azokat a tipikus problémákat, amelyek az infrastruktúra beállítása során felmerültek, és hogyan tudnánk ezeket leküzdeni.

Feljegyeztünk minden olyan mutatót, tanulságot és sajátos módosítást, amelyet a rendszer működése érdekében végrehajtottunk. Több fokozattal növelte az önbizalmamat, és úgy éreztem, készen állok kiterjeszteni alkalmazásunk gyártási környezetét.

Dokumentum, dokumentum és dokumentum !!?

Tudom, tudom. Ez sokat elhangzott. Fejlesztőként eléggé hallotta. Valószínűleg nem szeretne újabb előadást a dokumentáció fontosságáról. Tehát rövid leszek, csak a pontokat kiemelve:

  • A gyártás beállítását bitekre kell dokumentálni. Ügyesnek, bolondbiztosnak és érthetőnek kell lennie.
  • Meg kell adnia az összes rendszerkonfigurációt, IP-címet, rendszer-specifikációt és telepítési utasítást. És mindent, amit elég fontosnak tart, amit Önnek vagy egy fejlesztőtársának tudnia kell.
  • Frissíteni kell, amint bármilyen változás történik a rendszer termelési környezetében.

Embernek lenni meglehetősen gyakori a következő gondolkodásmód szerint: „Ó! Erre emlékszem! Hidd el, nem fogsz . A szoftverfejlesztés történetében még senkinek nincs (oké, lehet, hogy ez egy kicsit túl messzire viszi, de megkapja az ötletet.?)!

Dokumentálja az összes adatot és metaadatot a gyártási beállítások körül. Később magának fog köszönetet mondani. A jövőbeni fejlesztők, akik részt vesznek a projektben, később megköszönik!

Monitorozás és naplózás?

A projekt fejlesztési ideje alatt viszonylag könnyebb kezelni a hibákat és hibákat. Valami nem működik? Lemme csak gyorsan jelentkezzen be a dev boxba és ellenőrizze. Nos, ez nem történik meg a gyártásban. Csak azért nem tud bejelentkezni egy élő rendszerbe, és elkezdhet piszkálni, mert nem érti, honnan származik a probléma.

A megfelelő felügyeleti és naplózási rendszer létrehozása elengedhetetlen az élő rendszer állapotának ellenőrzéséhez. Intelligens felügyeleti rendszerek állnak rendelkezésre a piacon, amelyek hibabejelentéseket, ütemezett állapotfelmérő e-maileket és egyebeket adhatnak Önnek.

Úgy döntöttünk, hogy a Sumologic és a DataDog társaink vagyunk az alkalmazásunk naplózási és felügyeleti rendszerének kikészítésében . Szinte elbűvölő volt, amikor "ssh" nélkül tudtam rájönni a rendszer problémáját.

A felügyeleti rendszer gyönyörű beállítása nagyban hozzájárul ahhoz, hogy erős alapot adjon élő termékének . Ne hagyja ki ezt!

Phew! Nos, ez egy pakolás! Mik a megállapításai? Nyugodtan ossza meg tanulásait, tanácsait vagy mutatóit az alábbi megjegyzésekben!