Bármilyen méretezhető elosztott platform futtatása megköveteli a megbízhatóság iránti elkötelezettséget, hogy az ügyfelek akkor kapják meg, amire szükségük van. A függőségek meglehetősen bonyolultak lehetnek, különösen egy akkora platformnál, mint a Roblox. A megbízható szolgáltatások kiépítése azt jelenti, hogy a függőségek összetettségétől és állapotától függetlenül egyetlen szolgáltatás sem szakad meg (pl. elérhető), hibamentesen fog működni (azaz magas világítás) és hibamentesen (pl hibatűrés).
Miért számít a megbízhatóság?
Account Identity csapatunk elkötelezett a nagyobb megbízhatóság elérése mellett, mivel az általunk kiépített megfelelőségi szolgáltatások a platform alapvető összetevői. A meg nem felelés súlyos következményekkel járhat. A Roblox természetes működésének blokkolásának költsége nagyon magas, és további erőforrásokra van szükség a hiba és a felhasználói élmény meggyengülése utáni helyreállításhoz.
A megbízhatóság tipikus megközelítése elsősorban a rendelkezésre állásra összpontosít, de egyes esetekben a kifejezések keverednek és helytelenül használják őket. A legtöbb rendelkezésre állás mérése csak azt méri fel, hogy a szolgáltatások működnek-e, miközben az olyan szempontokat, mint a partíciótűrés és a konzisztencia, néha elfelejtik vagy félreértik.
A CAP-tételnek megfelelően bármely elosztott rendszer ebből a három szempontból csak kettőt tud garantálni, így megfelelőségi szolgáltatásaink feláldoznak bizonyos konzisztenciát a magas rendelkezésre állás és a partíciótűrés érdekében. Ennek ellenére szolgáltatásaink keveset áldoztak, és olyan mechanizmusokat találtak, amelyekkel jó összhangot érhetünk el az alább ismertetett ésszerű építészeti változtatásokkal.
A nagyobb megbízhatóság elérésének folyamata iteratív, szoros mérési egyeztetéssel, folyamatos munkával a hibák megelőzése, felkutatása, észlelése és kijavítása érdekében, mielőtt az incidensek bekövetkeznének. Csapatunk a következő gyakorlatokban azonosított erős értéket:
- Helyes mérés – Építsünk teljes megfigyelhetőséget afelé, hogy a minőséget hogyan biztosítják az ügyfeleknek, és hogyan biztosítanak minőséget számunkra a függőségek.
- Proaktív várakozás – Olyan tevékenységek végrehajtása, mint az építészeti áttekintés és a függőségi kockázatok felmérése.
- A korrekció prioritása – Fordítson nagyobb figyelmet a szolgáltatás incidensjelentéseinek megoldására és a szolgáltatásunkhoz kapcsolódó függőségekre.
A nagyobb megbízhatóság kialakításához minőségi kultúra szükséges. Csapatunk már korábban is fektetett a teljesítményközpontú fejlesztésbe, és tudja, hogy egy folyamat sikere annak elfogadásán múlik. A csapat teljes mértékben átvette ezt a folyamatot, és szabványként alkalmazta a gyakorlatokat. Az alábbi diagram a folyamat összetevőit mutatja be:
A helyes mérés ereje
Mielőtt mélyebben belemerülne a mérőszámokba, gyorsan tisztázni kell a szolgáltatási szint méréseit.
- Az SLO (Service Level Objective) az a megbízhatósági cél, amelyre csapatunk törekszik (azaz 99.999%).
- Az SLI (Service Level Indicator) az elért megbízhatóság adott időkerethez (azaz tavaly februárban 99.975%).
- Az SLA (Service Level Agreement – szolgáltatási szint megállapodás) az a megbízhatóság, amelyet fogyasztóink egy adott időkereten belül teljesítenek és elvárnak (vagyis heti 99.99%).
Az SLI-nek tükröznie kell a rendelkezésre állást (nincs kezeletlen vagy hiányzó válasz), a hibatűrést (nincs szolgáltatási hiba) és az elért minőséget (nincs váratlan hiba). Ezért az SLI-nket a sikeres válaszok „sikerességi arányaként” határoztuk meg a szolgáltatásnak küldött összes kéréshez viszonyítva. Sikeres válaszok azok a kérések, amelyeket időben és formában küldtek el, azaz nem kapcsolat, szolgáltatás vagy váratlan hiba történt.
Ezt az SLI-t vagy sikerarányt a fogyasztók (azaz az ügyfelek) szemszögéből gyűjtik össze. A cél az, hogy mérjük a fogyasztóink számára nyújtott tényleges, teljes körű élményt, hogy biztosak legyünk abban, hogy teljesülnek az SLA-k. Ennek elmulasztása a megbízhatóság hamis érzetét keltené, amely figyelmen kívül hagyja az ügyfeleinkkel való kapcsolattartás minden infrastrukturális aggályát. A fogyasztói SLI-hez hasonlóan a függőségi SLI-t gyűjtjük, hogy nyomon követhessük a lehetséges kockázatokat. A gyakorlatban minden függőségi SLA-nak igazodnia kell a szolgáltatási SLA-hoz, és közvetlen függőség áll fenn velük. Az egyik kudarca mindenki kudarcát jelenti. Magából a szolgáltatásból (azaz a szerverből) is nyomon követjük és jelentjük a mérőszámokat, de ez nem a nagy megbízhatóság gyakorlati forrása.
Az SLI-k mellett minden build minőségi mutatókat gyűjt, amelyeket a CI-munkafolyamat jelent. Ez a gyakorlat segít a minőségi kapuk (azaz a kódlefedettség) erőteljes érvényesítésében, és más értelmes mérőszámok jelentésében, mint például a kódolási szabványnak való megfelelés és a statikus kódelemzés. Ezzel a témával korábban egy másik cikk foglalkozott, Teljesítmény által vezérelt mikroszolgáltatások kiépítése. A minőség szorgalmas betartása hozzáadódik, ha megbízhatóságról beszélünk, mert minél többet fektetünk be a kiváló pontszámok elérése érdekében, annál biztosabbak vagyunk abban, hogy a rendszer nem fog meghibásodni kedvezőtlen körülmények között.
Csapatunk két műszerfallal rendelkezik. Az egyik biztosítja a teljes láthatóságot mind a Consumers SLI, mind a Dependencies SLI számára. A második az összes minőségi mutatót mutatja. Dolgozunk azon, hogy mindent egyetlen irányítópultba egyesítsünk, hogy minden számunkra fontos szempont konszolidálva legyen, és készen álljon a jelentésre bármely adott időkereten belül.
Előre kudarc
Doing Építészeti vélemények a megbízhatóság alapvető része. Először is meghatározzuk, hogy van-e redundancia, és hogy a szolgáltatásnak megvannak-e az eszközei a túléléshez, ha a függőségek csökkennek. A tipikus replikációs ötleteken túl a legtöbb szolgáltatásunk továbbfejlesztett kettős gyorsítótár-hidratálási technikákat, kettős helyreállítási stratégiákat (például feladatátvételi helyi sorok) vagy adatvesztési stratégiákat (például tranzakciós támogatás) alkalmazott. Ezek a témák elég kiterjedtek ahhoz, hogy indokoljanak egy újabb blogbejegyzést, de végső soron a legjobb ajánlás az, hogy olyan ötleteket valósítson meg, amelyek figyelembe veszik a katasztrófaforgatókönyveket, és minimalizálják a teljesítménybüntetést.
Egy másik fontos szempont, amire számítani kell, minden, ami javíthatja a kapcsolatot. Ez azt jelenti, hogy agresszívnek kell lenni az ügyfelek alacsony késleltetése miatt, és fel kell készíteni őket a nagyon nagy forgalomra gyorsítótár-vezérlési technikák, oldalkocsik és az időtúllépések, az áramkör megszakítók és az újrapróbálkozások végrehajtására vonatkozó házirendek használatával. Ezek a gyakorlatok minden kliensre érvényesek, beleértve a gyorsítótárakat, tárolókat, sorokat és a HTTP és a gRPC egymástól függő klienseit. Ez azt is jelenti, hogy javítani kell a szolgáltatások egészséges jelzéseit, és megérteni, hogy az egészségügyi ellenőrzések fontos szerepet játszanak minden konténer hangszerelésében. A legtöbb szolgáltatásunk jobb jelzéseket ad az állapotromlásról az állapotfelmérés visszajelzésének részeként, és az egészséges jelzések küldése előtt ellenőrzi az összes kritikus összetevő működését.
A szolgáltatások kritikus és nem kritikus részekre bontása hasznosnak bizonyult, ha a legfontosabb funkciókra összpontosít. Korábban csak adminisztrátori végpontjaink voltak ugyanabban a szolgáltatásban, és bár nem használták őket gyakran, befolyásolták az általános késleltetési mutatókat. A saját szolgáltatásukra való áthelyezésük minden mutatót pozitív irányba hatott.
Függőségi kockázatértékelés fontos eszköz a függőségekkel kapcsolatos lehetséges problémák azonosítására. Ez azt jelenti, hogy azonosítjuk az alacsony SLI-vel rendelkező függőségeket, és SLA-igazítást kérünk. Ezekre a függőségekre különös figyelmet kell fordítani az integrációs lépések során, ezért több időt fordítunk arra, hogy megvizsgáljuk és teszteljük, hogy az új függőségek elég érettek-e a terveinkhez. Jó példa erre a Roblox Storage-as-a-Service korai bevezetése. A szolgáltatással való integrációhoz hibajegyek bejelentésére és rendszeres szinkronizálási értekezletekre volt szükség a megállapítások és a visszajelzések közléséhez. Mindez a munka a „reliability” címkét használja, így gyorsan azonosítani tudjuk a forrását és a prioritásait. A jellemzés gyakran megtörtént, mígnem megbizonyosodtunk arról, hogy az új függőség készen áll ránk. Ez a többletmunka hozzájárult ahhoz, hogy a függőséget a szükséges megbízhatósági szintre emeljük, amelyet a közös cél érdekében való közös cselekvéstől elvárunk.
Hozd el a szerkezetet a káoszba
Soha nem kívánatos, hogy incidensek legyenek. De amikor megtörténik, van értelmes információkat gyűjteni, és tanulni belőlük, hogy megbízhatóbbak legyünk. Csapatunknak van egy csapatesemény-jelentése, amely a tipikus vállalati szintű jelentésen túlmenően készül, ezért minden incidensre összpontosítunk, függetlenül azok hatásának mértékétől. Felhívjuk a kiváltó okot, és a jövőben minden olyan munkát prioritásként kezelünk, amely ennek enyhítésére irányul. A jelentés részeként más csapatokat hívunk fel, hogy kiemelten kezeljék a függőségi incidenseket, kövessék a megfelelő megoldást, tekintsenek vissza, és keressenek olyan mintákat, amelyek vonatkozhatnak ránk.
A csapat előállítja a Havi megbízhatósági jelentés szolgáltatásonként amely magában foglalja az itt ismertetett összes SLI-t, a megbízhatóság miatt megnyitott jegyeket és a szolgáltatással kapcsolatos esetleges incidenseket. Annyira megszoktuk ezeket a jelentéseket, hogy a következő természetes lépés a kinyerésük automatizálása. Ennek az időszakos tevékenységnek az elvégzése fontos, és emlékeztet arra, hogy a megbízhatóságot folyamatosan nyomon követjük és figyelembe veszik fejlesztésünk során.
Műszereink egyedi mérőszámokat és továbbfejlesztett riasztásokat tartalmaznak, hogy a lehető leghamarabb tájékozódjunk, ha ismert és várható problémák merülnek fel. Minden riasztást, beleértve a hamis pozitívakat is, minden héten felülvizsgálják. Ezen a ponton fontos az összes dokumentáció csiszolása, hogy fogyasztóink tudják, mire számíthatnak a riasztások kiváltásakor és a hibák előfordulásakor, majd mindenki tudja, mit kell tennie (pl. a játékfüzeteket és az integrációs irányelveket gyakran összehangolják és frissítik).
Végül, a minőség átvétele kultúránkban a legkritikusabb és legdöntőbb tényező a magasabb megbízhatóság elérésében. Megfigyelhetjük, hogy ezek a mindennapi munkánkban alkalmazott gyakorlatok már most kifizetődőek. Csapatunk a megbízhatóság megszállottja, és ez a legfontosabb eredményünk. Fokozottan tisztában vagyunk azzal, hogy a lehetséges hibák milyen hatással lehetnek, és mikor léphetnek fel. Az ezeket a gyakorlatokat megvalósító szolgáltatások következetesen elérték SLO-kat és SLA-ikat. A megbízhatósági jelentések, amelyek segítenek nyomon követni az általunk végzett összes munkát, tanúskodnak csapatunk munkájáról, és felbecsülhetetlen értékű tanulságként szolgálnak a többi csapat tájékoztatásához és befolyásolásához. A megbízhatósági kultúra így érinti platformunk minden összetevőjét.
A nagyobb megbízhatóság felé vezető út nem könnyű, de szükség van rá, ha olyan megbízható platformot akarunk építeni, amely újragondolja, hogyan találkoznak az emberek.
Alberto a Roblox fiókazonosító csapatának vezető szoftvermérnöke. Régóta dolgozik a játékiparban, számos AAA játékban és közösségi média platformon szerzett krediteket, nagy hangsúlyt fektetve a rendkívül méretezhető architektúrákra. Most a legjobb fejlesztési gyakorlatok alkalmazásával segíti a Robloxot a növekedés és az érettség elérésében.
A poszt Nagyléptékű platformmegbízhatóság biztosítása jelent meg először Roblox blog.
- "
- a
- Rólunk
- Fiók
- Elérése
- elért
- tevékenységek
- tevékenység
- mellett
- További
- Örökbefogadás
- kedvezőtlen
- Megállapodás
- Minden termék
- már
- elemzés
- Másik
- számít
- alkalmazott
- alkalmaz
- Alkalmazása
- megközelítés
- építészeti
- körül
- cikkben
- társult
- figyelem
- automatizált
- elérhetőség
- elérhető
- tudatosság
- mert
- előtt
- hogy
- lent
- benchmark
- BEST
- Túl
- Blog
- hoz
- Bogár
- épít
- hívás
- ami
- esetek
- Okoz
- Ellenőrzések
- ügyfél részére
- kód
- Kódolás
- gyűjt
- hogyan
- elkövetni
- elkötelezettség
- elkötelezett
- Közös
- kommunikálni
- képest
- teljesítés
- alkatrészek
- Körülmények
- bizalom
- magabiztos
- Csatlakozás
- Connectivity
- Fontolja
- állandóan
- fogyasztó
- Fogyasztók
- Konténer
- Mag
- tudott
- teremt
- készítette
- Credits
- kritikai
- kultúra
- szokás
- Ügyfelek
- műszerfal
- dátum
- mélyebb
- szállított
- átadó
- szállít
- igények
- függ
- Határozzuk meg
- Fejlesztés
- közvetlen
- katasztrófa
- megosztott
- le-
- hajtott
- alatt
- Korai
- végtől végig
- mérnök
- különösen
- mindenki
- minden
- példa
- kiváló
- vár
- várható
- tapasztalat
- kiterjedt
- Kudarc
- Visszacsatolás
- vezetéknév
- Rögzít
- Összpontosít
- koncentrál
- összpontosítás
- következik
- következő
- forma
- talált
- ból ből
- Tele
- funkcionális
- funkcionalitás
- alapvető
- jövő
- játék
- Gates
- generáló
- cél
- jó
- Növekedés
- garancia
- irányelvek
- történik
- történt
- Egészség
- segít
- segít
- segít
- itt
- Magas
- <p></p>
- kiemeli
- nagyon
- Hogyan
- HTTPS
- ötletek
- azonosítani
- Identitás
- Hatás
- végre
- végre
- fontos
- javul
- javított
- javuló
- Más
- magában foglalja a
- Beleértve
- <p></p>
- ipar
- befolyás
- információ
- Infrastruktúra
- integráció
- Szándék
- befektetés
- IT
- maga
- Ismer
- ismert
- TANUL
- szint
- kis
- helyi
- Hosszú
- néz
- csinál
- egyező
- számít
- érett
- érettség
- jelenti
- jelentőségteljes
- eszközök
- intézkedés
- Média
- találkozók
- Metrics
- vegyes
- több
- a legtöbb
- mozgó
- Természetes
- elengedhetetlen
- Mindazonáltal
- működik
- működés
- hangszerelés
- érdekében
- Más
- átfogó
- saját
- rész
- Emberek (People)
- teljesítmény
- darabok
- tervek
- emelvény
- Platformok
- játszani
- pont
- Nézőpont
- Politikák
- pozitív
- lehetséges
- potenciális
- hatalom
- gyakorlat
- be
- Fő
- prioritás
- problémák
- folyamat
- világítás
- Quick
- gyorsan
- el
- ésszerű
- Meggyógyul
- felépülés
- tükröznie
- tekintettel
- megbízható
- jelentést
- Jelentések
- kéri
- kötelező
- Tudástár
- Vélemények
- Kockázat
- út
- roblox
- Szerep
- gyökér
- futás
- azonos
- skálázható
- Skála
- értelemben
- szolgáltatás
- Szolgáltatások
- hasonló
- óta
- egyetlen
- So
- Közösség
- Közösségi média
- szociális média platformok
- szoftver
- Software Engineer
- néhány
- speciális
- állvány
- standard
- Állapot
- árnyékolók
- stratégiák
- erős
- siker
- sikeres
- támogatás
- rendszer
- beszéd
- csapat
- technikák
- feltételek
- teszt
- A
- ebből adódóan
- három
- jegyek
- idő
- időkeret
- együtt
- tolerancia
- szerszám
- téma
- Témakörök
- vágány
- forgalom
- megértés
- us
- érték
- ellenőrzése
- Megnézem
- láthatóság
- hét
- Mit
- vajon
- míg
- nélkül
- Munka
- dolgozó
- lenne