Nola lo egin lasai hodeiko zerbitzu bat duzunean: oinarrizko arkitektura-aholkuak

Nola lo egin lasai hodeiko zerbitzu bat duzunean: oinarrizko arkitektura-aholkuakLOST sophiagworld-ek

Artikulu honek eredu arrunt batzuk ditu ingeniariei milioika erabiltzailek atzitzen dituzten eskala handiko zerbitzuekin lan egiten laguntzeko. 

Egilearen esperientziaren arabera, hau ez da zerrenda zehatza, baina bai eraginkor aholkua. Beraz, has gaitezen.

Euskarriarekin itzulita Mail.ru Cloud Solutions.

Lehen maila

Jarraian zerrendatzen diren neurriak ezartzeko nahiko errazak dira, baina eragin handia dute. Aurretik probatu ez badituzu, harritu egingo zara hobekuntza esanguratsuekin.

Azpiegitura kode gisa

Aholkuaren lehen zatia azpiegitura kode gisa ezartzea da. Horrek esan nahi du modu programatiko bat izan behar duzula azpiegitura osoa zabaltzeko. Konplikatua dirudi, baina kode honi buruz ari gara:

100 makina birtual hedatzea

  • Ubunturekin
  • 2 GB RAM bakoitza
  • honako kodea izango dute
  • parametro hauekin

Zure azpiegituran egindako aldaketak jarrai ditzakezu eta horietara azkar itzul ditzakezu bertsio-kontrola erabiliz.

Nire baitan modernistak dio Kubernetes/Docker erabil dezakezula aurreko guztia egiteko, eta arrazoi du.

Horrez gain, Chef, Puppet edo Terraform erabiliz automatizazioa eman dezakezu.

Etengabeko integrazioa eta entrega

Eskalagarria den zerbitzu bat sortzeko, garrantzitsua da tira-eskaera bakoitzerako eraikitzeko eta probatzeko kanalizazio bat izatea. Nahiz eta proba oso sinplea izan, gutxienez inplementatzen duzun kodea konpilatzen dela ziurtatuko du.

Etapa honetan galdera honi erantzuten diozu bakoitzean: Nire muntaia probak bildu eta gaindituko ditu, balio al du? Barra baxua dirudi, baina arazo asko konpontzen ditu.

Nola lo egin lasai hodeiko zerbitzu bat duzunean: oinarrizko arkitektura-aholkuak
Ez dago akain hauek ikustea baino ederragorik

Teknologia honetarako Github, CircleCI edo Jenkins ebaluatu ditzakezu.

Karga-orekatzaileak

Beraz, karga-orekatzailea exekutatu nahi dugu trafikoa birbideratzeko eta nodo guztietan karga berdina bermatzeko edo zerbitzuak hutsegite kasuan:

Nola lo egin lasai hodeiko zerbitzu bat duzunean: oinarrizko arkitektura-aholkuak
Karga-orekatzaileak normalean lan ona egiten du trafikoa banatzeko. Praktika onena gehiegi orekatzea da, hutsegite puntu bakar bat izan ez dadin.

Normalean, karga-orekatzaileak erabiltzen duzun hodeian konfiguratzen dira.

RayID, korrelazio ID edo UUID eskaeretarako

Inoiz aurkitu al duzu aplikazioaren errore bat honelako mezu batekin: "Zerbait gaizki joan da. Gorde id hau eta bidali gure laguntza-taldeari"?

Nola lo egin lasai hodeiko zerbitzu bat duzunean: oinarrizko arkitektura-aholkuak
Identifikatzaile esklusibo bat, korrelazio ID, RayID edo aldakuntzaren bat, bere bizitza-zikloan eskaera baten jarraipena egiteko aukera ematen duen identifikatzaile esklusibo bat da. Horri esker, eskaeraren bide osoa erregistroetan jarrai dezakezu.

Nola lo egin lasai hodeiko zerbitzu bat duzunean: oinarrizko arkitektura-aholkuak
Erabiltzaileak eskaera bat egiten dio A sistemari, gero A-k B-rekin harremanetan jartzen du, C-rekin harremanetan jartzen duena, X-n gordetzen du eta, ondoren, eskaera A-ra itzultzen da.

Makina birtualetara urrunetik konektatuko bazenu eta eskaeraren bidea trazatzen saiatuko bazenu (eta eskuz zein deiak egiten ari diren korrelatzen), zoratu egingo zinateke. Identifikatzaile bakarra izateak bizitza askoz errazten du. Hau da zure zerbitzua hazten doan heinean denbora aurrezteko egin dezakezun gauzarik errazenetako bat.

Bitarteko maila

Hemengo aholkuak aurrekoak baino konplexuagoak dira, baina tresna egokiek lana errazten dute, inbertsioaren itzulera emanez enpresa txiki eta ertainentzat ere.

Erregistro zentralizatua

Zorionak! 100 makina birtual zabaldu dituzu. Biharamunean, zuzendari nagusia etortzen da eta zerbitzua probatzean jasotako akats batengatik kexatzen da. Goian aipatu dugun dagokion IDaren berri ematen du, baina 100 makinen erregistroetan begiratu beharko duzu kraskatzea eragin zuena aurkitzeko. Eta biharko aurkezpena baino lehen aurkitu behar da.

Hau abentura dibertigarria dirudien arren, hobe da aldizkari guztiak leku bakarrean bilatzeko gaitasuna duzula ziurtatzea. Erregistroak zentralizatzeko arazoa konpondu nuen ELK pilaren funtzionaltasun integratua erabiliz: bilaketa-bilduma-bilduma onartzen du. Horrek benetan lagunduko du aldizkari zehatz bat aurkitzeko arazoa konpontzen. Hobari gisa, grafikoak eta horrelako beste gauza dibertigarri batzuk sor ditzakezu.

Nola lo egin lasai hodeiko zerbitzu bat duzunean: oinarrizko arkitektura-aholkuak
ELK pilaren funtzionaltasuna

Jarraipen-eragileak

Orain zure zerbitzua martxan dagoela, ondo funtzionatzen duela ziurtatu behar duzu. Horretarako modurik onena hainbat exekutatzen aritzea da agenteak, paraleloki lan egiten dutenak eta funtzionatzen duela eta oinarrizko eragiketak egiten direla egiaztatzen dutenak.

Une honetan hori egiaztatzen duzu exekutatzen ari den eraikuntza ondo sentitzen da eta ondo funtzionatzen du.

Proiektu txiki eta ertainetarako, Postman gomendatzen dut APIak kontrolatzeko eta dokumentatzeko. Baina, oro har, etenaldi bat noiz gertatu den jakiteko eta garaiz jakinarazteko modu bat duzula ziurtatu nahi duzu.

Autoeskalatzea kargaren arabera

Oso sinplea da. VM zerbitzu-eskaerak badituzu eta %80ko memoriaren erabilerara hurbiltzen ari bazara, baliabideak handitu edo VM gehiago gehi ditzakezu klusterera. Eragiketa hauen exekuzio automatikoa bikaina da kargapean potentzia elastikoen aldaketarako. Baina beti kontuz ibili behar duzu zenbat diru gastatzen duzun eta arrazoizko mugak ezarri.

Nola lo egin lasai hodeiko zerbitzu bat duzunean: oinarrizko arkitektura-aholkuak
Hodeiko zerbitzu gehienekin, automatikoki eskalatzeko konfigura dezakezu zerbitzari gehiago edo zerbitzari indartsuagoak erabiliz.

Esperimentu-sistema

Eguneraketak segurtasunez zabaltzeko modu ona erabiltzaileen % 1ek ordubetez zerbait probatu ahal izatea da. Halako mekanismoak martxan ikusi dituzu, noski. Adibidez, Facebook-ek ikusleen zatiei beste kolore bat erakusten die edo letra-tipoaren tamaina aldatzen du erabiltzaileek aldaketak nola hautematen dituzten ikusteko. Horri A/B proba deitzen zaio.

Ezaugarri berri bat askatzea ere esperimentu gisa hasi eta gero nola askatu zehaztu daiteke. Zure zerbitzuan degradazioa eragiten ari den funtzioaren arabera konfigurazioa "gogoratu" edo aldatzeko gaitasuna ere lortzen duzu.

Maila aurreratua

Hona hemen gauzatzeko zailak diren aholkuak. Beharbada baliabide apur bat gehiago beharko dituzu, beraz, enpresa txiki edo ertain batek zaila izango du hori kudeatzea.

Inplementazioak urdin-berdeak

Horra deitzen dudana "Erlang"-a zabaltzeko era. Erlang oso erabilia izan zen telefono konpainiak agertu zirenean. Softswitches-ak erabiltzen hasi ziren telefono deiak bideratzeko. Etengailu hauetako softwarearen helburu nagusia sistemaren berritze garaian deiak ez uztea zen. Erlangek modulu berri bat kargatzeko modu polita du aurrekoa huts egin gabe.

Urrats hau karga-orekatzaile baten presentziaren araberakoa da. Imajina dezagun zure softwarearen N bertsioa duzula, eta gero N+1 bertsioa zabaldu nahi duzula. 

Duzu genezake zerbitzua gelditu eta hurrengo bertsioa kaleratu zure erabiltzaileentzat funtzionatzen duen momentuan eta lortu geldialdi bat. Baina demagun duzula benetan SLA baldintza zorrotzak. Beraz, SLA % 99,99ak esan nahi du lineaz kanpo joan zaitezkeela bakarrik urtean 52 minutuz.

Benetan adierazleak lortu nahi badituzu, bi inplementazio behar dituzu aldi berean: 

  • oraintxe dagoena (N);
  • hurrengo bertsioa (N+1). 

Karga-orekatzaileari esaten diozu trafikoaren ehuneko bat bertsio berrira birbideratzeko (N+1) erregresioak aktiboki kontrolatzen dituzun bitartean.

Nola lo egin lasai hodeiko zerbitzu bat duzunean: oinarrizko arkitektura-aholkuak
Hemen ondo funtzionatzen duen N inplementazio berdea dugu. Inplementazio honen hurrengo bertsiora pasatzen saiatzen ari gara

Lehenik eta behin, proba txiki bat bidaliko dugu gure N+1 inplementazioak trafiko kopuru txikiarekin funtzionatzen duen ikusteko:

Nola lo egin lasai hodeiko zerbitzu bat duzunean: oinarrizko arkitektura-aholkuak
Azkenik, kontrol automatizatu multzo bat dugu, azkenean gure inplementazioa amaitu arte exekutatzen ditugunak. Zuk bada oso oso kontuz, zure N inplementazioa betirako gorde dezakezu atzera atzera egiteko, erregresio txarra izanez gero:

Nola lo egin lasai hodeiko zerbitzu bat duzunean: oinarrizko arkitektura-aholkuak
Are maila aurreratuago batera joan nahi baduzu, utzi inplementazio urdin-berdean dagoen guztia automatikoki exekutatzen.

Anomalia detektatzea eta arintze automatikoa

Erregistro zentralizatua eta erregistro-bilketa ona dituzula kontuan hartuta, dagoeneko helburu altuagoak ezar ditzakezu. Adibidez, porrotak modu proaktiboan aurreikustea. Funtzioak monitoreetan eta erregistroetan jarraitzen dira eta hainbat diagrama eraikitzen dira, eta aldez aurretik iragar dezakezu zer gertatuko den:

Nola lo egin lasai hodeiko zerbitzu bat duzunean: oinarrizko arkitektura-aholkuak
Behin anomaliak detektatuta, zerbitzuak ematen dituen pista batzuk aztertzen hasten zara. Adibidez, PUZaren kargaren igoerak disko gogor batek huts egiten duela adieraz dezake, eta eskaeren igoerak eskalatu behar duzula adieraz dezake. Datu estatistiko mota honek zerbitzua proaktiboa egiteko aukera ematen du.

Ikuspegi hauekin, edozein dimentsiotan eska dezakezu eta makinen, datu-baseen, konexioen eta bestelako baliabideen ezaugarriak modu proaktibo eta erreaktiboan alda ditzakezu.

Hori da dena!

Lehentasun-zerrenda honek arazo asko aurreztuko ditu hodeiko zerbitzu bat planteatzen ari bazara.

Jatorrizko artikuluaren egileak irakurleak iruzkinak utzi eta aldaketak egitera gonbidatzen ditu. Artikulua kode ireki gisa banatzen da, egilearen tira eskaerak onartzen du Github-en.

Zer gehiago irakurri gaiari buruz:

  1. Joan eta CPU cacheak
  2. Kubernetes pirateria izpirituan inplementatzeko txantiloi batekin
  3. Gure kanala Around Kubernetes Telegram-en

Iturria: www.habr.com

Gehitu iruzkin berria