Ez a cikk néhány gyakori mintát tartalmaz, amelyek segítenek a mérnököknek nagyszabású szolgáltatásokkal dolgozni, amelyekhez több millió felhasználó fér hozzá.
A szerző tapasztalatai szerint ez nem kimerítő lista, de valóban hatékony tanácsot. Szóval, kezdjük.
Az alább felsorolt intézkedések végrehajtása viszonylag egyszerű, de hatásuk nagy. Ha még nem próbálta őket, meg fog lepődni a jelentős fejlesztéseken.
Az infrastruktúra kódként
A tanács első része az infrastruktúra kódként való megvalósítása. Ez azt jelenti, hogy programozott módon kell telepítenie a teljes infrastruktúrát. Bonyolultnak hangzik, de valójában a következő kódról beszélünk:
100 virtuális gép telepítése
Ubuntuval
2 GB RAM mindegyik
a következő kódjuk lesz
ezekkel a paraméterekkel
Nyomon követheti az infrastruktúra változásait, és gyorsan visszatérhet hozzájuk a verziókezelés segítségével.
A bennem élő modernista azt mondja, hogy a Kubernetes/Docker segítségével elvégezheti a fentieket, és igaza van.
Ezenkívül automatizálást biztosíthat a Chef, Puppet vagy Terraform segítségével.
Folyamatos integráció és szállítás
Skálázható szolgáltatás létrehozásához fontos, hogy minden lekérési kérelemhez legyen egy összeállítási és tesztelési folyamat. Még ha a teszt nagyon egyszerű is, legalább biztosítja, hogy a telepített kód le legyen fordítva.
Ebben a szakaszban minden alkalommal válaszol a következő kérdésre: az összeállításom összeállítja és átmegy a teszteken, érvényes? Ez alacsony lécnek tűnhet, de sok problémát megold.
Nincs szebb, mint látni ezeket a kullancsokat
Ehhez a technológiához értékelheti a Githubot, a CircleCI-t vagy a Jenkinst.
Terheléselosztók
Tehát egy terheléselosztót szeretnénk futtatni, hogy átirányítsuk a forgalmat, és biztosítsuk az egyenlő terhelést az összes csomóponton, vagy a szolgáltatás továbbra is meghibásodás esetén:
A terheléselosztó általában jó munkát végez a forgalom elosztásában. A legjobb gyakorlat a túlegyensúlyozás, hogy egyetlen hibapont se legyen.
A terheléselosztók általában az Ön által használt felhőben vannak konfigurálva.
RayID, korrelációs azonosító vagy UUID kérésekhez
Találkozott már olyan alkalmazáshibával, amely ehhez hasonló üzenetet mutat: "Valami elromlott. Mentse el ezt az azonosítót, és küldje el támogatási csapatunknak"?
Az egyedi azonosító, korrelációs azonosító, RayID vagy bármely változat olyan egyedi azonosító, amely lehetővé teszi a kérés nyomon követését annak teljes életciklusa során. Ez lehetővé teszi a teljes kérési útvonal nyomon követését a naplókban.
A felhasználó kérést intéz az A rendszerhez, majd A kapcsolatba lép B-vel, amely kapcsolatba lép C-vel, eltárolja X-ben, majd a kérést visszaküldi A-nak.
Ha távolról csatlakozna a virtuális gépekhez, és megpróbálná nyomon követni a kérés elérési útját (és manuálisan korrelálni a folyamatban lévő hívásokat), megőrülne. Az egyedi azonosító sokkal könnyebbé teszi az életet. Ez az egyik legegyszerűbb dolog, amellyel időt takaríthat meg szolgáltatása bővülésével.
Középszint
Az itteni tanácsok összetettebbek, mint a korábbiak, de a megfelelő eszközök megkönnyítik a feladatot, még a kis- és középvállalkozások számára is megtérülést biztosítva.
Központi naplózás
Gratulálunk! 100 virtuális gépet telepített. Másnap jön a vezérigazgató és panaszkodik a szolgáltatás tesztelése közben kapott hibára. Jelenti a megfelelő azonosítót, amelyről fentebb beszéltünk, de át kell néznie 100 gép naplóit, hogy megtalálja azt, amelyik az összeomlást okozta. És meg kell találni a holnapi bemutató előtt.
Noha ez egy szórakoztató kalandnak tűnik, a legjobb, ha gondoskodik arról, hogy az összes magazinban egy helyen keressen. A naplók központosításának problémáját az ELK verem beépített funkciójával oldottam meg: támogatja a kereshető naplógyűjtést. Ez valóban segít megoldani egy adott folyóirat megtalálásának problémáját. Bónuszként diagramokat és egyéb szórakoztató dolgokat hozhat létre.
ELK verem funkció
Ellenőrző ügynökök
Most, hogy szolgáltatása beindul és fut, gondoskodnia kell a zökkenőmentes működésről. Ennek legjobb módja több futtatása ügynökök, amelyek párhuzamosan működnek, és ellenőrzik a működését és az alapvető műveletek elvégzését.
Ezen a ponton ezt ellenőrizd a futó felépítés jó érzés és jól működik.
Kis- és közepes projektekhez a Postmant ajánlom az API-k figyelésére és dokumentálására. Általában azonban csak arról szeretne gondoskodni, hogy megtudja, ha kimaradás történt, és hogy időben értesüljön.
Automatikus skálázás a terheléstől függően
Ez nagyon egyszerű. Ha van egy virtuálisgép-szolgáltatási kérelme, és közeledik a 80%-os memóriahasználathoz, növelheti az erőforrásait, vagy további virtuális gépeket adhat hozzá a fürthöz. Ezen műveletek automatikus végrehajtása kiválóan alkalmas terhelés alatti rugalmas teljesítményváltozásokra. De mindig ügyeljen arra, hogy mennyi pénzt költ, és ésszerű határokat állítson fel.
A legtöbb felhőszolgáltatásnál több kiszolgáló vagy nagyobb teljesítményű kiszolgálók használatával konfigurálhatja az automatikus skálázást.
Kísérleti rendszer
A frissítések biztonságos bevezetésének jó módja, ha egy órán keresztül tesztelhet valamit a felhasználók 1%-a számára. Természetesen láttál már ilyen mechanizmusokat működés közben. Például a Facebook a közönség egyes részeit más színnel jeleníti meg, vagy módosítja a betűméretet, hogy lássa, hogyan érzékelik a felhasználók a változásokat. Ezt A/B tesztelésnek hívják.
Még egy új funkció kiadása is elindítható kísérletként, majd meghatározható a kiadás módja. Lehetőséget kap arra is, hogy „emlékezzen” vagy módosítsa a konfigurációt menet közben a szolgáltatás romlását okozó funkció alapján.
Emelt szintű
Íme olyan tippek, amelyeket meglehetősen nehéz megvalósítani. Valószínűleg egy kicsivel több erőforrásra lesz szüksége, így egy kis- vagy közepes méretű cég nehezen tudja kezelni ezt.
Kék-zöld bevetések
Ezt nevezem a kibontakozás "Erlang" módjának. Az Erlangot széles körben használták, amikor megjelentek a telefontársaságok. A Softswitcheket kezdték használni a telefonhívások irányítására. Az ezeken a kapcsolókon található szoftverek fő célja az volt, hogy ne szakítsa meg a hívásokat a rendszerfrissítések során. Az Erlang nagyszerű módja annak, hogy új modult töltsön be anélkül, hogy az előző összeomlna.
Ez a lépés a terheléselosztó meglététől függ. Tegyük fel, hogy rendelkezik a szoftver N verziójával, majd telepíteni szeretné az N+1 verziót.
Ön tudnánk csak állítsa le a szolgáltatást, és tegye közzé a következő verziót egy olyan időpontban, amely a felhasználók számára megfelelő, és némi leállást kap. De tegyük fel, hogy van tényleg szigorú SLA feltételek. Tehát az SLA 99,99% azt jelenti, hogy offline módba léphet csak évi 52 perccel.
Ha valóban ilyen mutatókat szeretne elérni, akkor két telepítésre van szüksége egyszerre:
amelyik éppen van (N);
következő verzió (N+1).
Megkéri a terheléselosztót, hogy irányítsa át a forgalom bizonyos százalékát az új verzióra (N+1), miközben Ön aktívan figyeli a regressziókat.
Itt van egy zöld N telepítés, amely jól működik. Megpróbálunk áttérni a telepítés következő verziójára
Először küldünk egy nagyon kis tesztet, hogy megnézzük, működik-e az N+1 telepítésünk kis forgalom mellett:
Végül van egy sor automatizált ellenőrzésünk, amelyet végül futtatunk, amíg a telepítés be nem fejeződik. Ha te nagyon nagyon Vigyázat, az N telepítést örökre elmentheti, hogy rossz regresszió esetén gyorsan visszaállíthassa:
Ha még magasabb szintre szeretne lépni, hagyja, hogy a kék-zöld telepítésben minden automatikusan fusson.
Anomáliák észlelése és automatikus mérséklése
Tekintettel arra, hogy központosított naplózással és jó naplógyűjtéssel rendelkezik, már magasabb célokat is kitűzhet. Például proaktívan előre jelezze a kudarcokat. A funkciókat monitorokon és naplókban követik, és különféle diagramokat építenek fel – és előre megjósolhatja, hogy mi fog elromlani:
Az anomáliák észlelése után elkezdi megvizsgálni a szolgáltatás által nyújtott nyomokat. Például a CPU-terhelés megugrása azt jelezheti, hogy a merevlemez meghibásodik, míg a kérések megugrása azt jelezheti, hogy növelni kell a méretet. Az ilyen jellegű statisztikai adatok lehetővé teszik a szolgáltatás proaktívvá tételét.
Ezekkel a betekintésekkel bármilyen dimenzióban méretezhet, és proaktívan és reaktívan módosíthatja a gépek, adatbázisok, kapcsolatok és egyéb erőforrások jellemzőit.
Ez minden!
Ez a prioritáslista sok problémától kíméli meg Önt, ha felhőszolgáltatást hoz létre.
Az eredeti cikk szerzője arra kéri az olvasókat, hogy írják meg észrevételeiket és hajtsák végre a változtatásokat. A cikket nyílt forráskódúként terjesztik, a szerző kéri elfogadja a Githubon.