Teenuse mesh'i kasutusstsenaariumid

Teenuse mesh'i kasutusstsenaariumid

MĂ€rk. tĂ”lge.: Artikli autor on (Luc Perkins) — arenduse advokaat organisatsioonis CNCF, mis on kodu selliste avatud lĂ€hdekoodiga projektide nagu Linkerd, SMI (Service Mesh Interface) ja Kuma (kas olete muide kas mĂ”elnud, miks selle nimekirja ei ole Istio?). Ta ĂŒritab taas tuua DevOps kogukonda paremat arusaamist moderaarsest kĂ”nest nimega 'service mesh', tuues vĂ€lja 16 iseloomulikku vĂ”imalust, mida sellised lahendused pakuvad.

TĂ€na teenuse vĂ”rk ― ĂŒks kuumimaid teemasid tarkvaraarenduse valdkonnas (ja pĂ”hjusega!). Pean seda tehnoloogiat uskumatult perspektiivikaks ja unistan, et olen tunnistajaks selle laiale levikule (muidugi, kui see on mĂ”istlik). Sellegipoolest on see endiselt enamus inimeste jaoks salapĂ€rane. Isegi need, kes on sellega hĂ€sti tuttavad vaevavad sageli selle eeliste vormistamist ja seda, mis see tegelikult on (sealhulgas ka teie alandlik teenija). Artiklis pĂŒĂŒan olukorda parandada, loetledes erinevaid kasutussfÀÀre 'teenuse vĂ”rke'*.

* MÀrk. tÔlk.: selles ja jÀrgnevates artikli lÔikudes kasutatakse sÔna 'teenuse vÔrk' selle veel uue 'service mesh' termini tÔlkena.

Aga kÔigepealt tahan teha mÔned mÀrkused:

  • Ma ei ole kunagi töötanud teenuste vĂ”rkudega ega kasutanud neid projektides, mis on algatatud ainult minu hariduse huvides. Teisest kĂŒljest kirjutasin ma 2015. aastal Twitteri ettevĂ”tte sisemise teenuste vĂ”rgu jaoks palju dokumentatsiooni (sel ajal ei kutsutud seda isegi «teenuste vĂ”rguks») ning osalesin veebisaidi ja dokumentatsiooni arendamises. Linkerd, seega on see midagi.
  • Minu nimekiri on nĂ€itlik ja mittetĂ€ielik. VĂ”ivad olla minu teadmata kasutusstsenaariumid, ja aja jooksul tekivad kindlasti uued variandid, kui tehnoloogia areneb ja muutub populaarsemaks.
  • Samas ei toeta sugugi iga olemasolev teenuste vĂ”rgu rakendus kĂ”iki loetletud kasutusjuhte. SeetĂ”ttu tuleks minu vĂ€ljendeid nagu «teenuste vĂ”rk vĂ”ib...» lugeda kui «erilised ja vĂ”ib-olla kĂ”ik populaarsed teenuste 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;
  • kanarollid;
  • sinine-roheline juurutamine;
  • tervise kontrollimine;
  • koormuse vĂ€hendamine;
  • liikluse peegeldamine;
  • isoleerimine;
  • pĂ€ringute sageduse piiramine, uued katsed ja ajutised katkestused;
  • telemeetrielamu;
  • audiit;
  • visualiseerimine.

1. Teenuste avastamine

TL;DR: Ühendage vĂ”rgu teiste teenustega lihtsate nimede kaudu.

Teenused peavad olema suutelised automaatselt „leidma“ ĂŒksteist adekvaatsete nimede kaudu — nĂ€iteks, service.api.production, pets/staging vĂ”i cassandra. Pilvekeskkonnad on tuntud oma elastsete omaduste poolest ning ĂŒhe nime all vĂ”ib peituda hulgaliselt teenuse eksemplare. On selge, et sellises olukorras on fĂŒĂŒsiliselt vĂ”imatu kĂ”iki IP-aadresse hardcode'ida.

Lisaks peab, kui ĂŒks teenus leiab teise, olema sellel vĂ”imalus saata pĂ€ringuid sellele teenusele, kartmata, et need jĂ”uavad tema mitte töötava eksemplarini. TeisisĂ”nu, teenuste mesh peab jĂ€lgima kĂ”igi teenuste eksemplaride töökĂ”lblikkust ja hoidma hostide nimekirja maksimaalselt ajakohasena.

