Kuidas rahulikult magada, kui teil on pilveteenus: pÔhialused arhitektuuri nÔuanded

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhialused arhitektuuri nÔuandedLOST by sophiagworld

Selles artiklis on kokku kogutud mĂ”ned ĂŒldised mallid, mis aitavad inseneridel töötada suurte teenustega, millele esitatakse pĂ€ringuid miljonite kasutajate poolt. 

Autori kogemuse pÔhjal ei ole see ammendav nimekiri, kuid tÔeliselt efektiivsed nÔuanded. Alustame.

TÔlgitud toetusel Mail.ru Cloud Solutions.

Algtaseme

Allpool loetletud meetmed on suhteliselt lihtsad rakendada, kuid toovad kĂ”rget tootlust. Kui te pole neid varem rakendanud, siis vĂ”ite olla ĂŒllatunud mĂ€rgatavate parendustega.

Infrastruktuur kui kood

Esimene nÔuannete osa on juurutada infrastruktuur koodina. See tÀhendab, et teil peab olema programmeerimismeetod kogu infrastruktuuri juurutamiseks. See kÔlab keerukana, kuid tegelikult rÀÀgime jÀrgnevast koodist:

100 virtuaalmasina juurutamine

  • Ubuntu
  • igaĂŒhel 2 GB RAM-i
  • neil on jĂ€rgmine kood
  • selliste parameetritega

Saate jĂ€lgida muudatusi infrastruktuuris ja kiiresti neile tagasi pöörduda versioonihalduse sĂŒsteemi abil.

Minu modernist ĂŒtleb, et Kubernetes/Docker'i kasutamine muudab kogu eelneva teostatavaks, ja ta on Ă”ige.

Lisaks vÔib automatiseerimist teostada Chef, Puppet vÔi Terraform abil.

JĂ€tkuv integreerimine ja kohaletoimetamine

Skaalitava teenuse loomiseks on oluline, et iga pull-requesti jaoks oleks olemas kokkupaneku ja testimise torujuhe. Isegi kÔige lihtsam test tagab vÀhemalt, et teie juurutatav kood kompileerub.

Igal sellel etapil vastate kĂŒsimusele: kas minu koostamine kompileerub ja lĂ€bib testid, kas see on valideeritud? See vĂ”ib tunduda madala lati seadmisena, kuid lahendab palju probleeme.

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhialused arhitektuuri nÔuanded
Pole midagi paremat, kui nÀha neid roheline maakreid

Selle tehnoloogia jaoks vÔite kaaluda Githubi, CircleCI-d vÔi Jenkinsit.

Koormuste tasakaalustajad

Nii soovime kĂ€ivitada koormuste tasakaalustaja, et suunata liiklust ja tagada ĂŒhtlane koormus kĂ”igil sĂ”lmedel vĂ”i teenuse töö katkestamise korral:

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhialused arhitektuuri nÔuanded
Koormuste tasakaalustaja aitab tavaliselt hĂ€sti liiklust jagada. Parim praktika on redundantne tasakaalustamine, et teil ei oleks ĂŒhtainust rikke punkti.

Tavaliselt seatakse koormuste tasakaalustajad teie kasutatavasse pilve.

RayID, korrelatsioon ID vÔi UUID pÀringute jaoks

Kas olete kunagi kokku puutunud rakenduse veaga, mille sĂ”num nĂ€eb vĂ€lja selline: „Midagi lĂ€ks valesti. Salvestage see id ja saatke see meie tugiteenusele“?

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhialused arhitektuuri nÔuanded
Ainulaadne identifikaator, korrelatsiooni ID, RayID vĂ”i mĂ”ni muu variant on ainulaadne identifikaator, mis vĂ”imaldab jĂ€lgida pĂ€ringut selle elutsĂŒkli ajal. See vĂ”imaldab jĂ€lgida kogu pĂ€ringu teekonda logides.

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhialused arhitektuuri nÔuanded
Kasutaja teeb pĂ€ringu sĂŒsteemile A, seejĂ€rel A ĂŒhendub B-ga, B ĂŒhendub C-ga, salvestab X-s ja seejĂ€rel tagastatakse pĂ€ring A-le.

