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