Iga teenusevaheline vĂ”rgustik rakendab teenuste avastamise mehhanismi omal moel. Praegu on kĂ”ige levinum viis jĂ€rgida vĂ€listes protsessides nagu DNS Kubernetes. Minevikus kasutasime Twitteris selleks nimelt nimed sĂŒsteemi. Finagle. Lisaks vĂ”imaldab teenusevaheline tehnoloogia kasutajate nimede mehhanismide loomist (kuigi ma pole veel kohanud ĂŒhtegi SM-i teostust, millel oleks see funktsionaalsus).

2. KrĂŒpteerimine

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

On hea tunne, et kurjategijad ei saa teie sisevĂ”rku tungida. Tulega töötavad tulemĂŒĂŒrid teevad sellega head tööd. Kuid mis juhtuks, kui hĂ€kker siiski siseneb? Kas ta vĂ”ib teha kĂ”ike, mida soovib, sise-teenuse liiklusega? Lootkem, et seda siiski ei juhtu. Selliste stsenaariumide vĂ€ltimiseks tuleks rakendada null usalduse vĂ”rgustikku, kus kogu liiklus teenuste vahel on krĂŒpteeritud. Enamik kaasaegseid teenusevĂ”rke saavutab seda vastastikuse TLS (mutual TLS, mTLS). MĂ”nes olukorras töötab mTLS kogu pilve- ja klastrikeskkondades (ma arvan, et ĂŒhel pĂ€eval on ka planeetidevahelised suhtlused sarnased).

Muidugi, mTLS teenuse vĂ”rgu jaoks ei ole kohustuslik. Iga teenus saab ise hoolitseda oma TLS-i eest, kuid see tĂ€hendab, et tuleb leida viis sertifikaatide genereerimiseks, nende jaotamiseks teenuse hostidele ning rakendusse koodi kaasamiseks, mis laadib need sertifikaadid failidest. Ja Ă€rge unustage ka sertifikaatide uuendamist kindlate ajavahemike jĂ€rel. Teenuste vĂ”rgud automatiseerivad mTLS-i sĂŒsteemide, nagu SPIFFE, abil, mis omakorda automatiseerivad sertifikaatide vĂ€ljastamise ja rĂŒndamise protsessi.

3. Autentimine ja autoriseerimine

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

Teenused soovivad tihti teada, kes kes teeb pÀringu (autentimine), ja kasutades seda teavet, otsustavad, mida kas antud subjektile on lubatud tegutseda (autoriseerimine). Selles kontekstis vÔib mÔiste 'kes' hÔlmata:

  1. Teised teenused. Seda nimetatakse 'peer' autentimiseks. peer'а». NÀiteks, teenus web soovib pÀÀseda teenusele db. TeenusvÔrgud lahendavad tavaliselt selliseid probleeme mTLS abil: sertifikaadid toimivad antud juhul vajaliku identifikaatorina.
  2. MÔned kasutajad-inimesed. Seda nimetatakse "autentimiseks pÀringu». NÀiteks, kasutaja haxor69 soovib osta uut lampi. TeenusvÔrgud pakuvad erinevaid mehhanisme, nÀiteks JSON Web Tokens.

    Paljude meist on olnud selle tegemine rakenduskoodis. Tuleb pÀring, vaatame tabelit users, leiame kasutaja ja vÔrdleme parooli, seejÀrel kontrollime vÀlja permissions jne. TeenusvÔrgu puhul toimub see juba enne, kui pÀring jÔuab teenuseni.

PÀrast seda, kui oleme kindlaks teinud, kellega pÀring tulnud on, tuleb vÀlja selgitada, mida sellele subjektile teha lubatakse. MÔned teenusvÔrgud vÔimaldavad mÀÀrata pÔhipoliitikaid (kes ja mida vÔib teha) YAML-failide vÔi kÀsurea vormis, samas kui teised pakuvad integreerimist nagu Open Policy Agent. LÔppeesmÀrgiks on saavutada, et teie teenused aktsepteeriksid iga pÀringu, julgelt eeldades, et need pÀrinevad usaldusvÀÀrsest allikast. ja see tegevus on lubatud.

4. Koormuse tasakaalustamine

TL;DR: Jagage koormust teenuse eksemplaride vahel kindla mustri alusel.

