Kuidas magada hästi, kui teil on pilveteenus: põhilised arhitektuurinõuanded

Kuidas magada hästi, kui teil on pilveteenus: põhilised arhitektuurinõuandedKADUNUD sophiagworldi poolt

See artikkel sisaldab mõningaid levinud mustreid, mis aitavad inseneridel töötada suuremahuliste teenustega, millele pääsevad juurde miljonid kasutajad. 

Autori kogemuse põhjal ei ole see ammendav loetelu, kuid tõepoolest efektiivne nõu. Niisiis, alustame.

Toega tõlgitud Mail.ru pilvelahendused.

Esimene tase

Allpool loetletud meetmeid on suhteliselt lihtne rakendada, kuid neil on suur mõju. Kui te pole neid varem proovinud, üllatate oluliste täiustuste üle.

Infrastruktuur kui kood

Nõuannete esimene osa on taristu rakendamine koodina. See tähendab, et teil peab olema programmiline viis kogu infrastruktuuri juurutamiseks. See kõlab keeruliselt, kuid tegelikult räägime järgmisest koodist:

100 virtuaalse masina juurutamine

  • Ubuntuga
  • 2 GB RAM iga
  • neil on järgmine kood
  • nende parameetritega

Saate jälgida oma infrastruktuuri muudatusi ja versioonihalduse abil nende juurde kiiresti naasta.

Minus olev modernist ütleb, et saate kasutada Kubernetes/Dockerit kõigi ülaltoodud toimingute tegemiseks ja tal on õigus.

Lisaks saate pakkuda automatiseerimist, kasutades Chef, Puppet või Terraform.

Pidev integreerimine ja kohaletoimetamine

Skaleeritava teenuse loomiseks on oluline, et iga tõmbetaotluse jaoks oleks koostamis- ja testimiskonveier. Isegi kui test on väga lihtne, tagab see vähemalt selle, et teie juurutatud kood kompileerub.

Iga kord selles etapis vastate küsimusele: kas minu koost koostab ja läbib testid, kas see on kehtiv? See võib tunduda madal latt, kuid see lahendab palju probleeme.

Kuidas magada hästi, kui teil on pilveteenus: põhilised arhitektuurinõuanded
Pole midagi ilusamat kui neid puuke näha

Selle tehnoloogia puhul saate hinnata Githubi, CircleCI või Jenkinsi.

Koormuse tasakaalustajad

Seega tahame käivitada koormuse tasakaalustaja, et suunata liiklust ümber ja tagada kõigi sõlmede võrdne koormus või teenuse jätkumine tõrke korral:

Kuidas magada hästi, kui teil on pilveteenus: põhilised arhitektuurinõuanded
Koormuse tasakaalustaja teeb liikluse jaotamisel tavaliselt head tööd. Parim tava on tasakaalustada, et teil ei oleks ühtegi tõrkepunkti.

Tavaliselt on koormuse tasakaalustajad konfigureeritud teie kasutatavas pilves.

RayID, korrelatsiooni ID või UUID päringute jaoks

Kas olete kunagi kohanud rakenduse tõrget sellise sõnumiga: "Midagi läks valesti. Salvestage see ID ja saatke see meie tugitiimile"?

Kuidas magada hästi, kui teil on pilveteenus: põhilised arhitektuurinõuanded
Unikaalne identifikaator, korrelatsiooni ID, RayID või mis tahes variatsioonid on kordumatu identifikaator, mis võimaldab teil jälgida päringut kogu selle elutsükli jooksul. See võimaldab jälgida kogu päringu teed logides.

Kuidas magada hästi, kui teil on pilveteenus: põhilised arhitektuurinõuanded
Kasutaja teeb päringu süsteemile A, seejärel võtab A ühendust B-ga, kes võtab ühendust C-ga, salvestab selle X-sse ja seejärel saadetakse päring tagasi A-le.

Kui looksite kaugühenduse virtuaalmasinatega ja prooviksite päringu teed jälgida (ja tehtavaid kõnesid käsitsi korreleerida), läheksite hulluks. Unikaalse identifikaatori olemasolu muudab elu palju lihtsamaks. See on üks lihtsamaid asju, mida saate oma teenuse kasvades aja säästmiseks teha.

Keskmine tase

Siinsed nõuanded on varasematest keerukamad, kuid õiged tööriistad teevad ülesande lihtsamaks, pakkudes investeeringutasuvust ka väikestele ja keskmise suurusega ettevõtetele.

Tsentraliseeritud metsaraie

Palju õnne! Olete juurutanud 100 virtuaalset masinat. Järgmisel päeval tuleb tegevjuht ja kaebab teenuse testimisel saadud vea üle. See teatab vastava ID, millest me eespool rääkisime, kuid krahhi põhjustaja leidmiseks peate läbi vaatama 100 masina logi. Ja see tuleb enne homset esitlust üles leida.

Kuigi see kõlab lõbusa seiklusena, on kõige parem veenduda, et teil on võimalus otsida kõiki ajakirju ühest kohast. Lahendasin logide tsentraliseerimise probleemi ELK virna sisseehitatud funktsioonide abil: see toetab otsitavat logikogumist. See aitab tõesti lahendada konkreetse ajakirja leidmise probleemi. Boonusena saate luua diagramme ja muud sellist lõbusat.

Kuidas magada hästi, kui teil on pilveteenus: põhilised arhitektuurinõuanded
ELK virna funktsionaalsus

Järelevalveagendid

Nüüd, kui teie teenus on käivitatud ja töötab, peate veenduma, et see töötab tõrgeteta. Parim viis selleks on käivitada mitu agendid, mis töötavad paralleelselt ja kontrollivad selle toimimist ja põhitoimingute sooritamist.

Sel hetkel kontrollite seda jooksev ehitus tundub hea ja töötab hästi.

Väikeste ja keskmise suurusega projektide puhul soovitan API-de jälgimiseks ja dokumenteerimiseks Postmani. Kuid üldiselt soovite lihtsalt veenduda, et teil on võimalus teada saada, millal katkestus on toimunud, ja teid õigeaegselt teavitada.

Automaatne skaleerimine sõltuvalt koormusest

See on väga lihtne. Kui teil on VM-i teeninduspäringud ja see läheneb 80% mälukasutusele, saate selle ressursse suurendada või klastrisse rohkem VM-e lisada. Nende toimingute automaatne täitmine sobib suurepäraselt elastse võimsuse muutmiseks koormuse all. Kuid alati peaksite olema ettevaatlik raha kulutamisega ja seadma mõistlikud piirid.

Kuidas magada hästi, kui teil on pilveteenus: põhilised arhitektuurinõuanded
Enamiku pilveteenuste puhul saate selle konfigureerida automaatseks skaleerimiseks, kasutades rohkem servereid või võimsamaid servereid.

Katsesüsteem

Hea viis värskenduste ohutuks levitamiseks on tund aega testida midagi 1% kasutajate jaoks. Muidugi olete selliseid mehhanisme töös näinud. Näiteks Facebook näitab osadele vaatajaskonnast erinevat värvi või muudab fondi suurust, et näha, kuidas kasutajad muutusi tajuvad. Seda nimetatakse A/B testimiseks.

Isegi uue funktsiooni väljalaskmist saab alustada katsena ja seejärel määrata, kuidas see vabastada. Samuti saate võimaluse "mäletada" või muuta konfiguratsiooni käigupealt vastavalt funktsioonile, mis põhjustab teie teenuse halvenemist.

kõrgtasemel

Siin on näpunäiteid, mida on üsna raske rakendada. Tõenäoliselt vajate veidi rohkem ressursse, nii et väikesel või keskmise suurusega ettevõttel on sellega raske toime tulla.

Sini-rohelised juurutused

Seda ma nimetan "Erlangi" avanemisviisiks. Erlangit hakati laialdaselt kasutama, kui tekkisid telefonifirmad. Telefonikõnede suunamiseks hakati kasutama pehmeid lüliteid. Nende lülitite tarkvara peamine eesmärk oli mitte katkestada kõnesid süsteemi uuendamise ajal. Erlangil on kena viis uue mooduli laadimiseks ilma eelmist kokkujooksmata.

See samm sõltub koormuse tasakaalustaja olemasolust. Kujutagem ette, et teil on tarkvara versioon N ja seejärel soovite juurutada versiooni N+1. 

sa me võiksime lihtsalt peatage teenus ja käivitage järgmine versioon teie kasutajate jaoks sobival ajal ja saate veidi seisakuid. Aga oletame, et sul on tegelikult ranged SLA tingimused. Seega tähendab SLA 99,99%, et saate võrguühenduseta minna ainult 52 minuti võrra aastas.

Kui soovite tõesti selliseid näitajaid saavutada, on teil vaja korraga kahte kasutuselevõttu: 

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

Kästate koormuse tasakaalustajal suunata teatud protsent liiklusest uude versiooni (N+1), samal ajal kui jälgite aktiivselt regressioone.

Kuidas magada hästi, kui teil on pilveteenus: põhilised arhitektuurinõuanded
Siin on roheline N juurutus, mis töötab hästi. Püüame liikuda selle juurutuse järgmisele versioonile

Kõigepealt saadame väikese testi, et näha, kas meie N+1 juurutus töötab väikese liiklusega:

Kuidas magada hästi, kui teil on pilveteenus: põhilised arhitektuurinõuanded
Lõpuks on meil komplekt automaatseid kontrolle, mida lõpuks käivitame, kuni juurutamine on lõpule viidud. Kui sa väga väga Ettevaatust, võite ka oma N juurutuse igaveseks salvestada, et halva regressiooni korral kiiresti tagasi võtta:

Kuidas magada hästi, kui teil on pilveteenus: põhilised arhitektuurinõuanded
Kui soovite minna veelgi kõrgemale tasemele, laske kõigel sini-rohelise juurutuse puhul automaatselt töötada.

Anomaaliate tuvastamine ja automaatne leevendamine

Arvestades, et teil on tsentraliseeritud metsaraie ja hea palkide kogumine, saate seada juba kõrgemaid eesmärke. Näiteks prognoosige ennetavalt ebaõnnestumisi. Funktsioone jälgitakse monitoridel ja logides ning koostatakse erinevaid diagramme - ja saate ette ennustada, mis valesti läheb:

Kuidas magada hästi, kui teil on pilveteenus: põhilised arhitektuurinõuanded
Kui kõrvalekalded on tuvastatud, hakkate uurima mõningaid teenuse pakutavaid vihjeid. Näiteks võib protsessori koormuse suurenemine viidata kõvaketta rikkele, samas kui taotluste suurenemine võib viidata sellele, et peate suurendama. Sellised statistilised andmed võimaldavad teil muuta teenuse proaktiivseks.

Nende teadmiste abil saate skaleerida mis tahes dimensioonis ning ennetavalt ja reageerivalt muuta masinate, andmebaaside, ühenduste ja muude ressursside omadusi.

See on kõik!

See prioriteetide loend säästab teid paljudest probleemidest, kui loote pilveteenuse.

Algse artikli autor kutsub lugejaid jätma oma kommentaare ja tegema muudatusi. Artiklit levitatakse avatud lähtekoodiga, autori tõmbetaotlused aktsepteerib Githubis.

Mida veel selle teema kohta lugeda:

  1. Mine ja CPU vahemälud
  2. Kubernetes piraatluse vaimus koos rakenduse malliga
  3. Meie kanal Kubernetese ümber Telegramis

Allikas: www.habr.com

Lisa kommentaar