Kui prooviksite kaugĂŒhendust virtuaalmasinatega ja jĂ€lgiksite pĂ€ringu teekonda (ning kĂ€sitsi seostaksite, milliseid kutsungeid tehakse), lĂ€heksite hulluks. Ainulaadse identifikaatori olemasolu muudab elu palju lihtsamaks. See on ĂŒks lihtsamaid asju, mida saab teha, et aega sÀÀsta teenuse kasvades.

Keskmine tase

Siin on nĂ”uanded keerulisemad kui eelnevad, kuid Ă”iged tööriistad muudavad ĂŒlesande lihtsamaks, andes investeeringu tasuvuse isegi vĂ€ikeste ja keskmise suurusega ettevĂ”tete jaoks.

Tsentraliseeritud logimine

Palju Ă”nne! Olete kĂ€ivitanud 100 virtuaalmasinat. JĂ€rgmisel pĂ€eval tuleb tegevjuht ja kurdab veast, mille ta sai teenuse testimise ajal. Ta ĂŒtleb vastava identifikaatori, millest me varem rÀÀkisime, kuid peate sirvima 100 masina logisid, et leida see, mis ebaĂ”nnestus. Ja seda tuleb leida enne homset esitlust.

Kuigi see kĂ”lab nagu lĂ”bus seiklus, on parem veenduda, et teil on vĂ”imalus otsida kĂ”igist logidest ĂŒhest kohast. Probleemi lahendamiseks otsustasin keskendada logide haldamisele ELK-kogumi sisseehitatud funktsionaalsuse kaudu: siin toetatakse logide kogumist ja otsimist. See aitab tĂ”eliselt konkreetse logi leidmise probleemiga. Boonusena saate luua diagramme ja muid selliseid toredaid asju.

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhialused arhitektuuri nÔuanded
ELK kogumi funktsionaalsus

Monitooringu agendid

NĂŒĂŒd, kui teie teenus on tööle pandud, on oluline veenduda, et see töötab tĂ”rgeteta. Parim viis selle tagamiseks on kĂ€ivitada mĂ”ned agendid, mis töötavad samaaegselt ja kontrollivad, et see töötab ja et pĂ”hitegevused on tehtud.

Selles etapis kontrollite, et kÀivitatud versioon toimib hÀsti ja töötab normaalsete.

VĂ€ikeste ja keskmiste projektide puhul soovitan API-de jĂ€lgimiseks ja dokumenteerimiseks Postmani. Üldiselt tuleks siiski veenduda, et teil on vĂ”imalus teada saada, kui midagi lĂ€heb valesti, ja saada Ă”igeaegne teade.

Koormuse jÀrgi automaatne skaleerimine

See on vÀga lihtne. Kui teil on virtuaalmasin, mis teenindab pÀringuid ja mille mÀlu kasutus lÀheneb 80% -le, saate kas suurendada selle ressursse vÔi lisada klastrisse rohkem virtuaalmasinaid. Nende toimingute automaatne tÀitmine sobib suurepÀraselt elastseks jÔudluse muutmiseks koormuse all. Kuid alati peaksite olema ettevaatlik oma kulutuste osas ja seadma mÔistlikud piirangud.

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhialused arhitektuuri nÔuanded
Enamikus pilveteenustes saate seadistada automaatse skaleerimise, kasutades rohkem servereid vÔi vÔimsamaid servereid.

Eksperimentide sĂŒsteem

Hea vÔimalus turvaliseks uuenduste juurutamiseks on testida midagi 1% kasutajatest tunni jooksul. Kindlasti olete nÀinud selliseid mehhanisme tegutsemas. NÀiteks Facebook nÀitab osa publikule erinevat vÀrvi vÔi muudab fondi suurust, et nÀha, kuidas kasutajad muudatusi tajuvad. Seda nimetatakse A/B testimiseks.

Isegi uue funktsiooni vĂ€ljalaskmine vĂ”ib alata eksperimentaalselt, et seejĂ€rel otsustada, kuidas seda turule tuua. Samuti saate vĂ”imaluse „tagasi minna“ vĂ”i muuta konfiguratsiooni jooksvalt, arvestades funktsiooni, mis pĂ”hjustab teie teenuse halvenemist.

EdasijÔudnud tase

