Kaip gerai išsimiegoti, kai naudojate debesies paslaugą: pagrindiniai architektūros patarimai

Kaip gerai išsimiegoti, kai naudojate debesies paslaugą: pagrindiniai architektūros patarimaiPRAŠYTO sophiagworld

Šiame straipsnyje pateikiami keli įprasti modeliai, padedantys inžinieriams dirbti su didelės apimties paslaugomis, kurias pasiekia milijonai vartotojų. 

Autoriaus patirtis rodo, kad tai nėra baigtinis sąrašas, bet iš tikrųjų veiksmingas patarimas. Taigi, pradėkime.

Išversta su parama Mail.ru debesų sprendimai.

Pradinis lygis

Toliau išvardytos priemonės yra gana paprastos įgyvendinti, tačiau turi didelį poveikį. Jei dar nebandėte jų, būsite nustebinti dėl reikšmingų patobulinimų.

Infrastruktūra kaip kodas

Pirmoji patarimo dalis – infrastruktūrą įdiegti kaip kodą. Tai reiškia, kad turite turėti programinį būdą įdiegti visą infrastruktūrą. Tai skamba sudėtingai, bet iš tikrųjų kalbame apie šį kodą:

100 virtualių mašinų diegimas

  • su Ubuntu
  • Kiekviename po 2 GB RAM
  • jie turės tokį kodą
  • su šiais parametrais

Galite stebėti savo infrastruktūros pakeitimus ir greitai prie jų grįžti naudodami versijos valdymą.

Manyje esantis modernistas sako, kad galite naudoti „Kubernetes“ / „Docker“, kad atliktumėte visus aukščiau nurodytus veiksmus, ir jis teisus.

Be to, galite užtikrinti automatizavimą naudodami „Chef“, „Puppet“ ar „Terraform“.

Nuolatinis integravimas ir pristatymas

Norint sukurti keičiamo dydžio paslaugą, svarbu turėti kiekvienos ištraukimo užklausos kūrimo ir bandymo dujotiekį. Net jei testas yra labai paprastas, jis bent jau užtikrins, kad jūsų įdiegtas kodas bus sukompiliuotas.

Kiekvieną kartą šiame etape jūs atsakote į klausimą: ar mano asamblėja surinks ir išlaikys testus, ar tai galioja? Tai gali atrodyti kaip žema juosta, tačiau ji išsprendžia daugybę problemų.

Kaip gerai išsimiegoti, kai naudojate debesies paslaugą: pagrindiniai architektūros patarimai
Nėra nieko gražiau, kaip matyti šias erkes

Dėl šios technologijos galite įvertinti Github, CircleCI arba Jenkins.

Apkrovos balansuotojai

Taigi, norime paleisti apkrovos balansavimo priemonę, kad nukreiptume srautą ir užtikrintume vienodą visų mazgų apkrovą arba paslauga tęstųsi gedimo atveju:

Kaip gerai išsimiegoti, kai naudojate debesies paslaugą: pagrindiniai architektūros patarimai
Apkrovos balansavimo priemonė paprastai gerai paskirsto srautą. Geriausia praktika yra perbalansuoti, kad neturėtumėte nė vieno gedimo taško.

Paprastai apkrovos balansavimo įrenginiai sukonfigūruojami jūsų naudojamame debesyje.

RayID, koreliacijos ID arba UUID užklausoms

Ar kada nors susidūrėte su programos klaida su tokiu pranešimu: „Kažkas ne taip. Išsaugokite šį ID ir nusiųskite jį mūsų palaikymo komandai"?

Kaip gerai išsimiegoti, kai naudojate debesies paslaugą: pagrindiniai architektūros patarimai
Unikalus identifikatorius, koreliacijos ID, RayID arba bet kuris iš variantų yra unikalus identifikatorius, leidžiantis stebėti užklausą per visą jos gyvavimo ciklą. Tai leidžia žurnaluose sekti visą užklausos kelią.

Kaip gerai išsimiegoti, kai naudojate debesies paslaugą: pagrindiniai architektūros patarimai
Vartotojas pateikia užklausą sistemai A, tada A susisiekia su B, kuri susisiekia su C, išsaugo ją X, o tada užklausa grąžinama A

