Hoe goed te sliepen as jo in wolktsjinst hawwe: basis arsjitektoanyske tips

Hoe goed te sliepen as jo in wolktsjinst hawwe: basis arsjitektoanyske tipsLOST troch sophiagworld

Dit artikel befettet wat mienskiplike patroanen om yngenieurs te helpen wurkjen mei grutskalige tsjinsten dy't tagonklik binne troch miljoenen brûkers. 

Yn de ûnderfining fan de skriuwer is dit net in útputtende list, mar wol effektyf advys. Dus, lit ús begjinne.

Oerset mei stipe Mail.ru Cloud Solutions.

Earste nivo

De hjirûnder neamde maatregels binne relatyf ienfâldich te ymplementearjen, mar hawwe in hege ynfloed. As jo ​​​​se noch net earder hawwe besocht, sille jo ferrast wurde oer de wichtige ferbetteringen.

Ynfrastruktuer as koade

It earste diel fan it advys is om ynfrastruktuer as koade út te fieren. Dit betsjut dat jo in programmatyske manier moatte hawwe om de heule ynfrastruktuer yn te setten. It klinkt yngewikkeld, mar wy hawwe it eins oer de folgjende koade:

Ynset fan 100 firtuele masines

  • mei Ubuntu
  • 2 GB RAM elk
  • sy sille hawwe de folgjende koade
  • mei dizze parameters

Jo kinne wizigingen oan jo ynfrastruktuer folgje en fluch weromgean nei har mei ferzjekontrôle.

De modernist yn my seit dat jo Kubernetes / Docker kinne brûke om al it boppesteande te dwaan, en hy hat gelyk.

Derneist kinne jo automatisearring leverje mei Chef, Puppet of Terraform.

Trochrinnende yntegraasje en levering

Foar it meitsjen fan in scalable tsjinst, is it wichtich om in build en test pipeline foar eltse pull fersyk. Sels as de test heul ienfâldich is, sil it op syn minst soargje dat de koade dy't jo ynsette kompilearret.

Elke kear op dit stadium beäntwurdzje jo de fraach: sil myn gearkomste gearstalle en trochjaan tests, is it jildich? Dit kin lykje as in lege bar, mar it lost in soad problemen.

Hoe goed te sliepen as jo in wolktsjinst hawwe: basis arsjitektoanyske tips
Der is neat moaier as dizze teken te sjen

Foar dizze technology kinne jo Github, CircleCI of Jenkins evaluearje.

Load Balancers

Dat, wy wolle in loadbalancer útfiere om ferkear troch te lieden en gelikense lading op alle knopen te garandearjen as de tsjinst giet troch yn gefal fan mislearring:

Hoe goed te sliepen as jo in wolktsjinst hawwe: basis arsjitektoanyske tips
In load balancer docht normaal in goede baan om ferkear te fersprieden. De bêste praktyk is om oerbalâns te meitsjen sadat jo gjin inkeld punt fan mislearring hawwe.

Typysk wurde load balancers konfigureare yn 'e wolk dy't jo brûke.

RayID, korrelaasje ID of UUID foar oanfragen

Hawwe jo oait in applikaasjeflater tsjinkaam mei in berjocht lykas dit: "Der is wat misgien. Bewarje dizze id en stjoer it nei ús stipeteam"?

Hoe goed te sliepen as jo in wolktsjinst hawwe: basis arsjitektoanyske tips
In unike identifier, korrelaasje-ID, RayID, as ien fan 'e fariaasjes, is in unike identifier wêrmei jo in fersyk kinne folgje yn' e hiele libbenssyklus. Hjirmei kinne jo it hiele fersykpaad yn 'e logs folgje.

Hoe goed te sliepen as jo in wolktsjinst hawwe: basis arsjitektoanyske tips
De brûker docht in fersyk oan systeem A, dan kontakten A B, dy't kontakten C, bewarret it yn X, en dan wurdt it fersyk weromjûn nei A

As jo ​​op ôfstân ferbine mei firtuele masines en besykje it fersykpaad op te spoaren (en manuell korrelearje hokker oproppen wurde makke), soene jo gek wurde. It hawwen fan in unike identifier makket it libben folle makliker. Dit is ien fan 'e ienfâldichste dingen dy't jo kinne dwaan om tiid te besparjen as jo tsjinst groeit.

Midden nivo

It advys hjir is komplekser as de foargeande, mar de juste ark makket de taak makliker, en leveret in rendemint op ynvestearring sels foar lytse en middelgrutte bedriuwen.

Sintraal logging

Lokwinske! Jo hawwe 100 firtuele masines ynset. De oare deis komt de CEO en klaget oer in flater dy't hy krige by it testen fan de tsjinst. It rapportearret de oerienkommende ID wêr't wy hjirboppe oer praat hawwe, mar jo moatte troch de logs fan 100 masines sjen om dejinge te finen dy't de crash feroarsake. En it moat fûn wurde foar de presintaasje fan moarn.

Hoewol dit klinkt as in leuk aventoer, is it it bêste om te soargjen dat jo de mooglikheid hawwe om al jo tydskriften op ien plak te sykjen. Ik haw it probleem oplost fan sintralisearjen fan logs mei de ynboude funksjonaliteit fan 'e ELK-stapel: it stipet trochsykbere logkolleksje. Dit sil echt helpe it probleem op te lossen fan it finen fan in spesifyk tydskrift. As bonus kinne jo charts en oare leuke dingen lykas dat oanmeitsje.

Hoe goed te sliepen as jo in wolktsjinst hawwe: basis arsjitektoanyske tips
ELK stack funksjonaliteit

Monitoring aginten

No't jo tsjinst op en rint, moatte jo derfoar soargje dat it soepel rint. De bêste manier om dit te dwaan is om ferskate út te fieren aginten, dy't parallel wurkje en kontrolearje dat it wurket en basis operaasjes wurde útfierd.

Op dit punt kontrolearje jo dat de rinnende bou fielt goed en wurket goed.

Foar lytse oant middelgrutte projekten advisearje ik Postman foar it kontrolearjen en dokumintearjen fan API's. Mar yn 't algemien wolle jo gewoan derfoar soargje dat jo in manier hawwe om te witten wannear't in ûnderbrekking is bard en op 'e tiid op 'e hichte brocht wurde.

Autoscaling ôfhinklik fan lading

It is hiel ienfâldich. As jo ​​​​in VM-tsjinstoanfragen hawwe en it 80% ûnthâldgebrûk benaderet, kinne jo de boarnen ferheegje of mear VM's tafoegje oan it kluster. Automatyske útfiering fan dizze operaasjes is poerbêst foar elastyske krêftferoarings ûnder load. Mar jo moatte altyd foarsichtich wêze oer hoefolle jild jo besteegje en ridlike grinzen ynstelle.

Hoe goed te sliepen as jo in wolktsjinst hawwe: basis arsjitektoanyske tips
Mei de measte wolktsjinsten kinne jo it ynstelle om automatysk te skaaljen mei mear servers of machtiger servers.

Eksperimint systeem

In goede manier om fernijings feilich út te rollen is in oere wat te kinnen testen foar 1% fan brûkers. Jo hawwe fansels sokke meganismen yn aksje sjoen. Bygelyks, Facebook toant dielen fan it publyk in oare kleur of feroaret de lettertypegrutte om te sjen hoe't brûkers de feroaringen waarnimme. Dit wurdt A/B-testen neamd.

Sels it frijlitten fan in nije funksje kin wurde begon as in eksperimint en dan bepale hoe't it frijlitten wurdt. Jo krije ek de mooglikheid om te "ûnthâlde" of feroarje de konfiguraasje op de fly basearre op de funksje dy't feroarsaket degradaasje yn jo tsjinst.

Avansearre nivo

Hjir binne tips dy't frij lestich binne om te realisearjen. Jo sille wierskynlik in bytsje mear boarnen nedich wêze, dus in lyts as middelgrutte bedriuw sil it dreech hawwe om dit te behearjen.

Blau-griene ynset

