
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
