Ponovo pozdravljamo!.. Uoči početka tečaja pripremili smo još jedan koristan prijevod.

Service Mesh je konfigurabilni infrastrukturni sloj s niskom latencijom koji je potreban za obradu velikih količina mrežnih međuprocesnih komunikacija između aplikacijskih sučelja (API). Service Mesh osigurava brzu, pouzdanu i sigurnu komunikaciju između kontejneriziranih i često efemernih servisa infrastrukturnih aplikacija. Service Mesh pruža mogućnosti kao što su otkrivanje servisa, ravnoteža opterećenja, enkripcija, prozirnost, praćenje, autentifikacija i autorizacija, kao i podršku za uzorak automatskog prekidača (circuit breaker).
Service Mesh se obično implementira pružanjem svakom instancu servisa instancu proxyja, koja se naziva Sidecar. Sidecar obrađuje komunikacije između servisa, provodi praćenje i rješava probleme sigurnosti, tj. sve što može biti apstrahirano od pojedinačnih servisa. Na taj način, programeri mogu pisati, održavati i upravljati kodom aplikacije unutar servisa, dok sistemski administratori mogu raditi sa Service Meshom i pokretati aplikaciju.
Istio od Googlea, IBM-a i Lyft-a trenutno je najpoznatija arhitektura Service Mesh. Kubernetes, koji je izvorno razvijen u Googleu, sada je jedini okvir za orkestraciju kontejnera koji podržava Istio. Dobavljači pokušavaju stvoriti komercijalne verzije Istio s podrškom. Zanimljivo je što će novoga moći unijeti u projekat otvorenog koda.
Međutim, Istio nije jedina opcija, jer se razvijaju i druge implementacije Service Mesh. Uzorak sidecar proxy je najpopularnija implementacija, sudeći prema projektima poput Buoyant, HashiCorp, Solo.io i drugih. Postoje i alternativne arhitekture: tehnološki alat Netflix je jedan od pristupa, gdje se funkcionalnost Service Mesh ostvaruje putem biblioteka Ribbon, Hysterix, Eureka, Archaius, kao i takvih platformi kao što je Azure Service Fabric.
Service Mesh također ima svoju vlastitu terminologiju za komponente-servise i funkcije:
- Okvir za orkestraciju kontejnera. Kako se sve više kontejnera dodaje u infrastrukturu aplikacije, pojavljuje se potreba za posebnim alatom za praćenje i upravljanje kontejnerima – okvirom za orkestraciju kontejnera. Kubernetes je čvrsto zauzeo ovu nišu, toliko da čak i njegovi glavni konkurenti Docker Swarm i Mesosphere DC/OS nude integraciju s Kubernetesom kao alternativu.
- Usluge i instance (Kubernetes podovi). Instanca je jedina pokrenuta kopija mikroslužbe. Ponekad jedna instanca predstavlja jedan kontejner. U Kubernetesu, instanca se sastoji od male grupe neovisnih kontejnera, koja se naziva pod. Klijenti rijetko direktno pristupaju instanci ili podu, češće se obraćaju usluzi koja predstavlja skup identičnih, skalabilnih i otpornih instanci ili podova (replika).
- Sidecar Proxy. Sidecar Proxy radi s jednom instancom ili podom. Suština Sidecar Proxy-a je usmjeravanje ili proksiranje prometa koji dolazi od kontejnera s kojim radi, kao i povratni promet. Sidecar komunicira s drugim Sidecar Proxy-ima i upravlja njime okvir orkestracije. Mnoge implementacije Service Mesh-a koriste Sidecar Proxy za presretanje i upravljanje sav ulaznim i izlaznim prometom instance ili poda.
- Otkrivanje usluga. Kada instanci treba komunicirati s drugom uslugom, treba pronaći (otkriti) ispravnu i dostupnu instancu te druge usluge. Obično instanca izvršava pretragu putem DNS-a. Okvir orkestracije kontejnera drži popis instanci koje su spremne primati zahtjeve i pruža sučelje za DNS-upite.
- Upravljanje opterećenjem. Većina okvira za orkestraciju kontejnera osigurava upravljanje opterećenjem na 4. razini (transport). Service Mesh implementira složenije upravljanje opterećenjem na 7. razini (aplikacijskoj), bogatije algoritmima i učinkovitije u upravljanju prometom. Parametri upravljanja opterećenjem mogu se mijenjati putem API-ja, što omogućava orkestraciju blue-green ili kanarinskog implementiranja.
- Enkripcija. Service Mesh može šifrirati i dešifrirati zahtjeve i odgovore, sklanjajući to opterećenje s usluga. Service Mesh također može poboljšati performanse prioritetiziranjem ili ponovnim korištenjem postojećih trajnih veza, smanjujući potrebu za skupim izračunima za postavljanje novih veza. Najčešća implementacija šifriranja prometa je mutual TLS (mTLS), gdje infrastruktura javnog ključa (PKI) generira i distribuira certifikate i ključeve za korištenje u Sidecar Proxy.
- Autentikacija i autorizacija. Service Mesh može autorizirati i autentificirati zahtjeve upućene izvana ili iznutra aplikacije, šaljući instancama samo validirane zahtjeve.
- Podrška za obrazac automatskog isključivanja. Service Mesh podržava , koji izolira nezdrave instance, a zatim ih postupno vraća u skup zdravih instanci po potrebi.
Onaj dio aplikacije Service Mesh koji upravlja mrežnim prometom između instanci se zove Data Plane. Kreiranje i implementacija konfiguracije koja upravlja ponašanjem Data Plane, obavlja se pomoću odvojenog Control Plane. Control Plane koji obično uključuje ili je osmišljen da se poveže s API, CLI ili GUI za upravljanje aplikacijom.

Control Plane u Service Mesh distribuira konfiguraciju između Sidecar Proxy i Data Plane.
Često se arhitektura Service Mesh primjenjuje za rješavanje složenih operativnih zadataka s korištenjem kontejnera i mikroservisa. Pionići u području su takve tvrtke kao što su Lyft, Netflix i Twitter, koje pružaju stabilno funkcionalne usluge milijunima korisnika širom svijeta. (). Za manje zahtjevne aplikacijske zadatke vjerojatno će biti dovoljni jednostavniji obrasci.
Arhitektura Service Mesh vjerojatno nikada neće biti odgovor na sva pitanja vezana uz rad aplikacija i njihovu isporuku. Arhitekti i programeri imaju ogroman arsenal alata, a samo jedan od njih — čekić, koji među brojnim zadacima treba rješavati samo jedan — zakucavanje čavala. , na primjer, uključuje nekoliko različitih modela koji nude kontinuirani spektar pristupa rješavanju problema putem mikroslužbi.
Elementi koji se povezuju u arhitekturi Service Mesh, kao što su NGINX, kontejneri, Kubernetes i mikroslužbe kao arhitektonski pristup, mogu se jednako produktivno koristiti i u realizacijama bez Service Mesh. Na primjer, Istio je razvijen kao sveobuhvatna arhitektura Service Mesh, ali modularnost sugerira da razvijači mogu birati i primjenjivati samo one komponente tehnologije koje su im potrebne. Imajući to na umu, potrebno je oblikovati jasno razumijevanje koncepta Service Mesh, čak i ako niste sigurni da li ćete ga ikada moći potpuno implementirati u aplikaciji.
Izvor: habr.com