„Teenuse“ koosseisus on teenuse grupis vĂ€ga sageli palju identseid eksemplare. NĂ€iteks tĂ€na koosneb teenus cache 5 eksemplarist, samas kui homseks vĂ”ib nende arv tĂ”usta 11-ni. Taotlused, mis suunatakse cache, tuleks jaotada vastavalt kindlale eesmĂ€rgile. NĂ€iteks vĂ€hendada latentsust vĂ”i maksimeerida tĂ”enĂ€osust, et jĂ”uate toimiva eksemplari juurde. KĂ”ige sagedamini kasutatakse tsĂŒklilist teenindusmeetodit (Round-robin), kuid on olemas ka palju teisi — nĂ€iteks kaalutud (weighted) taotlused (vĂ”ite valida eelistatud eesmĂ€rgid), rĂ”ngas (ring) hashimine (kasutades kooskĂ”lastatud hashimist upstream-hostide jaoks) vĂ”i vĂ€heseima taotluste arvu meetod (eelistatakse eksemplari, millel on kĂ”ige vĂ€hem taotlusi).

Klassikalised koormuse jaoturid omavad ka muid funktsioone, nagu HTTP va cache ja DDoS kaitse, kuid need ei ole eriti relevantsed idalÀÀne liikluse (st liikluse, mis toimub andmekeskuses – tĂ”lke mĂ€rkus) jaoks (tĂŒĂŒpiline rakenduskoht teenusevĂ”rgus). Loomulikult pole koormuse jaotamiseks vĂ”imalik kasutada teenusevĂ”rku, kuid see vĂ”imaldab mÀÀrata ja hallata jaotuste poliitikaid iga teenuse jaoks tsentraliseeritud halduskihtidega, eemaldades seelĂ€bi vajaduse kĂ€itada ja konfigureerida eraldi jaotureid vĂ”rgusteemis.

5. Ahela katkestamine (circuit breaking)

TL;DR: Peatage liiklus probleemse teenuse juurde ja kontrollige kahjustusi halvimates stsenaariumides.

Kui mingil pĂ”hjusel teenus ei suuda liiklust taluda, siis teenusevĂ”rk pakub mitmeid vĂ”imalusi selle probleemi lahendamiseks (teistest rÀÀgitakse vastavates jaotistes). Ahela katkestamine on kĂ”ige rangem variant teenuse liiklusest vĂ€ljalĂŒlitamiseks. Kuid sellel endal pole mĂ”tet – vajalik on varuplaan. See vĂ”ib sisaldada tagasivoolu. (tagasivool) teenuste jaoks, mis tĂ€idavad pĂ€ringute, (kuid Ă€rge unustage oma teenuseteed selle jaoks konfigureerida!), vĂ”i nĂ€iteks staatuse lehe punaseks vĂ€rvimine ja kasutajate suunamine uuesti lehe versioonile koos «langemise kits» («Twitter on maas»).

TeenusevĂ”rgud vĂ”imaldavad mitte ainult mÀÀrata, millal tuleb katkestamine ja mida mida see jĂ€rgneb. Selles kontekstis «millal» vĂ”ib hĂ”lmata mis tahes mÀÀratud parameetrite kombinatsiooni: ĂŒldine pĂ€ringute arv teatud ajavahemikus, samadedikat ĂŒhendused, ootel pĂ€ringud, aktiivsed uuesti proovimise katsetused jne.

Te tĂ”enĂ€oliselt ei soovi circiit breaking’ut kuritarvitada, kuid on hea teada, et ÀÀrmuslike olukordade jaoks on olemas varuplaan.

6. Automaatne skaalaimine

TL;DR: Suurendage vÔi vÀhendage teenuse eksemplaride arvu vastavalt mÀÀratud kriteeriumidele.

TeenusevÔrgud ei ole planeerijad, seega nad ei tÀida skaalate ise. Kuid nad saavad edastada teavet, mille alusel planeerijad otsuseid teevad. Kuna service mesh'id saavad ligi kogu teenustevahelisele liiklusele, omavad nad ulatuslikku teavet selle kohta, mis toimub: millised teenused kogevad probleeme, millised on minimaalselt koormatud (neile mÀÀratud ressursid raisatakse) jne.