Jei nuotoliniu būdu prisijungtumėte prie virtualių mašinų ir bandytumėte atsekti užklausos kelią (ir rankiniu būdu susieti, kurie skambučiai atliekami), išprotėtumėte. Turint unikalų identifikatorių, gyvenimas tampa daug lengvesnis. Tai vienas iš paprasčiausių dalykų, kuriuos galite padaryti, kad sutaupytumėte laiko augant jūsų paslaugai.

Vidutinis lygis

Čia pateikti patarimai yra sudėtingesni nei ankstesni, tačiau tinkami įrankiai palengvina užduotį, o investicijos atsiperka net ir mažoms ir vidutinėms įmonėms.

Centralizuotas kirtimas

Sveikiname! Įdiegėte 100 virtualių mašinų. Kitą dieną ateina generalinis direktorius ir skundžiasi klaida, kurią gavo bandydamas paslaugą. Jame pateikiamas atitinkamas ID, apie kurį kalbėjome aukščiau, tačiau turėsite peržiūrėti 100 mašinų žurnalus, kad surastumėte tą, dėl kurio įvyko avarija. Ir jį reikia surasti iki rytojaus pristatymo.

Nors tai skamba kaip smagus nuotykis, geriausia įsitikinti, kad turite galimybę ieškoti visų žurnalų vienoje vietoje. Žurnalų centralizavimo problemą išsprendžiau naudodamas integruotą ELK kamino funkcionalumą: jis palaiko paieškos žurnalų rinkimą. Tai tikrai padės išspręsti konkretaus žurnalo paieškos problemą. Kaip premiją galite kurti diagramas ir kitus įdomius dalykus.

Kaip gerai išsimiegoti, kai naudojate debesies paslaugą: pagrindiniai architektūros patarimai
ELK kamino funkcionalumas

Stebėjimo agentai

Dabar, kai jūsų paslauga veikia, turite užtikrinti, kad ji veiktų sklandžiai. Geriausias būdas tai padaryti – paleisti kelis agentai, kurios veikia lygiagrečiai ir tikrina, ar veikia bei atliekamos pagrindinės operacijos.

Šiuo metu jūs tai patikrinate bėgimo konstrukcija jaučiasi gerai ir veikia gerai.

Mažiems ir vidutinio dydžio projektams API stebėjimui ir dokumentavimui rekomenduoju „Postman“. Tačiau apskritai jūs tiesiog norite įsitikinti, kad turite būdą sužinoti, kada įvyko gedimas, ir būti laiku informuotas.

Automatinis mastelio keitimas priklausomai nuo apkrovos

Tai labai paprasta. Jei turite VM aptarnavimo užklausų ir ji artėja prie 80 % atminties naudojimo, galite padidinti jos išteklius arba pridėti daugiau VM į klasterį. Automatinis šių operacijų vykdymas puikiai tinka elastingiems galios pokyčiams esant apkrovai. Tačiau visada turėtumėte būti atsargūs, kiek pinigų išleidžiate, ir nustatyti protingas ribas.

Kaip gerai išsimiegoti, kai naudojate debesies paslaugą: pagrindiniai architektūros patarimai
Naudodami daugumą debesies paslaugų galite sukonfigūruoti, kad ji būtų automatiškai keičiama naudojant daugiau arba galingesnių serverių.

Eksperimentų sistema

Geras būdas saugiai įdiegti naujinimus – valandą išbandyti ką nors 1 % vartotojų. Jūs, žinoma, matėte tokius mechanizmus veikiančius. Pavyzdžiui, „Facebook“ daliai auditorijos rodo kitą spalvą arba keičia šrifto dydį, kad pamatytų, kaip vartotojai suvokia pokyčius. Tai vadinama A/B testavimu.

Netgi naujos funkcijos išleidimas gali būti pradėtas kaip eksperimentas ir tada nustatoma, kaip ją išleisti. Taip pat galite „atsiminti“ arba pakeisti konfigūraciją, atsižvelgdami į funkciją, dėl kurios blogėja jūsų paslauga.

Išplėstinė lygis

Štai patarimai, kuriuos gana sunku įgyvendinti. Tikriausiai jums reikės šiek tiek daugiau išteklių, todėl mažai ar vidutinei įmonei bus sunku su tuo susitvarkyti.

