Spet pozdravljeni!.. Ob začetku tečaja smo pripravili še en uporaben prevod.

Service Mesh je konfigurabilna infrastruktura z nizko zamudo, ki je potrebna za obdelavo velikega obsega omrežnih medprocesnih komunikacij med vmesniki aplikacij (API). Service Mesh omogoča hitro, zanesljivo in varno komunikacijo med kontejneriziranimi in pogosto efemernimi storitvami aplikacijske infrastrukture. Service Mesh ponuja funkcionalnosti, kot so odkrivanje storitev, obremenitvena porazdelitev, šifriranje, preglednost, sledenje, avtentikacijo in avtorizacijo ter podporo za vzorec samodejnega izklopa (circuit breaker).
Service Mesh se običajno implementira z dodelitvijo vsaki instanci storitve instance proxy, imenovane Sidecar. Sidecar obravnavajo komunikacije med storitvami, izvajajo spremljanje in odpravo težav z varnostjo, kar pomeni vse, kar se lahko abstrahira od posameznih storitev. Tako lahko razvijalci pišejo, vzdržujejo in služijo kodo aplikacije v storitvah, medtem ko lahko sistemski skrbniki delajo s Service Mesh in izvajajo aplikacijo.
Istio, ki ga razvijata Google, IBM in Lyft, je trenutno najbolj znana arhitektura Service Mesh. Kubernetes, ki je bil prvotno razvit pri Googlu, je zdaj edina platforma za orkestracijo kontejnerjev, ki jo podpira Istio. Dobavitelji poskušajo ustvariti komercialno podprte različice Istio. Zanimivo bo videti, kaj novega bodo prinesli v projekt z odprtokodno kodo.
Vendar Istio ni edina možnost, saj se razvijajo tudi druge implementacije Service Mesh. Vzorec sidecar proxy je najbolj priljubljena implementacija, kar lahko vidimo po projektih Buoyant, HashiCorp, Solo.io in drugih. Obstoječe so tudi alternativne arhitekture: tehnološki nabor Netflix je eden od pristopov, kjer se funkcionalnost Service Mesh uresničuje s pomočjo knjižnic Ribbon, Hysterix, Eureka, Archaius in drugih platform, kot je Azure Service Fabric.
Service Mesh ima tudi svojo lastno terminologijo za komponente storitev in funkcionalnosti:
- Okvir za orkestracijo kontejnerjev. Z naraščanjem števila kontejnerjev v infrastrukturi aplikacije se pojavi potreba po posebnem orodju za spremljanje in upravljanje kontejnerjev – okviru za orkestracijo kontejnerjev. Kubernetes je trdno zasedel to nišo, tako zelo, da njegovi glavni konkurenti Docker Swarm in Mesosphere DC/OS ponujajo integracijo s Kubernetes kot alternativo.
- Storitve in primeri (Kubernetes podi). Primer je ena sama zagnana kopija mikrost storitve. Včasih je en primer en kontejner. V Kubernetesu je primer sestavljen iz majhne skupine neodvisnih kontejnerjev, ki se imenuje pod. Stranke redko neposredno naslavljajo primer ali pod, pogosteje se obračajo na storitev, ki predstavlja niz identičnih, skalabilnih in odpornosti vrednih primerov ali podov (replik).
- Sidecar Proxy. Sidecar Proxy deluje z enim primerom ali podom. Namen Sidecar Proxy je usmerjati ali posredovati promet, ki prihaja iz kontejnerja, s katerim deluje, in obrnjen promet. Sidecar komunicira z drugimi Sidecar Proxy in ga upravlja okvir za orkestracijo. Mnoge implementacije Service Mesh uporabljajo Sidecar Proxy za prestrezanje in upravljanje vsega prihajajočega in odhajajočega prometa primera ali poda.
- Odkritje storitev. Ko se mora primer povezati z drugo storitvijo, mora najti (odkriti) delujoč in dostopen primer druge storitve. Običajno primer išče prek DNS. Okvir za orkestracijo kontejnerjev hrani seznam primerov, ki so pripravljeni sprejeti poizvedbe, in ponuja vmesnik za DNS poizvedbe.
- Porazdelitev bremena. Večina okvirjev za orkestracijo kontejnerjev zagotavlja uravnoteženje obremenitev na 4. ravni (transportni). Service Mesh zagotavlja bolj zapleteno uravnoteženje obremenitev na 7. ravni (aplikativni), bogato z algoritmi in bolj učinkovito pri upravljanju prometa. Možnosti uravnoteženja obremenitev je mogoče spremeniti z uporabo API, kar omogoča orkestracijo modro-zelene ali kanarčne namestitve.
- Šifriranje. Service Mesh lahko šifrira in dešifrira zahteve ter odgovore, kar olajša breme storitvam. Service Mesh lahko tudi izboljša učinkovitost s prednostno obravnavo ali ponovnim uporabo obstoječih vzpostavljenih povezav, kar zmanjšuje potrebo po dragih izračunih za ustvarjanje novih povezav. Najpogostejša implementacija šifriranja prometa je mutual TLS (mTLS), kjer infrastruktura javnih ključev (PKI) generira in razporeja certifikate ter ključe za uporabo v Sidecar Proxy.
- Avtentikacija in avtorizacija. Service Mesh lahko avtenticira in avtorizira zahteve, ki jih pošljejo zunanji ali notranji uporabniki aplikacije, tako da pošilja primerkom samo potrjene zahtevke.
- Podpora predlogu avtomatskega izklopa. Service Mesh podpira , ki izolira nezdrave primere in jih nato postopoma vrača v skupino zdravih primerov po potrebi.
Del aplikacije Service Mesh, ki upravlja omrežni promet med primeri, se imenuje Data Plane. Ustvarjanje in uvedba konfiguracije, ki upravlja vedenje Data Plane, se izvede s pomočjo ločenega Control Plane. Control Plane , ki običajno vključuje ali je zasnovana za povezovanje z API, CLI ali GUI za upravljanje aplikacije.

Control Plane v Service Mesh porazdeli konfiguracijo med Sidecar Proxy in Data Plane.
Arhitektura Service Mesh se pogosto uporablja za reševanje kompleksnih operativnih nalog z uporabo kontejnerjev in mikrostoritev. Pionirji na področju so podjetja, kot sta Lyft, Netflix in Twitter, ki zagotavljajo zanesljive storitve milijonom uporabnikov po vsem svetu. (). Za manj zahtevne aplikacijske naloge bo verjetno dovolj preprostejših arhitektur.
Arhitektura Service Mesh verjetno nikoli ne bo odgovor na vsa vprašanja, povezana z delovanjem aplikacij in njihovo dostavo. Arhitekti in razvijalci imajo ogromno orodij, in le eno izmed njih — kladivo, ki bi med mnogimi nalogami moralo reševati le eno – zabijati žeblje. , na primer, vključuje več različnih modelov, ki zagotavljajo neprekinjeno spektrum pristopov k reševanju nalog s pomočjo mikroservisov.
Elementi, ki se združujejo v arhitekturi Service Mesh, kot so NGINX, kontejnerji, Kubernetes in mikroservisi kot arhitekturni pristop, se lahko prav tako plodno uporabljajo tudi v izvedbah brez Service Mesh. Na primer, Istio je bil razvit kot celovita arhitektura Service Mesh, toda modularnost pomeni, da lahko razvijalci izberejo in uporabijo le tiste komponente tehnologij, ki jih potrebujejo. Ob tem je treba oblikovati jasno predstavo o konceptu Service Mesh, tudi če niste prepričani, da boste kdaj to lahko polno implementirali v aplikaciji.
Izvor: habr.com