NĂ€iteks Kubernetes skaala teenuseid vastavalt pod'ide CPU ja mĂ€lu kasutusele. (vt meie ettekannet „Automaatne skaala ja ressursside haldamine Kuberneteses» — tĂ”lk. mĂ€rkus), kuid kui otsustate teostada skaalatamise mĂ”ne muu nĂ€itaja alusel (meie puhul - liiklusega seotud), on vajalik eriline mÔÔdik. Juhend taolise nĂ€itab, kuidas seda teha kasutades Envoy, Istio ja Prometheus, kuid kogu protsess on ĂŒsna keeruline. Me tahaksime, et service mesh lihtsustaks seda, lubades lihtsalt seada tingimused nagu „suurenda teenuse eksemplaride arvu, auth, kui ootejĂ€rjekorras olevate pĂ€ringute arv ĂŒletab ĂŒlempiiri minuti jooksul.”

7. Kanaride juurutused

TL;DR: Katsetage uusi funktsioone vÔi teenuse versioone teatud kasutajate alagruppide peal.

Oletame, et arendate uut SaaS-toodet ja kavatsete selle uue versiooni vĂ€lja tuua. Olete selle testinud staging keskkonnas ja see töötab suurepĂ€raselt. Siiski on teil mured selle tĂ”hususe ĂŒle reaalses keskkonnas. TeisisĂ”nu, peate kontrollima uut versiooni pĂ€ris ĂŒlesannete peal, riskimata samal ajal kasutajate usaldusega. Kanaride juurutamised sobivad selleks suurepĂ€raselt. Need vĂ”imaldavad tutvustada uut funktsiooni teatud valitud kasutajatele. See valik vĂ”ib koosneda kĂ”ige lojaalsetest kasutajatest, tasuta versiooniga töötavatest kasutajatest vĂ”i neist, kes on vĂ€ljendanud soovi olla 'katsealuseks'.

Teenusmesh'id rakendavad seda, vĂ”imaldades mÀÀrata kriteeriumid, mis mÀÀravad, kes ja millist rakenduse versiooni nĂ€eb, ning suunavad liiklust vastavalt. Teenuste jaoks ei muutu midagi. Teenuse versioon 1.0 arvab, et kĂ”ik pĂ€ringud tulevad kasutajatelt, kes just selle versiooni peavad nĂ€gema, ja versioon 1.1 arvab sama oma kasutajate kohta. Samal ajal saate muuta liikluse protsenti vana ja uue versiooni vahel, suunates kasvavat arvu kasutajaid uuele, kui see töötab stabiilselt ja teie “katsealused” annavad heakskiidu.

8. Sinise-rohelised juurutused

TL;DR: Laske vÀlja uus suur funktsioon, kuid olge valmis see kohe tagasi vÔtma.

MĂ”te sinise-roheliste juurutuste on see, et kĂ€ivitatakse uus „sinine” teenus, kĂ€ivitades selle paralleelselt vana, „rohelise” teenusega. Kui kĂ”ik lĂ€heb sujuvalt ja uus teenus tĂ”estab end hĂ€sti, saab vana jĂ€rk-jĂ€rgult vĂ€lja lĂŒlitada. (Kahjuks kordab ka see uus „sinine” teenus kunagi „rohelist” saatust ja kaob
) Sinise-rohelised juurutused erinevad kanarakkudest selle poolest, et uus funktsioon katab kĂ”ik korraga kasutajad (mitte osa); mĂ”te on olla valmis "varupordiks", kui midagi peaks valesti minema.

Teenuste vmessid pakuvad vĂ€ga mugavat viisi "sinise" teenuse testimiseks ja koheseks ĂŒleminekuks töötavale "rohelisele" teenusele, kui probleeme tekib. RÀÀkimata sellest, et nad annavad palju teavet (vt punkt "Telemeetria" allpool) "sinise" töö kohta, mis aitab mĂ”ista, kas see on tĂ€ielikuks kasutamiseks valmis.

MÀrk. tÔlge.: Erinevatest kÀitamisstrateegiatest Kuberneteses (sealhulgas mainitud kanarid, sinine/roheline jne) saab lugeda selles artiklis.

9. Tervise kontrollimine

TL;DR: JÀlgige, millised teenuse eksemplarid on töökorras, ja reageerige nendele, mis enam ei ole.

