Co je servisní síť?

Ještě jednou ahoj!.. V předvečer zahájení kurzu "Softwarový architekt" Připravili jsme další užitečný překlad.

Co je servisní síť?

Síť služeb je konfigurovatelná vrstva infrastruktury s nízkou latencí, která je potřebná ke zpracování velkých objemů síťové meziprocesové komunikace mezi rozhraními pro programování aplikací (API). Service Mesh umožňuje rychlou, spolehlivou a bezpečnou komunikaci mezi kontejnerovými a často pomíjivými službami aplikační infrastruktury. Service Mesh poskytuje funkce, jako je zjišťování služeb, vyvažování zátěže, šifrování, transparentnost, sledovatelnost, ověřování a autorizace a podpora vzorů automatického vypínání (jistič).
Síť služeb je obvykle implementována tak, že každé instanci služby poskytuje instanci proxy, která se nazývá Sidecar. Sidecar obsluhovat komunikaci mezi službami, sledovat a řešit bezpečnostní problémy, tedy vše, co lze z jednotlivých služeb abstrahovat. Tímto způsobem mohou vývojáři psát, udržovat a obsluhovat aplikační kód ve službách a správci systému mohou pracovat se službou Service Mesh a spouštět aplikaci.

Istio od Google, IBM a Lyft je v současnosti nejznámější architekturou sítě služeb. A Kubernetes, který byl původně vyvinut ve společnosti Google, je nyní jediným frameworkem pro orchestraci kontejnerů podporovaným Istio. Prodejci se snaží vytvořit komerčně podporované verze Istio. Bude zajímavé sledovat, co nového mohou přinést do open source projektu.

Istio však není jedinou možností, protože se vyvíjejí další implementace Service Mesh. Vzor sidecar proxy je nejoblíbenější implementací, jak lze posoudit podle projektů Buoyant, HashiCorp, Solo.io a dalších. Existují také alternativní architektury: sada nástrojů technologie Netflix je jedním z přístupů, kde je funkce Service Mesh implementována prostřednictvím knihoven Ribbon, Hysterix, Eureka, Archaius a také platforem, jako je Azure Service Fabric.

Service Mesh má také svou vlastní terminologii pro servisní komponenty a funkce:

  • Rámec pro orchestraci kontejnerů. S tím, jak se do aplikační infrastruktury přidává stále více kontejnerů, je potřeba samostatný nástroj pro monitorování a správu kontejnerů – rámec pro orchestraci kontejnerů. Kubernetes tuto mezeru pevně obsadil, a to natolik, že i jeho hlavní konkurenti Docker Swarm a Mesosphere DC/OS nabízejí integraci s Kubernetes jako alternativu.
  • Služby a instance (Kubernetes Pods). Instance je jedna spuštěná kopie mikroslužby. Někdy je jedna instance jeden kontejner. V Kubernetes se instance skládá z malé skupiny nezávislých kontejnerů nazývaných pod. Klienti zřídka přistupují k instanci nebo pod přímo, častěji přistupují ke službě, což je sada identických, škálovatelných a chybově odolných instancí nebo podů (replik).
  • Proxy postranního vozíku. Sidecar Proxy pracuje s jednou instancí nebo modulem. Smyslem Sidecar Proxy je směrovat nebo proxy provoz přicházející z kontejneru, se kterým pracuje, a vracet provoz. Sidecar spolupracuje s ostatními servery Sidecar Proxy a je řízen systémem orchestrace. Mnoho implementací Service Mesh používá Sidecar Proxy k zachycení a správě veškerého provozu v instanci nebo podu az nich.
  • Zjištění služby. Když instance potřebuje komunikovat s jinou službou, potřebuje najít (objevit) zdravou a dostupnou instanci jiné služby. Instance obvykle provádí vyhledávání DNS. Rámec orchestrace kontejnerů udržuje seznam instancí, které jsou připraveny přijímat požadavky, a poskytuje rozhraní pro dotazy DNS.
  • Vyvažování zátěže. Většina rámců orchestrace kontejnerů poskytuje vyrovnávání zátěže na vrstvě 4 (přeprava). Service Mesh implementuje složitější vyvažování zátěže na vrstvě 7 (aplikační úroveň), bohaté na algoritmy a efektivnější při řízení provozu. Nastavení vyvažování zátěže lze změnit pomocí rozhraní API, což vám umožní zorganizovat modrozelená nebo kanárková nasazení.
  • Šifrování. Service Mesh dokáže šifrovat a dešifrovat požadavky a odpovědi, čímž odstraňuje tuto zátěž ze služeb. Service Mesh může také zlepšit výkon stanovením priority nebo opětovným použitím stávajících trvalých připojení, čímž se sníží potřeba nákladných výpočtů pro vytváření nových připojení. Nejběžnější implementace šifrování provozu je vzájemné TLS (mTLS), kde infrastruktura veřejného klíče (PKI) generuje a distribuuje certifikáty a klíče pro použití Sidecar Proxy.
  • Autentizace a autorizace. Služba Service Mesh může autorizovat a ověřovat požadavky provedené zvenčí nebo uvnitř aplikace, přičemž do instancí odesílá pouze ověřené požadavky.
  • Podpora vzoru automatického vypnutí. Podpora Service Mesh vzor automatického vypnutí, který izoluje nezdravé instance a poté je v případě potřeby postupně vrací do fondu zdravých instancí.

Je volána část aplikace Service Mesh, která spravuje síťový provoz mezi instancemi Datová rovina. Vytvořte a nasaďte konfiguraci, která řídí chování Datová rovina, se provádí pomocí samostatného Kontrolní letadlo. Kontrolní letadlo obvykle zahrnuje nebo je navržen pro připojení k rozhraní API, CLI nebo GUI pro ovládání aplikace.

Co je servisní síť?
Řídicí rovina v servisní síti rozděluje konfiguraci mezi proxy postranního vozíku a datovou rovinu.

Architektura Service Mesh se často používá k řešení složitých provozních problémů pomocí kontejnerů a mikroslužeb. Průkopníci v oboru mikroslužby jsou společnosti jako Lyft, Netflix a Twitter, které poskytují stabilní služby milionům uživatelů po celém světě. (Zde je podrobný pohled na některé architektonické výzvy, kterým Netflix čelil.). Pro méně náročné aplikace budou pravděpodobně stačit jednodušší architektury.

Je nepravděpodobné, že by architektura Service Mesh někdy byla odpovědí na všechny problémy s provozem a doručováním aplikací. Architekti a vývojáři mají obrovský arzenál nástrojů a jen jedním z nich je kladivo, které z mnoha úkolů musí vyřešit jediný – zatloukání hřebíků. Microservices Reference Architecture od NGINX, například zahrnuje několik různých modelů, které poskytují kontinuitu přístupů k řešení problémů pomocí mikroslužeb.

Prvky, které se spojují v architektuře Service Mesh, jako je NGINX, kontejnery, Kubernetes a mikroslužby jako architektonický přístup, mohou být stejně produktivní v implementacích bez služeb Mesh. Například Istio bylo navrženo jako kompletní síťová architektura služeb, ale jeho modularita znamená, že vývojáři mohou vybrat a implementovat pouze technologické komponenty, které potřebují. S ohledem na to je důležité jasně porozumět konceptu Service Mesh, i když si nejste jisti, že jej budete někdy schopni plně implementovat do své aplikace.

Modulární monolity a DDD

Zdroj: www.habr.com

Přidat komentář