Dit is wat ik neam de "Erlang" manier fan ûntjaan. Erlang waard in soad brûkt doe't telefoan bedriuwen ferskynden. Softswitches begûnen te wurde brûkt om telefoantsjes te routeren. It haaddoel fan 'e software op dizze skeakels wie om gjin petearen te fallen tidens systeemupgrades. Erlang hat in moaie manier om in nije module te laden sûnder de foarige te crashen.

Dizze stap hinget ôf fan 'e oanwêzigens fan in load balancer. Litte wy ús foarstelle dat jo ferzje N fan jo software hawwe, en dan wolle jo ferzje N+1 ynsette. 

Вы we soene kinne stopje gewoan de tsjinst en rôlje de folgjende ferzje út op in tiid dat wurket foar jo brûkers en krije wat downtime. Mar stel dat jo hawwe echt strange SLA betingsten. Dat, SLA 99,99% betsjut dat jo offline kinne gean allinnich troch 52 minuten yn it jier.

As jo ​​wirklik sokke yndikatoaren wolle berikke, hawwe jo twa ynset tagelyk nedich: 

  • dejinge dy't no krekt is (N);
  • folgjende ferzje (N+1). 

Jo fertelle de load balancer om in persintaazje ferkear nei de nije ferzje (N + 1) troch te lieden wylst jo aktyf kontrolearje foar regressions.

Hoe goed te sliepen as jo in wolktsjinst hawwe: basis arsjitektoanyske tips
Hjir hawwe wy in griene N ynset dy't goed wurket. Wy besykje te gean nei de folgjende ferzje fan dizze ynset

Earst stjoere wy in echt lytse test om te sjen oft ús N + 1-ynset wurket mei in lyts bedrach fan ferkear:

Hoe goed te sliepen as jo in wolktsjinst hawwe: basis arsjitektoanyske tips
Uteinlik hawwe wy in set fan automatyske kontrôles dy't wy úteinlik útfiere oant ús ynset foltôge is. Asto tige foarsichtich, jo kinne ek bewarje jo N ynset foar altyd foar in flugge rollback yn gefal fan minne regression:

Hoe goed te sliepen as jo in wolktsjinst hawwe: basis arsjitektoanyske tips
As jo ​​​​nei in noch mear avansearre nivo wolle gean, lit alles yn 'e blau-griene ynset automatysk rinne.

Anomaly-deteksje en automatyske mitigaasje

Sjoen dat jo sintralisearre logging en goede logkolleksje hawwe, kinne jo al hegere doelen ynstelle. Bygelyks, proaktyf foarsizze mislearrings. Funksjes wurde folge op monitors en yn logs en ferskate diagrammen wurde boud - en jo kinne fan tefoaren foarsizze wat der mis sil gean:

Hoe goed te sliepen as jo in wolktsjinst hawwe: basis arsjitektoanyske tips
Sadree't anomalies binne ûntdutsen, begjinne jo guon fan 'e oanwizings te ûndersykjen dy't de tsjinst leveret. Bygelyks, in pyk yn CPU load kin oanjaan dat in hurde skiif is mislearre, wylst in pyk yn fersiken kin oanjaan dat jo moatte skaalfergrutting. Dit soarte fan statistyske gegevens kinne jo meitsje de tsjinst proaktyf.

Mei dizze ynsjoggen kinne jo yn elke dimensje skaalje en proaktyf en reaktyf de skaaimerken fan masines, databases, ferbiningen en oare boarnen feroarje.

Da's alles!

Dizze list mei prioriteiten sil jo in protte problemen besparje as jo in wolktsjinst ferheegje.

De skriuwer fan it orizjinele artikel noeget lêzers út om har opmerkingen te litten en wizigingen oan te bringen. It artikel wurdt ferspraat as iepen boarne, pull fersiken troch de auteur akseptearret op Github.

Wat oars te lêzen oer it ûnderwerp:

  1. Gean en CPU-caches
  2. Kubernetes yn 'e geast fan piraterij mei in sjabloan foar ymplemintaasje
  3. Us kanaal Around Kubernetes yn Telegram

Boarne: www.habr.com

Add a comment