Tervise kontrollimine (health check) aitab otsustada, kas teenuse eksemplarid on valmis vastu vĂ”tma ja töötlema liiklust. NĂ€iteks HTTP-teenuste puhul vĂ”ib tervise kontrollimine vĂ€lja nĂ€ha kui GET-pĂ€ring teenuse lĂ”pp-punktile /health. Vastus 200 OK tĂ€hendab, et eksemplar on tervislik, kĂ”ik muu - et see ei ole valmis liiklust vastu vĂ”tma. Teenuse mesh’id vĂ”imaldavad mÀÀrata, kuidas ja kui tihti visatakse töövĂ”imekust kontrollitakse. Seda teavet saab seejĂ€rel kasutada ka teiste eesmĂ€rkide tĂ€itmiseks - nĂ€iteks koormuse tasakaalustamiseks ja circuit breaking'uks.

Seega on tervise kontroll mitte iseseisev kasutusstsenaarium, vaid seda kasutatakse tavaliselt teiste eesmÀrkide saavutamiseks. Samuti vÔivad vastavalt tervisekontrollide tulemustele osutuda vajalikuks vÀlised tegevused (seoses teiste teenuse vÔrkude eesmÀrkidega): nÀiteks oleku lehe vÀrskendamine, probleemide loomine GitHubis vÔi JIRA pileti tÀitmine. Ja teenuse mesh pakub mugavat mehhanismi selle kÔikide automatiseerimiseks.

10. Koormuse suunamine (load shedding)

TL;DR: Suunake liiklus vastusena ajutisele kasutamise tÔusule.

Kui mĂ”ni teenus osutub liiklusega ĂŒle koormatud, saate ajutiselt suunata osa sellest liiklusest teise kohta (st 'sĂŒttida', 'valada' (shed) seda sinna). NĂ€iteks varukoopie teenusesse vĂ”i andmekeskusesse, vĂ”i pidevalt Pulsar teema. Seega jĂ€tkab teenus osade pĂ€ringute töötlemist, selle asemel, et tĂ€ielikult kokku kukkuda ja töötlemise lĂ”petada. Koormuse vĂ€hendamine on eelistatum kui ahelate katkestamine, kuid siiski ei tohiks seda kuritarvitada. See aitab vĂ€ltida kaskaadtoimingute ebaĂ”nnestumisi, mis viivad alla downstream-teenuseid.

11. Liikluse paralleelseks jagamiseks/peegeldamiseks

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

MÔnikord tekib vajadus saata pÀring (vÔi teatud valik pÀringuid) kohe mitmesse teenusesse. Iseloomulik nÀide on osa tootmisliiklusest saatmine stseeniteenusesse. Peamine veebiserver tootmises saadab pÀringu allolevale teenusele products.production ja ainult sellele. Samal ajal kopeerib teenuse mesh intelligentselt selle pÀringu ja saadab selle products.staging, millest veebiserver isegi ei tea.

Veel ĂŒks seotud teenusemesh'i kasutusstsenaarium, mille vĂ”ib rakendada liikluse paralleelse jagamise kohal, on regressiooni testimine. See vĂ”imaldab saata samaaegseid pĂ€ringuid erinevatele teenuse versioonidele ja kontrollida, kas kĂ”ik versioonid kĂ€ituvad ĂŒhtemoodi. Mul pole veel kohanud teenusetehase rakendust integreeritud tagasiregresseerimise testimise sĂŒsteemiga nagu Diffy, kuid idee ise tundub paljutĂ”otav.

12. Isolatsioon

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

Tuntud ka kui segmenteerimine, isolatsioon on kunst jagada teenusetehast loogiliselt eraldatud segmentideks, mis ei tea ĂŒksteisest midagi. Isolatsioon sarnaneb virtuaalsete privaatvĂ”rkude loomisega. Peamine erinevus on see, et saate silti kasutada teenusetehase kĂ”iki eeliseid (nĂ€iteks teenuste avastamine), kuid lisatud turvalisusega. NĂ€iteks kui kurjategija suudab tungida teenusesse ĂŒhes alamvĂ”rgus, ei nĂ€e ta, millised teenused on kĂ€imas teistes alamvĂ”rkudes, ega saa nende liiklust katkestada.

Samuti vÔivad eelised olla ka organisatsioonilised. VÔib-olla soovite teenuseid jagada alamvÔrkudesse vastavalt ettevÔtte struktuurile ja vabastada arendajad kognitiivsest koormast, mis tuleneb vajadusest meeles pidada kogu service mesh'i.

13. PĂ€ringute sageduse piiramine, uuesti proovima ja ajaoutsid

TL;DR: Ei ole enam vaja lisada koodibaasi hĂ€davajalikke pĂ€ringute haldamise ĂŒlesandeid.

KĂ”iki neid asju vĂ”iks kĂ€sitleda eraldi kasutusjuhtumitena, kuid otsustasin need ĂŒhendada, kuna neil on ĂŒks ĂŒhine joon: need vĂ”tavad enda kanda pĂ€ringute elutsĂŒkli haldamise ĂŒlesanded, mida tavaliselt töötavad vĂ€lja rakenduste raamatukogud. Kui arendate Ruby on Rails'il pĂ”hinevat veebiserverit (mis ei ole integreeritud service mesh'iga), mis teostab pĂ€ringuid backend-teenustele lĂ€bi gRPC, rakendus peab ise otsustama, mida teha, kui N pĂ€ringut ebaĂ”nnestub. Samuti tuleb vĂ€lja selgitada, kui palju liiklust saavad need teenused töödelda ja need parameetrid 'hardcode' Ă”igete teekide abil. Lisaks peab rakendus otsustama, millal on aeg loobuda ja lasta pĂ€ringul aeguda (timeout). Ja et muuta mĂ”nda ĂŒlaltoodud parameetrit, tuleb veebiserver peatada, ĂŒmber konfigureerida ja uuesti kĂ€ivitada.

Nende ĂŒlesannete edastamine teenuste vĂ”rgule tĂ€hendab mitte ainult seda, et teenuste arendajad ei pea nende ĂŒle mĂ”tlema, vaid ka seda, et neid saab vaadelda laiemalt. Kui kasutatakse keerulist teenuste ahelat, nagu A –> B –> C –> D –> E, tuleb arvesse vĂ”tta kogu pĂ€ringu elutsĂŒklit. Kui on eesmĂ€rk pikendada teenuse C ajalimiite, on mĂ”istlik see kĂ”ikĂŒhel teha, mitte osa kaupa: uuendades teenuse koodi ja oodates, kuni pull request on vastu vĂ”etud ja CI-sĂŒsteem uue teenuse ĂŒles seab.

14. Telemeetria

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

Telemeetriat on ĂŒldtermin, mis hĂ”lmab metrikat, jaotatud jĂ€lgimist ja logisid. Teenuse vĂ”rgud pakuvad mehhanisme nende kolme andmetĂŒĂŒbi kogumiseks ja töötlemiseks. Siin hakkab asi veidi Ă€hmaseks minema, kuna vĂ”imaluste hulk on liiga suur. Metriika kogumiseks on olemas Prometheus ja teised tööriistad, logide kogumiseks vĂ”ib kasutada fluentd, Loki, Vector jne. (nĂ€iteks ClickHouse koos meiega loghouse K8s jaoks — tĂ”lkija mĂ€rkus), jaotatud jĂ€lgimise jaoks on olemas Jaeger jne. Iga teenuse vĂ”rk vĂ”ib toetada mĂ”ndade tööriistu ja mitte toetada teisi. On huvitav nĂ€ha, kas projekt Open Telemetry suudab pakkuda mingit konvergentsi.

Antud juhul on teenuse vĂ”rgu tehnoloogia eelis selles, et sidecar konteinerid vĂ”ivad pĂ”himĂ”tteliselt koguda kĂ”iki eespool loetletud andmeid oma teenustelt. TeisisĂ”nu, teil on kĂ€sutuses ĂŒhtne telemeetriakogumissĂŒsteem ja teenuse vĂ”rk suudab muuta kogu selle teabe töötlemise erinevateks viisideks. NĂ€iteks:

  • logide jĂ€lgimine mĂ”nelt teenuselt CLI-s;
  • taotluste mahu jĂ€lgimine teenuse vĂ”rgu jĂ€lgimisnavigatsioonil;
  • koguda ja suunata hajutatud jĂ€lgimiskuud sĂŒsteemi, nagu Jaeger.

