Kaj je storitvena mreža?

Še enkrat pozdravljeni!.. Na predvečer začetka tečaja "Arhitekt programske opreme" Pripravili smo še en uporaben prevod.

Kaj je storitvena mreža?

Storitvena mreža je nastavljiva infrastrukturna plast z nizko zakasnitvijo, ki je potrebna za obvladovanje velikih količin omrežnih medprocesnih komunikacij med vmesniki za programiranje aplikacij (API-ji). Service Mesh omogoča hitro, zanesljivo in varno komunikacijo med kontejnerskimi in pogosto efemernimi infrastrukturnimi storitvami aplikacij. Service Mesh zagotavlja zmožnosti, kot so odkrivanje storitev, uravnoteženje obremenitve, šifriranje, preglednost, sledljivost, preverjanje pristnosti in avtorizacija ter podpora za vzorec samodejnega izklopa (varovalka).
Mreža storitve se običajno izvaja tako, da se vsakemu primerku storitve zagotovi proxy primerek, imenovan Stranska prikolica. Stranska prikolica skrbijo za komunikacijo med storitvami, spremljajo in rešujejo varnostna vprašanja, torej vse, kar je mogoče abstrahirati iz posameznih storitev. Na ta način lahko razvijalci pišejo, vzdržujejo in strežejo aplikacijsko kodo v storitvah, sistemski skrbniki pa lahko delajo s Service Mesh in izvajajo aplikacijo.

Istio iz Googla, IBM-a in Lyfta je trenutno najbolj znana storitvena mrežasta arhitektura. In Kubernetes, ki je bil prvotno razvit pri Googlu, je zdaj edino ogrodje za orkestracijo vsebnikov, ki ga podpira Istio. Prodajalci poskušajo ustvariti komercialno podprte različice Istio. Zanimivo bo videti, kaj novega lahko prinesejo v odprtokodni projekt.

Vendar Istio ni edina možnost, saj se razvijajo druge izvedbe Service Mesh. Vzorec sidecar proxy je najbolj priljubljena izvedba, kot lahko sodimo po projektih Buoyant, HashiCorp, Solo.io in drugih. Obstajajo tudi alternativne arhitekture: tehnološki komplet orodij Netflix je eden od pristopov, kjer se funkcionalnost Service Mesh implementira prek knjižnic Ribbon, Hysterix, Eureka, Archaius, kot tudi platform, kot je Azure Service Fabric.

Service Mesh ima tudi lastno terminologijo za storitvene komponente in funkcije:

  • Okvir za orkestracijo vsebnika. Ker se aplikacijski infrastrukturi dodaja vedno več vsebnikov, obstaja potreba po ločenem orodju za spremljanje in upravljanje vsebnikov – ogrodje za orkestracijo vsebnikov. Kubernetes je trdno zasedel to nišo, tako zelo, da celo njegova glavna konkurenta Docker Swarm in Mesosphere DC/OS ponujata integracijo s Kubernetesom kot alternativo.
  • Storitve in primerki (Kubernetes Pods). Primerek je ena sama delujoča kopija mikrostoritve. Včasih je en primerek en vsebnik. V Kubernetesu je primerek sestavljen iz majhne skupine neodvisnih vsebnikov, imenovanih pod. Odjemalci redko neposredno dostopajo do instance ali poda, pogosteje dostopajo do storitve, ki je niz enakih, razširljivih in na napake tolerantnih instanc ali podov (replik).
  • Sidecar Proxy. Sidecar Proxy deluje z enim primerkom ali sklopom. Bistvo Sidecar Proxyja je usmerjanje ali posredovanje prometa, ki prihaja iz vsebnika, s katerim deluje, in vračanje prometa. Sidecar sodeluje z drugimi posredniki Sidecar in ga upravlja ogrodje za orkestracijo. Številne implementacije Service Mesh uporabljajo Sidecar Proxy za prestrezanje in upravljanje celotnega prometa v in iz instance ali sklopa.
  • Odkrivanje storitve. Ko mora primerek komunicirati z drugo storitvijo, mora najti (odkriti) zdrav in razpoložljiv primerek druge storitve. Običajno primerek izvaja iskanje DNS. Ogrodje za orkestracijo vsebnika vzdržuje seznam primerkov, ki so pripravljeni na sprejemanje zahtev, in zagotavlja vmesnik za poizvedbe DNS.
  • Izravnavanje obremenitve. Večina ogrodij za orkestracijo vsebnikov zagotavlja uravnoteženje obremenitve na ravni 4 (transport). Service Mesh implementira bolj zapleteno uravnoteženje obremenitve na ravni 7 (raven aplikacije), bogato z algoritmi in učinkovitejše pri upravljanju prometa. Nastavitve uravnoteženja obremenitve je mogoče spremeniti z uporabo API-ja, kar vam omogoča orkestriranje modro-zelenih ali kanarčkovih uvajanj.
  • Šifriranje. Service Mesh lahko šifrira in dešifrira zahteve in odgovore, s čimer odstrani to breme storitev. Service Mesh lahko tudi izboljša zmogljivost z dajanjem prednosti ali ponovno uporabo obstoječih trajnih povezav, kar zmanjša potrebo po dragem računanju za ustvarjanje novih povezav. Najpogostejša izvedba šifriranja prometa je vzajemni TLS (mTLS), kjer infrastruktura javnih ključev (PKI) ustvarja in distribuira potrdila in ključe za uporabo s strani Sidecar Proxy.
  • Avtentikacija in avtorizacija. Service Mesh lahko odobri in overi zahteve, ki so narejene zunaj ali znotraj aplikacije, in pošilja samo potrjene zahteve primerkom.
  • Podpora za vzorec samodejnega izklopa. Service Mesh podpira vzorec samodejnega izklopa, ki izolira nezdrave primerke in jih nato po potrebi postopoma vrne v skupino zdravih primerkov.

Pokliče se del aplikacije Service Mesh, ki upravlja omrežni promet med primerki Podatkovna ravnina. Ustvarite in razmestite konfiguracijo, ki nadzoruje vedenje Podatkovna ravnina, se izvaja z ločenim Nadzorna ravnina. Nadzorna ravnina običajno vključuje ali je zasnovan za povezavo z API, CLI ali GUI za nadzor aplikacije.

Kaj je storitvena mreža?
Nadzorna ravnina v servisni mreži porazdeli konfiguracijo med Sidecar proxy in podatkovno ravnino.

Service Mesh arhitektura se pogosto uporablja za reševanje kompleksnih operativnih problemov z uporabo vsebnikov in mikrostoritev. Pionirji na tem področju mikrostoritve so podjetja, kot so Lyft, Netflix in Twitter, ki zagotavljajo stabilne storitve milijonom uporabnikov po vsem svetu. (Tukaj je podroben pogled na nekatere arhitekturne izzive, s katerimi se je soočil Netflix.). Za manj zahtevne aplikacije bodo verjetno zadostovale preprostejše arhitekture.

Arhitektura Service Mesh verjetno ne bo nikoli rešila vseh težav z delovanjem in dostavo aplikacij. Arhitekti in razvijalci imajo ogromen arzenal orodij in le eno od njih je kladivo, ki mora med številnimi nalogami rešiti samo eno - zabijanje žebljev. Referenčna arhitektura mikrostoritev iz NGINX, na primer, vključuje več različnih modelov, ki zagotavljajo kontinuum pristopov k reševanju težav z uporabo mikrostoritev.

Elementi, ki so združeni v arhitekturi Service Mesh, kot so NGINX, vsebniki, Kubernetes in mikrostoritve kot arhitekturni pristop, so lahko enako produktivni v implementacijah, ki niso Service Mesh. Na primer, Istio je bil zasnovan kot popolna storitvena mrežasta arhitektura, vendar njegova modularnost pomeni, da lahko razvijalci izberejo in implementirajo samo tehnološke komponente, ki jih potrebujejo. S tem v mislih je pomembno razviti jasno razumevanje koncepta Service Mesh, tudi če niste prepričani, da ga boste lahko kdaj v celoti implementirali v svojo aplikacijo.

Modularni monoliti in DDD

Vir: www.habr.com

Dodaj komentar