Service mesh'i kasutusstsenaariumid

Service mesh'i kasutusstsenaariumid

MĂ€rkus tĂ”lke kohta.: artikli autor (Luc Perkins) — CNCF-i arendaja toetaja, mis on koduks avatud lĂ€htekoodiga projektidele nagu Linkerd, SMI (Service Mesh Interface) ja Kuma (muide, kas olete kunagi mĂ”elnud, miks see nimekiri ei sisalda Istio?..). Korrates enda katset tuua DevOps kogukonda paremat arusaamist trendist, mida nimelt nimetatakse „teenuse vĂ”rguks“, toob ta vĂ€lja 16 iseloomulikku omadust, mida sellised lahendused pakuvad.

TĂ€na teenuste vĂ”rk ― ĂŒks kuumemaid teemasid tarkvaraarenduses (ja see on tĂ€iesti Ă”igustatud!). Ma pean seda tehnoloogiat uskumatult paljutĂ”otavaks ja unistan, et saan nĂ€ha selle laialdast levikut (loomulikult, kui see on mĂ”istlik). Siiski on see enamikule inimestele endiselt ĂŒmbritsetud mĂŒstilisuse auraga. Samuti isegi need, kes on hĂ€sti tuttavad sellega, tihtipeale raskendavad selle eeliste ja sisu sĂ”nastamist (sealhulgas teie alandlik teenija). Artiklis pĂŒĂŒan olukorda parandada, loetledes erinevad kasutusstsenaariumid „teenuse vĂ”rkude“*.

* MĂ€rk. tĂ”lk.: siin ja edaspidi artiklis kasutatakse just sellist tĂ”lget („teenuse vĂ”rk“) endiselt uue termini service mesh jaoks.

Kuid enne tahtsin mÀrkida mÔningaid asju:

  • Ma pole kunagi töötanud teenuse vĂ”rkudega ja pole neid kasutanud vĂ€ljaspool projekte, mis on loodud minu hariduse nimel. Teisest kĂŒljest olen just mina kirjutanud hulga dokumentatsiooni Twitteri ettevĂ”tte sise-teenuse vĂ”rgu kohta 2015. aastal (toona ei olnud see isegi veel „teenuse vĂ”rk“ nagu nimetud) ja osalenud veebisaidi ja dokumentatsiooni arenduses Linkerd, nii et see tĂ€hendab midagi.
  • Minu nimekiri on umbkaudne ja mitte tĂ€ielik. On tĂ€iesti vĂ”imalik, et mulle on tundmatud kasutusstsenaariumid, ja ajaga kindlasti tekivad uued variandid, kui tehnoloogia areneb ja selle populaarsus suureneb.
  • Samas ei toeta kaugelki iga olemasolev teenuse vĂ”rgu rakendus kĂ”iki nimetatud kasutusjuhtumeid. Seega tuleks minu vĂ€ljendeid, nagu „teenuse vĂ”rk vĂ”ib
“, lugeda kui „individuaalsed, ja vĂ”ib-olla kĂ”ik populaarsed teenuse vĂ”rgu rakendused vĂ”ivad
“.
  • NĂ€idete jĂ€rjekord ei oma mingit tĂ€htsust.

LĂŒhike nimekiri:

  • teenuste avastamine;
  • krĂŒpteerimine;
  • autentimine ja autoriseerimine;
  • koormuse tasakaalustamine;
  • circuit breaking;
  • automaatne skaleerimine;
  • kanarikĂŒlgede rakendused;
  • sinine-roheline rakendused;
  • olekute kontroll;
  • koormuse vĂ€hendamine;
  • liikluse peegeldamine;
  • isoleerimine;
  • pĂ€ringute kiiruspiiramine, korduvad katsed ja ajaks;
  • telemeetria;
  • auditeerimine;
  • visualiseerimine.

1. Teenuste avastamine

TL;DR: Ühendage vĂ”rgu teised teenused lihtsate nimede abil.

Teenustel peab olema vĂ”imalus automaatselt ĂŒksteist 'leida' sobivate nimede kaudu — nĂ€iteks, service.api.production, pets/staging vĂ”i cassandra. Pilveteenused on tuntud oma paindlikkuse poolest, ja ĂŒhe nime taga vĂ”ib olla mitu teenuse eksemplari. Selge on, et sellises olukorras on fĂŒĂŒsiliselt vĂ”imatu kĂ”iki IP-aadresse kĂ”vakoodida.

Lisaks, kui ĂŒks teenus leiab teise, peab tal olema vĂ”imalus sellele teenusele pĂ€ringuid saata, kartmata, et need jĂ”uavad selle mitte töötava eksemplari juurde. TeisisĂ”nu, service mesh peab jĂ€lgima kĂ”igi teenuse eksemplaride töökindlust ja hoida hostide nimekirja maksimaalselt ajakohasena.

Iga service mesh rakendab teenuste avastamise mehhanismi omal moel. Praegu on kĂ”ige levinum meetod delegeerida see vĂ€listele protsessidele nagu DNS Kubernetes. Varem kasutasime Twitteris nende eesmĂ€rkide saavutamiseks nimede sĂŒsteemi Finagle. Lisaks vĂ”imaldab service mesh tehnoloogia kasutajate nimetamismehhanismide loomise (kuigi ma pole veel kohanud ĂŒhtegi SM-i rakendust, kus seda funktsiooni oleks rakendatud).

2. KrĂŒptimine

TL;DR: Vabanege krĂŒpteerimata liiklusest teenuste vahel ning laske sellel protsessil olla automatiseeritud ja skaleeritav.

On meeldiv mĂ”elda, et kurjategijad ei saa teie sisemisse vĂ”rku tungida. DatanĂ€idikud teevad selle ĂŒsna hĂ€sti. Kuid mis juhtub, kui hĂ€kker siiski sisse pÀÀseb? Kas ta saab teha kĂ”ike, mida soovib sisese teenuste liiklusega? Lootkem, et see ei juhtu. Sellise stsenaariumi vĂ€ltimiseks tuleks rakendada null-usaldusvĂ”rku (zero-trust), kus kogu teenuste vahel liikuv liiklus on krĂŒpteeritud. Enamik kaasaegseid teenuste vĂ”rke saavutab selle vastastikuse TLS (mutual TLS, mTLS) abil. MĂ”ningatel juhtudel töötab mTLS terve cloudides ja klastrites (ma arvan, et ka planeetidevahelised suhtlused on kunagi sarnased).

Kui muidugi, mTLS service mesh ei ole kohustuslik. Iga teenus saab ise hoolitseda oma TLS-i eest, kuid see tĂ€hendab, et tuleb leida viis sertifikaatide genereerimiseks, nende jagamiseks teenuse hostide vahel ning rakendusse koodi lisamiseks, mis laadib need sertifikaadid failidest. Ja Ă€rge unustage sertifikaatide ajakohastamist teatud ajavahemike jĂ€rel. Teenusete vĂ”rgud automatiseerivad mTLS-i selliste sĂŒsteemide abil nagu SPIFFE, mis omakorda automatiseerivad sertifikaatide vĂ€ljastamise ja rotatsiooni protsessi.

3. Autentimine ja autoriseerimine

TL;DR: MÀÀrake, kes on pÀringu algataja, ja mÀÀratlege, mida tohib tal teha, veel enne, kui pÀring jÔuab teenuseni.

Teenused tahavad sageli teada, kes kes teeb pÀringu (autentimine), ning kasutades seda teavet, otsustavad, mida kas sellele subjektile on lubatud teha (autoriseerimine). Antud juhul vÔib `kes` asemele tulla:

  1. Teised teenused. Seda nimetatakse "peer'i" autentimiseks. ". NÀiteks teenustahab pÀÀseda teenusele web db . Teenuse vÔrgud lahendavad sarnaseid probleeme tavaliselt mTLS-i kaudu: sertifikaadid on antud juhul olulise identifikaatorina.MÔned inimesed kasutajad. Seda nimetatakse "pÀringu" autentimiseks.
  2. ". NÀiteks kasutaja haxor69soovib osta uut lampi. Teenuse vÔrgud pakuvad erinevaid mehhanisme, nÀiteks JSON Web Token'id. Paljude meist on tulnud seda rakenduse koodis teha. Tuleb pÀring, vaatame andmebaasi , leiame kasutaja ja vÔrdleme parooli, seejÀrel kontrollime veeru.

    jne. Teenuse vÔrgus toimub see veel enne, kui pÀring teenuseni jÔuab. usersPÀrast seda, kui oleme kindlaks teinud, kellelt pÀring tuli, tuleb mÀÀrata, mida sellele subjektile on lubatud teha. MÔned teenuse vÔrgud vÔimaldavad mÀÀrata pÔhipoliitika (kes ja mida tohib teha) YAML-failide vÔi kÀsurea kaudu, samas kui teised pakuvad integreerimist raamistikudega nagu permissions . LÔppeesmÀrk on saavutada, et teie teenused vÔtaksid vastu kÔiki pÀringuid, julgelt eeldades, et need pÀrinevad usaldusvÀÀrsest allikast.

see toiming on lubatud. Open Policy Agent4. Koormuse jaotamine ja TL;DR: Jagage koormust teenuse eksemplaride vahel kindla mustriga.

4. Koormuse jaotamine

TL;DR: Jagage koormust teenuse eksemplaride vahel kindla mustri jÀrgi.

Teenuset, mis kuuluvad teenuse sektori koosseisu, koosnevad sageli paljusid identsetest eksemplaridest. NĂ€iteks tĂ€na koosneb teenus 5 koopiast, kuid homseks vĂ”ib nende arv tĂ”usta 11-ni. Palve, mis suunatakse cache , tuleks jaotada vastavalt kindlale eesmĂ€rgile. NĂ€iteks minimeerida viivitust vĂ”i maksimeerida tĂ”enĂ€osust, et jĂ”uda töötava eksemplarini. KĂ”ige sagedamini kasutatakse ringja teenindusmeetodit (Round-robin), kuid on ka palju muid — nĂ€iteks kaalutud cache(weighted) palveid (saab valida eelistatud sihid), ringkasutamine (ring) hashimine (kasutades kooskĂ”lastatud hashimist upstream-hostide jaoks) vĂ”i vĂ€heseima arvu pĂ€ringute meetod (eelistatakse eksemplari, millel on kĂ”ige vĂ€hem pĂ€ringuid). Klassikalistel tasakaalustajatel on ka teisi funktsioone, nagu HTTP va cache ja DDoS kaitse, kuid need ei ole vĂ€ga olulised east-west tĂŒĂŒpi liikluse puhul (st liikluse puhul, mis liikumisel on andmekeskuse piires — tĂ”lkija mĂ€rkus) (teenuse mesh tĂŒĂŒpiline rakendusala). Loomulikult ei ole teenuse mesh kasutamine koormuse tasakaalustamiseks vajalik, kuid see vĂ”imaldab mÀÀrata ja kontrollida tasakaalustamisstrateegiaid iga teenuse jaoks kesksetelt halduskihtidelt, elimineerides vajaduse kĂ€ivitada ja seadistada eraldi tasakaalustajaid vĂ”rgu kihis.

5. TsĂŒkli katkestamine (circuit breaking)

TL;DR: Peata liiklus probleemse teenuse poole ja kontrolli kahju halvimatel juhtudel.

Kui mingil pĂ”hjusel teenus ei suuda liiklust hallata, pakub teenuse mesh mitmeid lahendusi sellele probleemile (teistest rÀÀgitakse vastavates osades). TsĂŒkli katkestamine on kĂ”ige rangem variant teenuse liiklusest vĂ€ljalĂŒlitamiseks. Kuid see ĂŒksi pole mĂ”ttekas — on vajalik varuplaan. VĂ”ib ettenĂ€ha tagasilööki

backpressure (teenustele, mis teevad pÀringuid (Àra unusta oma teenuse mesh'i selle jaoks seadistada!), vÔi nÀiteks vÀrvida staatuse lehe punaseks ja suunata kasutajad jÀrgmisele variandile lehe kohta, kus on "langemisvaal" ("Twitter is down").) Teenuse mesh'id vÔimaldavad mitte ainult mÀÀrata,

millal vĂ€ljalĂŒlitamine toimub ja jĂ€rgneb vĂ€ljalĂŒlitamine ja mida selle jĂ€rgneb. Sellisel juhul vĂ”ib "millal" hĂ”lmata mistahes mÀÀratud parameetrite kombinatsiooni: ĂŒldine arv pĂ€ringuid teatud aja jooksul, samaaegsete ĂŒhenduste arv, ootel pĂ€ringud, aktiivsed uuesti katsetamised jne.

Te tÔenÀoliselt ei soovi circuit breaking'ut kuritarvitada, kuid on hea teada, et ÀÀrmuslikuks juhuks on olemas varuplaan.

6. Automaatne skaleerimine

TL;DR: Suurendage vÔi vÀhendage teenuse eksemplaride arvu sÔltuvalt mÀÀratud kriteeriumidest.

Teenuse mesh’id ei ole planeerijad, seega nad ei teosta skaleerimist iseseisvalt. Kuid nad saavad edastada teavet, mille pĂ”hjal planeerijad otsuseid teevad. Kuna teenuse mesh’id pÀÀsevad ligi kogu teenuste vahelisele liiklusele, omavad nad ulatuslikku teavet selle kohta, mis toimub: millised teenused on probleemides, millised on tĂ€ielikult alakoormatud (neile eraldatud ressursid jÀÀvad kasutamata) jne.

NĂ€iteks Kubernetes skaleerib teenuseid vastavalt pod’ide CPU ja mĂ€lu kasutusele (vt meie ettekannet «Automaatskaladamine ja ressursihaldus Kuberneteses» — tĂ”lkija mĂ€rkus), kuid kui otsustate skaleerida mis tahes muude nĂ€itajate alusel (meie puhul — liiklusega seotud), on vajalik eraldi mÔÔdik. Juhend sellisele nĂ€itab, kuidas seda teha Envoy, Istio ja Prometheus, kuid ise protsess on ĂŒsna keeruline. Me sooviksime, et teenuse mesh seda lihtsustaks, vĂ”imaldades lihtsalt mÀÀrata tingimused nagu „suurenda teenuse eksemplaride arvu, auth, kui ootel pĂ€ringute arv ĂŒletab kĂŒnnise vÀÀrtuse ĂŒhe minuti jooksul.“

7. Kanaride juurutamine

TL;DR: Testige uusi funktsioone vÔi teenuse versioone vÀikese kasutajate alamhulga peal.

Oletat, et arendad mingit SaaS-projekti ja soovid vĂ€lja tuua selle uue Ă€geda versiooni. Oled seda testinud stagingus ja see töötab suurepĂ€raselt. Kuid siiski on sul teatavad mured selle kĂ€itumise osas reaalses keskkonnas. TeisisĂ”nu, tuleb uut versiooni testida reaalsete ĂŒlesannete peal, riskimata samas kasutajate usaldusvÀÀrsusega. Kanarade juurutamised sobivad selleks suurepĂ€raselt. Need vĂ”imaldavad demonstreerida uut funktsiooni teatud alamhulgale kasutajatest. See alamhulk vĂ”ib koosneda kĂ”ige lojaalsematest kasutajatest vĂ”i nendest, kes töötavad tasuta versiooniga, vĂ”i kasutajatest, kes on vĂ€ljendanud soovi olla "katsealuste" seas.

Teenuse struktuurid teostavad seda, vÔimaldades mÀÀrata kriteeriume, mis mÀÀravad, kes ja millist rakenduse versiooni nÀeb, ning suunavad liiklust vastavalt. Samas ei muutu teenuste enda jaoks midagi. Versioon 1.0 teenusest usub, et kÔik pÀringud tulevad kasutajatelt, kes just seda versiooni peaksid nÀgema, ja versioon 1.1 arvab sama omadest oma kasutajatest. Ja samal ajal saad sa muuta liikluse protsenti vana ja uue versiooni vahel, suunates kasvavat arvu kasutajaid uuele, kui see töötab stabiilselt ja sinu "katsealused" annavad heakskiidu.

8. Sinine-rohelised juurutamised

TL;DR: VÀljalase uus Àge funktsioon, kuid ole valmis kÔik tagasi tooma.

MĂ”te siniste ja roheliste juurutamiste on juurutada uus "sinine" teenus, kĂ€ivitades selle paralleelselt vana "roheline" teenusega. Kui kĂ”ik lĂ€heb sujuvalt ja uus teenus tĂ”estab end hĂ€sti, siis saab vana jĂ€rk-jĂ€rgult vĂ€lja lĂŒlitada. (Kahjuks kordab ĂŒhel pĂ€eval ka see uus "sinine" teenus "roheline" teenuse saatust ja kaob
) Sinised ja rohelised juurutamised erinevad kanarade juurutamistest, kuna uus funktsioon katab kĂ”iki kasutajaid (mitte osa); mĂ”te on siin see, et olla valmis "varusadamaks", kui midagi lĂ€heb valesti.

Teenuse mesh'id pakuvad vĂ€ga mugavat viisi 'sinise' teenuse testimiseks ja viivitamatuks ĂŒleminekuks 'roheline', kui ilmnevad probleemid. RÀÀkimata sellest, et nad annavad hulga teavet (vt allpool punkti 'Telemeetria') 'sinise' töö kohta, mis aitab mĂ”ista, kas see on tĂ€ielikult kasutamiseks valmis.

MÀrkus tÔlke kohta.: Erinevate Kubernetes'i juurutamisstrateegiate (sealhulgas mainitud canary, blue/green ja teiste) kohta saab lugeda selles artiklis.

9. Tervisekontroll

TL;DR: JÀlgige, millised teenuse eksemplarid on töövÔimelised, ja reageerige neile, mis ei ole.

Tervisekontroll (health check) aitab otsustada, kas teenuse eksemplarid on valmis liiklust vastu vÔtma ja töötlema. NÀiteks HTTP-teenuste puhul vÔib tervisekontrolli mude olla GET-pÀring teatud endpoint'ile. /health. Vastus 200 OK tÀhendab, et eksemplar on terve, mistahes muu tÀhendab, et see ei ole valmis liiklust vastu vÔtma. Teenuse mesh'id vÔimaldavad mÀÀrata, kuidas töökindlust kontrollitakse, ja selle sageduse, kui sageli see kontroll toimub. Seda teavet saab seejÀrel kasutada ka muudel eesmÀrkidel - nÀiteks koormuse tasakaalustamiseks ja circuit breaking'uks.

Seega, tervisekontroll ei ole iseseisev kasutusstsenaarium, vaid seda kasutatakse tavaliselt muude eesmĂ€rkide saavutamiseks. Samuti, sĂ”ltuvalt tervisekontrolli tulemustest, vĂ”ivad olla vajalikud vĂ€lised (seoses muude teenuse mesh'ide eesmĂ€rkidega) tegevused: nĂ€iteks oleku lehe vĂ€rskendamine, GitHubis kĂŒsimuse loomine vĂ”i JIRA-s pileti tĂ€itmine. Ja teenuse mesh pakub selle automatiseerimiseks mugavat mehhanismi.

10. Koormuse vÀhendamine (load shedding)

TL;DR: Suunake liiklust ĂŒmber ajutise kasutuse suurenemise korral.

Kui mĂ”ni teenus on liiklusest ĂŒle koormatud, saate ajutiselt suunata osa sellest liiklusest teise kohta (st 'vabastada', 'ĂŒle kanda' (shed) see sinna). NĂ€iteks varu teenusesse vĂ”i andmekeskusesse, vĂ”i pidevasse Pulsar Teema. Selle tulemusena jĂ€tkab teenus osade pĂ€ringute töötlemist, selle asemel et kokku kukkuda ja lĂ”petada kĂ”iki pĂ€ringute töötlemine. Koormuse vabastamine on eelistatum kui ahel katkestamine, kuid siiski ei tohiks seda kuritarvitada. See aitab vĂ€ltida ahelreaktsioone, mille tulemusena kukuvad allapoole suunatud teenused.

11. Paraleliseerimine/Traffic mirroring

TL;DR: Saatke ĂŒks pĂ€ring korraga mitmesse kohta.

MÔnikord on vajalik saata pÀring (vÔi teatud valik pÀringute vahel) korraga mitmesse teenusesse. Iseloomulik nÀide on osa tootmistrafikust saatmine katsetamisteenusele. Tootmisveebiserver saadab pÀringu allolevale teenusele products.production ja ainult sellele. Teenuste vÔrk kopeerib selle pÀringu nutikalt ja saadab selle edasi products.staging, millest veebiserver isegi ei kahtlustagi.

Veel ĂŒks seotud teenuste vĂ”rgustiku kasutuse vĂ”imalik stsenaarium, mida saab ellu viia paralleelsete trafiku haldamise ĂŒle, on tagasiside testimine. See hĂ”lmab samade pĂ€ringute saatmist erinevatele teenuse versioonidele ja kontrollimist, kas kĂ”ik versioonid kĂ€ituvad ĂŒhtmoodi. Ma ei ole veel kohanud teenuste vĂ”rku integreeritud tagasiside testimise sĂŒsteemiga nagu Diffy, kuid idee ise tundub paljutĂ”otav.

12. Isolatsioon

TL;DR: Jagage oma teenuste vÔrgu mini-vÔrkudeks.

Tuntud ka kui segmentatsioon, isolatsioon on kunst jagada teenuste vĂ”rk loogiliselt eraldatud segmentideks, mis ei tea ĂŒksteisest midagi. Isolatsioon on mĂ”neti sarnane virtuaalsete eravĂ”rkude loomisele. Peamine erinevus on see, et saate endiselt kasutada kĂ”iki teenuste vĂ”rgu eeliseid (nagu teenuste avastamine), kuid lisanduva turvalisusega. NĂ€iteks, kui kurjategija suudab tungida teenusesse ĂŒhes alamvĂ”rgus, ei saa ta nĂ€ha, millised teenused töötavad teistes alamvĂ”rkudes, ega nende liiklust peata.

Lisaks vÔivad eelised olla ka organisatsioonilised. VÔib-olla soovite jagada teenuseid alamvÔrkudeks, sÔltuvalt ettevÔtte struktuurist ja vabastada arendajad kognitiivsest koormast, mis tuleneb vajadusest meeles pidada kogu teenuste vÔrku.

13. PĂ€ringute sageduse piiramine, uuesti proovimine ja ajutaktid

TL;DR: Pole enam pea koodibaasi lisama tĂ”husaid pĂ€ringute haldamise ĂŒlesandeid.

KĂ”iki neid asju vĂ”iks kĂ€sitleda kui eraldi kasutusjuhtumeid, kuid otsustasin need kombineerida ĂŒhe ĂŒhise omaduse tĂ”ttu: nad vĂ”tavad endale pĂ€ringute elutsĂŒkli haldamise ĂŒlesandeid, mis tavaliselt on rakenduste raamatukogude kohustus. Kui arendate Ruby on Rails veebiserverit (mis ei ole integreeritud teenuste vĂ”rgustikuga), mis teeb pĂ€ringuid taustteenustele lĂ€bi gRPC, peab rakendus ise otsustama, mida teha, kui N pĂ€ringut ebaĂ”nnestub. Samuti tuleb vĂ€lja selgitada, kui palju liiklust need teenused suudavad töödelda ja 'hardcode' need parameetrid spetsiaalse raamatukogu abil. Veelgi enam, rakendus peab otsustama, millal on aeg loobuda ja lasta pĂ€ringul aeguda (timeout). KĂ”igi ĂŒlaltoodud parameetrite muutmiseks tuleb veebiserver peatada, uuesti konfigureerida ja uuesti kĂ€ivitada.

Selliste ĂŒlesannete edastamine teenuste vĂ”rgustikku tĂ€hendab mitte ainult seda, et teenuste arendajad ei pea nende pĂ€rast muretsema, vaid ka seda, et neid saab vaadata globaalsetest vaatenurkadest. Kui on keeruline teenuste ahel, nĂ€iteks A → B → C → D → E, tuleb arvestada kogu pĂ€ringu elutsĂŒkliga. Kui on eesmĂ€rk pikendada teenuse C timeout'e, on loogiline seda teha korraga, mitte osade kaupa: uuendades teenuse koodi ja oodates, kuni tĂ”mmispĂ€ring on vastu vĂ”etud ja CI-sĂŒsteem kĂ€ivitab uuendatud teenuse.

14. Telemeetria

TL;DR: Koguge kogu vajalik (ja mitte nii vajalik) teave teenustelt.

Telemeetria on ĂŒldtermĂ­n, mis hĂ”lmab metrikate, jaotatud jĂ€lgimise ja logide kogumist. Teenuste vĂ”rgustikud pakuvad mehhanisme kolme erineva andmetĂŒĂŒbi kogumiseks ja töötlemiseks. Siin muutub asi veidi ebamugavaks, kuna vĂ”imalike variantide arv on liiga suur. Metrikate kogumiseks on Prometheus ja teisi tööriistu, logide kogumiseks vĂ”ib kasutada fluentd, Loki, Vector ja palju muud. (nĂ€iteks ClickHouse meie loghouse K8s jaoks — tĂ”lke mĂ€rk.), jaotatud jĂ€lgimise jaoks on Jaeger jne. Iga teenuste vĂ”rgu struktuur vĂ”ib toetada ĂŒhte tööriista ja mitte toetada teisi. Huvitav on nĂ€ha, kas projekt Open Telemetry suudab tagada mingit konvergentsi.

Antud juhul on service meshi tehnoloogia eelis see, et sidecar-konteinerid saavad pĂ”himĂ”tteliselt koguda kĂ”ik ĂŒlalnimetatud andmed oma teenustest. TeisisĂ”nu, teil on kĂ€sutuses ĂŒhtne telemeetria kogumise sĂŒsteem ja service mesh suudab seda teavet erinevate meetoditega töödelda. NĂ€iteks:

  • logida mĂ”ne teenuse logisid CLI-s;
  • jĂ€lgida pĂ€ringute mahtu service meshi juhtpaneelilt;
  • koguda jaotatud jĂ€lgimisi ning suunata need sĂŒsteemi nagu Jaeger.

Pane tĂ€hele, subjektiivne arvamus: Üldiselt on telemeetriaga tegelemine ala, kuhu teenusvĂ”rgu tugev sekkumine on soovimatu. Alusinfo kogumine ja mĂ”nede 'kuldsete mÔÔdikute', nagu eduka pĂ€ringu protsent ja viivitused, jĂ€lgimine on normaalne, kuid loodame, et me ei saa tunnistajaks Frankensteini stekkide tekkimisele, mis pĂŒĂŒavad asendada spetsialiseeritud sĂŒsteeme, millest mĂ”ned on end juba hĂ€sti tĂ”estanud ja on hĂ€sti uuritud.

15. Audit

TL;DR: Kes unustab ajaloo Ôppetunnid, on hukule mÀÀratud need kordama.

Audit on kunst jĂ€lgida olulisi sĂŒndmusi sĂŒsteemis. Service meshi puhul vĂ”ib see tĂ€hendada jĂ€lgimist, kes on teinud pĂ€ringuid konkreetsetele endpoint'idele teatud teenustes vĂ”i kui mitu korda on viimase kuu jooksul toimunud mingisugune sĂŒndmus, mis on seotud turvalisusega.

On selge, et audit on vĂ€ga tihedalt seotud telemeetriga. Erinevus seisneb siiski selles, et telemeetriat seostatakse tavaliselt selliste asjadega nagu jĂ”udlus ja tehniline tĂ€psus, samas kui audit vĂ”ib kĂ€sitleda Ă”iguslikke ja muid kĂŒsimusi, mis ulatuvad vĂ€ljapoole rangelt tehnilist sfÀÀri (nt GDPR-i – Euroopa Liidu isikuandmete kaitse mÀÀruse – nĂ”uetele vastavus).

16. Visualiseerimine

TL;DR: Elagu React.js – vÀÀritu allikas veidratest liidestest.

VÔib-olla on sobivam termin, kuid mina ei tea seda. Pean silmas service meshi vÔi selle komponentide graafilist esitamist. Need visualiseerimised vÔivad sisaldada nÀidikuid, nagu keskmised viivitused, sidecar-konteinerite konfigureerimise teave, tervisekontrollide tulemused ja teated.

Töö teeninduspÔhises keskkonnas kaasneb palju tugevama kognitiivse koormusega vÔrreldes Tema Majesteedi Monoliidiga. SeetÔttu tuleks kognitiivset survet vÀhendada igal vÔimalikul moel. Tavaline graafiline liides service mesh'ile, kus saab nupule klikata ja soovitud tulemus kÀtte saada, vÔib olla otsustava tÀhtsusega selle tehnoloogia populaarsuse kasvule.

Ei kuulunud nimekirja

Alguses kavatsesin nimekirja lisada veel paar kasutusjuhtu, kuid otsustasin seda mitte teha. Siin nad on koos minu otsuse pÔhjustega:

  • Mitme andmekeskuse. Minu arvates ei ole see niivĂ”rd kasutusjuht kui pigem kitsas ja konkreetne teenindusvĂ”rkude rakendamine vĂ”i teatud funktsioonide kogum, nagu teenuste avastamine.
  • Ingress ja egress. See on seotud valdkond, kuid piirdusin (vĂ”ib-olla kunstlikult) kasutusjuhuga „east-west” liiklus. Ingress ja egress vÀÀrivad eraldi artiklit.

KokkuvÔte

Sellega on hetkeks kÔik! JÀllegi, see nimekiri on vÀga tinglik ja tÔenÀoliselt mitteni. Kui arvate, et midagi jÀi puudu vÔi eksisin milleski, vÔtke mind Twitteris (@lucperkins). Palun jÀrgige etiketti.

P.S. tÔlkijalt

Artikli pealkirja illustratsiooni aluseks on pilt artiklist „What is a Service Mesh (and when to use one)?“ (autor — Gregory MacKinnon). Sel on nĂ€idatud, kuidas osa rakenduste funktsionaalsusest (roheline) on ĂŒle lĂ€inud service mesh'ile, mis tagab nende vahelised ĂŒhendused (sinine).

Lugege ka meie blogist:

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