Mėlynai žalios dislokacijos

Tai aš vadinu „Erlang“ atsiskleidimo būdu. Erlang tapo plačiai naudojamas, kai atsirado telefono ryšio bendrovės. „Softswitches“ buvo pradėti naudoti telefono skambučiams nukreipti. Pagrindinis šių jungiklių programinės įrangos tikslas buvo nenutraukti skambučių atnaujinant sistemą. Erlang turi puikų būdą įkelti naują modulį nesugriuvus ankstesnio.

Šis žingsnis priklauso nuo apkrovos balansavimo priemonės buvimo. Įsivaizduokime, kad turite N savo programinės įrangos versiją, o tada norite įdiegti versiją N+1. 

Jums mes galėtume tiesiog sustabdykite paslaugą ir išleiskite kitą versiją tuo metu, kuri tinka jūsų naudotojams, ir sulauksite prastovos. Bet tarkime, kad turite tikrai griežtos SLA sąlygos. Taigi, SLA 99,99% reiškia, kad galite būti neprisijungę tik 52 minutes per metus.

Jei tikrai norite pasiekti tokius rodiklius, jums reikia dviejų diegimų vienu metu: 

  • tas, kuris yra dabar (N);
  • kita versija (N+1). 

Jūs nurodote apkrovos balansavimo įrankiui nukreipti srauto procentą į naują versiją (N+1), kol aktyviai stebite regresijas.

Kaip gerai išsimiegoti, kai naudojate debesies paslaugą: pagrindiniai architektūros patarimai
Čia turime žalią N diegimą, kuris veikia gerai. Bandome pereiti prie kitos šio diegimo versijos

Pirmiausia išsiunčiame tikrai nedidelį testą, kad pamatytume, ar mūsų N+1 diegimas veikia esant nedideliam srautui:

Kaip gerai išsimiegoti, kai naudojate debesies paslaugą: pagrindiniai architektūros patarimai
Galiausiai turime automatinių patikrinimų rinkinį, kurį galiausiai vykdome, kol bus baigtas diegimas. Jei tu labai labai Atsargiai, taip pat galite visam laikui išsaugoti savo N diegimą, kad blogos regresijos atveju būtų greitai atšauktas:

Kaip gerai išsimiegoti, kai naudojate debesies paslaugą: pagrindiniai architektūros patarimai
Jei norite pereiti į dar aukštesnį lygį, leiskite viskam, kas yra mėlynai žaliai, veikti automatiškai.

Anomalijų aptikimas ir automatinis mažinimas

Atsižvelgiant į tai, kad turite centralizuotą medienos ruošą ir gerą žurnalų rinkimą, jau galite išsikelti aukštesnius tikslus. Pavyzdžiui, aktyviai numatyti nesėkmes. Funkcijos stebimos monitoriuose ir žurnaluose bei sudaromos įvairios diagramos – ir galite iš anksto nuspėti, kas nutiks:

Kaip gerai išsimiegoti, kai naudojate debesies paslaugą: pagrindiniai architektūros patarimai
Aptikę nukrypimų, pradedate tirti kai kuriuos paslaugos teikiamus įkalčius. Pavyzdžiui, procesoriaus apkrovos padidėjimas gali reikšti, kad standusis diskas sugenda, o užklausų padidėjimas gali reikšti, kad reikia padidinti mastelį. Tokie statistiniai duomenys leidžia padaryti paslaugą aktyvią.

Naudodamiesi šiomis įžvalgomis, galite išplėsti bet kokį matmenį ir aktyviai bei reaktyviai keisti mašinų, duomenų bazių, ryšių ir kitų išteklių charakteristikas.

Tai viskas!

Šis prioritetų sąrašas sutaupys daug problemų, jei kursite debesies paslaugą.

Originalaus straipsnio autorius kviečia skaitytojus palikti savo pastabas ir keisti. Straipsnis platinamas kaip atviro kodo, ištraukite autoriaus užklausas priima „Github“..

Ką dar skaityti šia tema:

  1. Eik ir CPU talpyklos
  2. Kubernetes piratavimo dvasia su įgyvendinimo šablonu
  3. Mūsų kanalas „Around Kubernetes“ telegramoje

Šaltinis: www.habr.com

Добавить комментарий