Siin on nĂ”uanded, mis on rakendamiseks ĂŒsna keerulised. TĂ”enĂ€oliselt vajate veidi rohkem ressursse, seega on vĂ€iksemal vĂ”i keskmisel ettevĂ”ttel sellega keeruline toime tulla.

Sinine-roheline juurutamine

See on see, mida ma nimetan «Erlangi» rakendamise viisiks. Erlang sai laialdaselt kasutusele telefonifirmade tulekuga. TelefonikĂ”nede suunamiseks hakati kasutama tarkvarakeerajaid. Nende keeerajate tarkvara pĂ”hieesmĂ€rk oli mitte lĂ”petada kĂ”nesid sĂŒsteemi uuendamise ajal. Erlangil on suurepĂ€rane meetod uue mooduli laadimiseks ilma eelneva kokku kukkumata.

See samm sÔltub koormuse tasakaalustajast. Oletame, et teil on tarkvara versioon N ja siis soovite kÀivitada versiooni N+1. 

Te Saaksid lihtsalt peatada teenuse ja kÀivitada jÀrgmise versiooni sel ajal, kui arvate, et see on teie kasutajatele mugav, ja saada natuke seisakut. Kuid oletame, et teil on tÔesti ranget SLA tingimused. NÀiteks 99,99% SLA tÀhendab, et saate olla offline ainult 52 minutit aastas.

Kui soovite tÔeliselt selliseid tulemusi saavutada, vajate kahte samaaegset rakendust: 

  • see, mis on praegu (N);
  • jĂ€rgmine versioon (N+1). 

Te mÀÀrate koormuse tasakaalustajale, et suunata protsent liiklusest uue versiooni (N+1) suunas, samal ajal kui jÀlgite aktiivselt regressioone.

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhialused arhitektuuri nÔuanded
Siin on meil roheline N-deploy, mis töötab korralikult. PĂŒĂŒame liikuda selle deploy jĂ€rgmise versiooni juurde.

Esmalt saadame tÔeliselt vÀikese testi, et nÀha, kas meie N+1 deploy töötab vÀikese liiklusega:

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhialused arhitektuuri nÔuanded
LÔpuks on meil automaatsete kontrollide komplekt, mida me lÔpuks kÀivitame, kuni meie deploy on lÔpetatud. Kui te vÀga-vÀga ettevaatlikud, vÔite ka oma N-deploy igaveseks sÀilitada, et kiiresti tagasi pöörduda halva regressiooni korral:

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhialused arhitektuuri nÔuanded
Kui soovite liikuda veelgi arenenumasse tasemesse, laske kÔigil sinise-roheline deploys automaatselt toimuda.

Anomaaliate tuvastamine ja automaatne leevendamine

Arvestades, et teil on keskne logimine ja hea logikogumine, on juba vÔimalik seada kÔrgemaid eesmÀrke. NÀiteks proaktiivne tÔrgete prognoosimine. Monitoridel ja logides jÀlgitakse funktsioone ja koostatakse erinevaid diagramme, mis vÔimaldavad ette ennustada, mis vÔib valesti minna:

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhialused arhitektuuri nÔuanded
Aneomaliate avastamisega hakkate uurima mÔningaid vihjeid, mida teenus annab. NÀiteks CPU koormuse tÔus vÔib viidata sellele, et kÔvaketas on rikki minemas, ja pÀringute arvu tÔus tÀhendab, et tuleks suurendada mahtu. Sellised statistilised andmed muudavad teenuse proaktiivseks.

Saades sellist analĂŒĂŒtilist teavet, saate suurendada oma vĂ”imekust igas mÔÔtmes, proaktiivselt ja reaktiivselt muuta masinate, andmebaaside, ĂŒhenduste ja teiste ressursside omadusi.

Ja kÔik ongi!

See prioriteetide nimekiri vabastab teid paljusid probleeme, kui tÔstate pilveteenust.

Originaali autori kutse lugejatele jÀtta kommentaare ja teha muudatusi. Artikkel levib avatud allikana, autor vÔtab vastu pull-request'id Github'is.

Mida veel selle teema kohta lugeda:

  1. Go ja CPU vahemikud
  2. Kubernetes piraatluses juurutamise malliga
  3. Meie kanal Kubernetesest Telegramis

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster