Kuidas rahulikult magada, kui teil on pilveteenus: pÔhiarhitektuuri nÀpunÀited

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhiarhitektuuri nÀpunÀitedLOST by sophiagworld

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 Mail.ru Pilve Lahendused.

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.

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhiarhitektuuri nÀpunÀited
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:

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhiarhitektuuri nÀpunÀited
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»?

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhiarhitektuuri nÀpunÀited
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.

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhiarhitektuuri nÀpunÀited
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.

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhiarhitektuuri nÀpunÀited
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.

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhiarhitektuuri nÀpunÀited
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.

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhiarhitektuuri nÀpunÀited
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:

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhiarhitektuuri nÀpunÀited
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:

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhiarhitektuuri nÀpunÀited
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:

Kuidas rahulikult magada, kui teil on pilveteenus: pÔhiarhitektuuri nÀpunÀited
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. Go ja CPU vahemÀlud.

Mis veel teemaga seoses lugeda:

  1. Kubernetes piraatide stiilis rakendusemalliga
  2. đŸ„‡Kuidas rahulikult magada, kui teil on pilveteenus: peamised arhitektuuri nĂ”uanded | ProHoster
  3. Meie Tee Kuberneetes kanal Telegrmis

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster