
Selles artiklis on kogutud mĂ”ned ĂŒldised mallid, mis aitavad inseneridel hallata laias ulatuses teenuseid, millele esitatakse nĂ”udmisi miljonitelt kasutajatelt.Â
Autori kogemuse pÔhjal pole see tÀielik nimekiri, kuid tÔeliselt effektiivne nÔuandeid. Alustame.
TÔlgitud toetusel .
PÔhitasemel
Allpool loetletud meetmed on suhteliselt lihtsad rakendada, kuid pakuvad kÔrget tootlust. kui te pole neid varem rakendanud, siis teile pakuvad tÔeliselt suured parandused.
Infrastruktuur kui kood
Esimene nÔuanne on rakendada infrastruktuuri koodina. See tÀhendab, et teil peab olema programmiline viis kogu infrastruktuuri juurutamiseks. See kÔlab keeruliselt, kuid tegelikult rÀÀgime jÀrgnevast koodist:
100 virtuaalmasina juurutamine
- Ubuntu
- 2 GB RAM-i igaĂŒhel
- neil on jÀrgmine kood
- selliste parameetritega
Saate jĂ€lgida infrastruktuuri muudatusi ja kiiresti sellele tagasi pöörduda versioonihalduse sĂŒsteemi abil.
Modernaist minus ĂŒtleb, et Kubernetes/Dockerit on vĂ”imalik kasutada, et teha kĂ”ik eelnevalt loetletud, ja ta on Ă”ige.
Lisaks automatiseerimist saab tagada Chef, Puppet vÔi Terraform abil.
Pidev integreerimine ja kohaletoimetamine
Mastaapsete teenuste loomiseks on oluline, et iga pull req'i jaoks oleks olemas koostamis- ja testimissegment. Isegi kui test on kÔige lihtsam, garanteerib see vÀhemalt, et kood, mida te juurutate, kompileerub.
Igal korral selles etapis vastate kĂŒsimusele: kas minu koostamine kompileerub ja lĂ€bib teste, kas see on kehtiv? See vĂ”ib tunduda madalal tasemel, kuid lahendab palju probleeme.

Pole midagi imelisemat, kui nÀha neid linnukesi
Selle tehnoloogia jaoks vÔite uurida Githubi, CircleCI vÔi Jenkinsit.
Laadimisbalansseerijad
Nii et soovime kĂ€ivitada laadimisbalansseerija, et suunata liiklust ja tagada ĂŒhtlane koormus kĂ”igil sĂ”lmedel vĂ”i teenuse töö tĂ”rgete korral:

Laadimisbalansseerija aitab tavaliselt hĂ€sti liiklust jaotada. Parimaks praktikaks on ĂŒlemÀÀrane balansseerimine, et vĂ€ltida ainsat tĂ”rke punkti.
Tavaliselt seadistatakse laadimisbalansseerijad seal, kus te oma pilve kasutate.
RayID, korrelatsiooni ID vÔi UUID pÀringute jaoks
Kas oled kunagi kohanud rakenduse tÔrget, mille sÔnum kÔlab umbes nii: «Midagi lÀks valesti. Palun salvesta see id ja saada see meie tugiteenusele»?

Unikaalne identifikaator, correlation ID, RayID vĂ”i ĂŒkskĂ”ik milline variant â see on unikaalne identifikaator, mis vĂ”imaldab jĂ€lgida pĂ€ringut selle elutsĂŒkli jooksul. See vĂ”imaldab jĂ€lgida kogu pĂ€ringu teed logides.

Kasutaja teeb pĂ€ringu sĂŒsteemile A, seejĂ€rel A suhtleb B-ga, B suhtleb C-ga, salvestab X-sse ja seejĂ€rel naaseb pĂ€ring A-le.
Kui sa ĂŒhenduksid kaugjuhtimise teel virtuaalmasinatele ja prooviksid jĂ€lgida pĂ€ringu teekonda (ning kĂ€sitsi seostada, millised kutse kutsed toimuvad), siis lĂ€heks see sul hulluks. Unikaalse identifikaatori olemasolu lihtsustab elu oluliselt. See on ĂŒks lihtsamaid asju, mida teha, et sÀÀsta aega teenuse arengu jooksul.
Keskmine tase
Siin on nĂ”uanded keerulisemad kui eelnevad, kuid Ă”iged tööriistad muudavad ĂŒlesande lihtsamaks, tagades investeeringute tasuvuse isegi vĂ€ikestes ja keskmistes ettevĂ”tetes.
Keskne logimine
Palju Ă”nne! Olete kĂ€ivitanud 100 virtuaalmasinat. JĂ€rgmine pĂ€ev tuleb tegevjuht ja kurdab tĂ”rke ĂŒle, mille ta sai teenuse testimise ajal. Ta teatab vastavast identifikaatorist, millest me varem rÀÀkisime, kuid peate vaatama logisid 100 masinast, et leida see, mis viga pĂ”hjustas. Ja seda tuleb leida enne homset esitlust.
Kuigi see kĂ”lab nagu naljakas seiklus, on siiski parem veenduda, et teil on vĂ”imalus otsida kĂ”igist logidest ĂŒhest kohast. Otsustasin probleemiks logide tsentraliseerimise ELK stack'i sisseehitatud funktsionaalsuse abil: siin toetatakse logide kogumist otsitavaks. See tĂ”esti aitab lahendada konkreetse logi otsimise probleemi. Boonusena saate luua diagramme ja muid toredaid asju.

ELK stack'i funktsionaalsus
JĂ€lgimisagendid
NĂŒĂŒd, kui teie teenus on tööle pandud, peate veenduma, et see töötab tĂ”rgeteta. Parim viis selleks on kĂ€ivitada mitu agent, mis töötavad paralleelselt ja jĂ€lgivad, et see töötab ja et pĂ”hitegevused on tĂ€idetud.
Selles etapis kontrollite, et KÀivitamiseks mÔeldud koostamine töötab hÀsti ja toimib normaalselt.
VÀikeste ja keskmise suurusega projektide puhul soovitan Postmanit API jÀlgimiseks ja dokumenteerimiseks. Kuid pÔhimÔtteliselt peaksite lihtsalt veenduma, et teil on vÔimalus teada saada, kui ebaÔnnestumine on toimunud, ja saada Ôigeaegne teavitus.
Automaatne skaleerimine sÔltuvalt koormusest
See on vÀga lihtne. Kui teil on virtuaalmasin, mis teenindab pÀringuid ja see lÀheneb 80% mÀlu tÀitumise piirile, saate kas suurendada selle ressursse vÔi lisada klastrisse rohkem virtuaalmasinaid. Nende toimingute automaatne teostamine sobib suurepÀraselt paindlikuks ressursside muutmiseks koormuse ajal. Kuid peate alati olema ettevaatlik, kui palju raha kulutate, ja seadma mÔistlikud piirangud.

Enamikus pilveteenustes saate automaatse skaleerimise seadistada, kasutades rohkem servereid vÔi vÔimsamaid servereid.
Eksperimentide sĂŒsteem
Hea viis uuenduste turvaliseks juurutamiseks on vÔimalus testida midagi 1% kasutajatelt tunni jooksul. Olete kindlasti nÀinud selliseid mehhanisme tegutsemas. NÀiteks Facebook nÀitab teatud osa publikust erinevat vÀrvi vÔi muudab fondi suurust, et nÀha, kuidas kasutajad muudatusi tajuvad. Seda nimetatakse A/B-testimiseks.
Isegi uue funktsiooni kĂ€ivitamine vĂ”ib toimuda eksperimendina ja seejĂ€rel saab mÀÀrata, kuidas seda vĂ€lja anda. Samuti saate vĂ”imaluse âtagasi vĂ”ttaâ vĂ”i konfigureerida muuta lennult, arvestades funktsiooni, mis pĂ”hjustab teie teenuse halvenemist.
EdasijÔudnud tase
Siin on nĂ”uanded, mida on ĂŒsna raske teostada. TĂ”enĂ€oliselt vajate veidi rohkem ressursse, seega on vĂ€ikese vĂ”i keskmise suurusega ettevĂ”tte jaoks keeruline sellega toime tulla.
Sinine-roheline juurutamine
See on see, mida ma nimetan âErlangiâ juurutamiseks. Erlangi hakati laialdaselt kasutama, kui tekkisid telefonifirmad. TelefonikĂ”nede marsruutimiseks hakati kasutama tarkvara lĂŒliteid. Peamine ĂŒlesanne nende lĂŒlitite tarkvaral oli vĂ€ltida kĂ”nede katkestamist sĂŒsteemi uuendamise ajal. Erlangil on suurepĂ€rane viis uue mooduli laadimiseks ilma varasema kokkukukkumiseta.
See sammumine sĂ”ltub koormuse tasakaalustajast. Oletame, et teil on teie tarkvara versioon N ja siis soovite juurutada versiooni N+1.Â
Te saaksid lihtsalt peatada teenuse ja juurutada jĂ€rgmise versiooni sellisel ajal, nagu arvate, et see sobib teie kasutajatele, ja ĐżĐŸĐ»ŃŃĐžŃŃ ĐœĐ”Đ±ĐŸĐ»ŃŃĐŸĐ” ĐČŃĐ”ĐŒŃ ĐżŃĐŸŃŃĐŸŃ. Aga oletame, et teil on tĂ”eliselt rangelt SLA tingimused. Niisiis, SLA 99,99% tĂ€hendab, et vĂ”ite olla offline seda 52 minutit aastas.
Kui soovite tĂ”eliselt selliseid nĂ€itajaid saavutada, on vaja kahte juurutust samaaegselt:Â
- see, mis on praegu (N);
- jĂ€rgmine versioon (N+1).Â
Te mÀÀrate koormuse tasakaalustajale, et suunata teatud protsent liiklusest uuele versioonile (N+1), samal ajal kui te aktiivselt jÀlgite regressioone.

Siin on meil roheline juurutus N, mis töötab korralikult. Proovime liikuda selle juurutuse jÀrgmise versiooni juurde
Esiteks saadame tÔeliselt vÀikese testi, et nÀha, kas meie juurutus N+1 töötab vÀikese liiklusega:

LĂ”puks on meil rida automaatseid kiá»mimisi, mida me lĂ”puks kĂ€ivitame, kuni meie juurutamine on lĂ”petatud. Kui olete vĂ€ga-vĂ€ga ettevaatlik, vĂ”ite ka hoida oma juurutust N igavesti kiireks tagasiviimiseks halva regressiooni korral:

Kui soovite minna veelgi kÔrgemale tasemele, laske kÔik sinise-roheline juurutuses toimuda automaatselt.
Aneomaliade tuvastamine ja automaatne leevendamine
Arvestades, et teil on tsentraliseeritud logimine ja hea logide kogumine, on juba vÔimalik seada kÔrgemaid eesmÀrke. NÀiteks proaktiivselt ennustada tÔrkeid. Monitorides ja logides jÀlgitakse funktsioone ning koostatakse erinevaid diagramme - ja saate ette ennustada, mis vÔib valesti minna:

Aneomaliade tuvastamise abil hakkate uurima mÔningaid vihjeid, mida teenus annab. NÀiteks CPU koormuse tÔus vÔib mÀrku anda, et kÔvakettas lÀheb katki, ja pÀringute arvu tÔus tÀhendab, et on vaja skaleeruda. Sellised statistilised andmed aitavad teenust proaktiivseks muuta.
Saades selliseid analĂŒĂŒtilisi andmeid saate skalata igas mÔÔtmes, proaktiivselt ja reaktiivselt muuta masinate, andmebaaside, ĂŒhenduste ja teiste ressursside omadusi.
Ja kÔik!
See prioriteetide nimekiri vabastab teid paljusid probleeme, kui vÔtate kasutusele pilveteenuse.
Algse artikli autor kutsub lugejaid jÀtma oma kommentaare ja tegema muudatusi. Artikkel levib avatud lÀhtekoodiga, autor aktsepteerib tÔmbeavaldusi GitHubis. .
Mis veel teemaga seoses lugeda:
Allikas: habr.com