TĂ€helepanu, subjektiivne arvamus: Üldiselt on telemeetriaga selline olukord, kus teenuste vĂ”rgu tugev sekkumine on soovimatu. Alusinfo kogumine ja mĂ”ningate „kuldsete mÔÔdikute” reaalajas jĂ€lgimine, nagu nĂ€iteks edukaid pĂ€ringute protsent ja latentsus, on normaalne, kuid loodame, et me ei ole tunnistajaks mĂ”nede Frankenstein-stekide sĂŒndimisele, mis ĂŒritavad asendada spetsialiseeritud sĂŒsteeme, millest mĂ”ned on juba hĂ€sti tĂ”estatud ja hĂ€sti uuritud.

15. Audit

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

Audit on kunst jĂ€lgida olulisi sĂŒndmuseid sĂŒsteemis. Teenuste vĂ”rgu puhul vĂ”ib see tĂ€hendada jĂ€lgimist, kes tegi pĂ€ringuid teatud teenuste spetsiifiliste lĂ”pp-punktide juurde vĂ”i kui tihti on viimase kuu jooksul toimunud mingi sĂŒndmus, mis on seotud turvalisusega.

On selge, et audite on tihedalt seotud telemeetria. Erinevus seisneb aga selles, et telemeetria seondub tavaliselt sellistele asjadele nagu jĂ”udlus ja tehniline tĂ”husus, samas kui audit vĂ”ib puudutada Ă”iguslikke ja muid kĂŒsimusi, mis ulatuvad kaugemale rangest tehnilisest sfÀÀrist (nĂ€iteks GDPR-i nĂ”uete jĂ€rgimine — Euroopa Liidu isikuandmete kaitse ĂŒldmÀÀrus).

16. Visualiseerimine

TL;DR: Elagu React.js — vĂ€simatu allikas veidratele liidesele.

VÔib-olla on olemas sobivam termin, aga ma ei tea seda. Pean lihtsalt silmas service mesh'i vÔi selle komponentide graafilist esitamist. Need visualiseerimised vÔivad sisaldada nÀitajaid nagu keskmised viivitused, teavet sidecar konteinerite konfiguratsiooni, tervisekontrolli tulemusi ja teateid.

Töö teenusele suunatud keskkonnas eeldab palju suuremat kognitiivset koormust vĂ”rreldes KĂ”rge Üksuse Monoliidiga. SeetĂ”ttu tuleks kognitiivset koormust igal vĂ”imalusel vĂ€hendada. Lihtne graafiline liides teenuste vĂ”rgustiku jaoks, kus saab nuppu vajutada ja soovitud tulemus kĂ€tte saada, vĂ”ib olla selle tehnoloogia populaarsuse kasvu jaoks ĂŒlioluline.

Mitte kÔik ei olnud nimekirjas

Alguses kavatsesin lisada nimekirja veel mÔned kasutusjuhtumid, kuid otsustasin seda mitte teha. Siin nad koos minu otsuse pÔhjendustega:

  • Mitmed andmekesksed keskustest. Minu arvates ei ole see niivĂ”rd kasutusjuhtum kui pigem kitsas ja spetsiifiline valdkond, kus teenuste vĂ”rgud vĂ”i mĂ”ne funktsiooni nagu teenuste avastamine, rakenduvad.
  • Sisse- ja vĂ€ljaminek. See on seotud valdkond, kuid piirdusin (vĂ”imalikult kunstlikult) kasutusjuhtumiga „ida-lÀÀne liiklus“. Sisse- ja vĂ€ljaminek vÀÀrivad eraldi artiklit.

KokkuvÔte

Sellega on kĂ”ik! JĂ€llegi, see nimekiri on ĂŒsna tinglik ja tĂ”enĂ€oliselt puudulik. Kui arvad, et ma midagi unustasin vĂ”i olen kuskil eksinud, vĂ”ta minuga Twitteris ĂŒhendust (@lucperkins). Palun jĂ€rgige kĂ€itumisreegleid.

P.S. tÔlkija mÀrkused

Artikli peanĂ€idisena on kasutatud pilti artiklist „Mis on service mesh (ja millal seda kasutada)?“ (autor — Gregory MacKinnon). Sellel on kujutatud, kuidas osa rakenduste funktsionaalsusest (roheline) on liikunud service mesh'i, tagades nende vahelise ĂŒhenduse (sinine).

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster