
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 .
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.

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:

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“?

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.

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.

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.

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.

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:

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:

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:

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 .
Mida veel selle teema kohta lugeda:
Allikas: habr.com
