Čo je to servisná sieť?

Ešte raz ahoj!.. V predvečer začiatku kurzu "Softvérový architekt" Pripravili sme ďalší užitočný preklad.

Čo je to servisná sieť?

Sieť služieb je konfigurovateľná vrstva infraštruktúry s nízkou latenciou, ktorá je potrebná na spracovanie veľkých objemov sieťovej medziprocesovej komunikácie medzi aplikačnými programovacími rozhraniami (API). Service Mesh umožňuje rýchlu, spoľahlivú a bezpečnú komunikáciu medzi kontajnerovými a často dočasnými službami aplikačnej infraštruktúry. Service Mesh poskytuje funkcie, ako je zisťovanie služieb, vyrovnávanie záťaže, šifrovanie, transparentnosť, sledovateľnosť, autentifikácia a autorizácia a podpora vzorov automatického vypnutia (istič).
Sieť služieb sa zvyčajne implementuje tak, že každej inštancii služby sa poskytne inštancia proxy, tzv Sidecar. Sidecar zvládnuť komunikáciu medzi službami, monitorovať a riešiť bezpečnostné problémy, teda všetko, čo sa dá z jednotlivých služieb abstrahovať. Týmto spôsobom môžu vývojári písať, udržiavať a obsluhovať kód aplikácie v službách a správcovia systému môžu pracovať so sieťou služieb a spúšťať aplikáciu.

Istio od Google, IBM a Lyft je v súčasnosti najznámejšou sieťovou architektúrou služieb. A Kubernetes, ktorý bol pôvodne vyvinutý v spoločnosti Google, je teraz jediným rámcom na orchestráciu kontajnerov podporovaným spoločnosťou Istio. Predajcovia sa snažia vytvoriť komerčne podporované verzie Istio. Bude zaujímavé sledovať, čo nové môžu priniesť do open source projektu.

Istio však nie je jedinou možnosťou, keďže sa vyvíjajú ďalšie implementácie Service Mesh. Vzor sidecar proxy je najobľúbenejšou implementáciou, ako možno posúdiť projekty Buoyant, HashiCorp, Solo.io a ďalšie. Existujú aj alternatívne architektúry: technologická súprava Netflix je jedným z prístupov, kde sa funkcia Service Mesh implementuje prostredníctvom knižníc Ribbon, Hysterix, Eureka, Archaius, ako aj platforiem, ako je Azure Service Fabric.

Service Mesh má tiež vlastnú terminológiu pre servisné komponenty a funkcie:

  • Rámec orchestrácie kontajnerov. Keďže do aplikačnej infraštruktúry pribúda stále viac kontajnerov, vzniká potreba samostatného nástroja na monitorovanie a správu kontajnerov – rámec na orchestráciu kontajnerov. Kubernetes pevne obsadil toto miesto, a to natoľko, že aj jeho hlavní konkurenti Docker Swarm a Mesosphere DC/OS ponúkajú integráciu s Kubernetes ako alternatívu.
  • Služby a inštancie (Kubernetes Pods). Inštancia je jedna spustená kópia mikroslužby. Niekedy je jedna inštancia jedným kontajnerom. V Kubernetes sa inštancia skladá z malej skupiny nezávislých kontajnerov nazývaných pod. Klienti zriedkavo pristupujú k inštancii alebo podu priamo, častejšie pristupujú k službe, ktorá je množinou identických, škálovateľných a chybám odolných inštancií alebo modulov (replik).
  • Sidecar Proxy. Sidecar Proxy pracuje s jednou inštanciou alebo modulom. Účelom Sidecar Proxy je smerovať alebo proxy prevádzku prichádzajúcu z kontajnera, s ktorým pracuje, a vracať prevádzku. Sidecar spolupracuje s inými proxy servermi Sidecar a je riadený organizačným rámcom. Mnoho implementácií Service Mesh používa Sidecar Proxy na zachytenie a riadenie všetkej prevádzky v a z inštancie alebo modulu.
  • Objavovanie služby. Keď inštancia potrebuje komunikovať s inou službou, potrebuje nájsť (objaviť) zdravú a dostupnú inštanciu inej služby. Inštancia zvyčajne vykonáva vyhľadávanie DNS. Rámec orchestrácie kontajnerov udržiava zoznam inštancií, ktoré sú pripravené na prijímanie požiadaviek, a poskytuje rozhranie pre dotazy DNS.
  • Rozdelenie výkonu. Väčšina rámcov na orchestráciu kontajnerov poskytuje vyrovnávanie záťaže na vrstve 4 (preprava). Service Mesh implementuje komplexnejšie vyvažovanie záťaže na vrstve 7 (úroveň aplikácie), bohaté na algoritmy a efektívnejšie pri riadení prevádzky. Nastavenia vyrovnávania záťaže je možné zmeniť pomocou rozhrania API, čo vám umožní organizovať nasadenie modro-zelenej alebo kanárikovej farby.
  • šifrovanie. Service Mesh dokáže šifrovať a dešifrovať požiadavky a odpovede, čím odstraňuje túto záťaž zo služieb. Service Mesh môže tiež zlepšiť výkon uprednostnením alebo opätovným použitím existujúcich trvalých pripojení, čím sa zníži potreba drahých výpočtov na vytváranie nových pripojení. Najbežnejšou implementáciou šifrovania prevádzky je vzájomné TLS (mTLS), kde infraštruktúra verejného kľúča (PKI) generuje a distribuuje certifikáty a kľúče na použitie Sidecar Proxy.
  • Autentifikácia a autorizácia. Service Mesh môže autorizovať a overovať požiadavky uskutočnené zvonka alebo vnútri aplikácie, pričom do inštancií posiela iba overené požiadavky.
  • Podpora vzoru automatického vypnutia. Podporuje servisnú sieť vzor automatického vypnutia, ktorá izoluje nezdravé prípady a potom ich v prípade potreby postupne vracia do zásoby zdravých prípadov.

Volá sa časť aplikácie Service Mesh, ktorá riadi sieťovú prevádzku medzi inštanciami Dátová rovina. Vytvorte a nasaďte konfiguráciu, ktorá riadi správanie Dátová rovina, sa vykonáva pomocou samostatného Kontrolná rovina. Kontrolná rovina zvyčajne zahŕňa alebo je navrhnutý na pripojenie k API, CLI alebo GUI na ovládanie aplikácie.

Čo je to servisná sieť?
Riadiaca rovina v servisnej sieti distribuuje konfiguráciu medzi proxy postranného vozíka a dátovú rovinu.

Architektúra Service Mesh sa často používa na riešenie zložitých prevádzkových problémov pomocou kontajnerov a mikroslužieb. Priekopníci v odbore mikroslužby sú spoločnosti ako Lyft, Netflix a Twitter, ktoré poskytujú stabilné služby miliónom používateľov po celom svete. (Tu je podrobný pohľad na niektoré architektonické výzvy, ktorým Netflix čelil.). Pre menej náročné aplikácie budú pravdepodobne stačiť jednoduchšie architektúry.

Je nepravdepodobné, že by architektúra Service Mesh bola odpoveďou na všetky problémy s prevádzkou a doručovaním aplikácií. Architekti a vývojári disponujú obrovským arzenálom nástrojov a len jedným z nich je kladivo, ktoré z množstva úloh musí vyriešiť len jednu – zatĺkanie klincov. Referenčná architektúra mikroslužieb od NGINX, napríklad zahŕňa niekoľko rôznych modelov, ktoré poskytujú kontinuitu prístupov k riešeniu problémov pomocou mikroslužieb.

Prvky, ktoré sa spájajú v architektúre Service Mesh, ako napríklad NGINX, kontajnery, Kubernetes a mikroslužby ako architektonický prístup, môžu byť rovnako produktívne aj v implementáciách bez služby Service Mesh. Napríklad Istio bol navrhnutý ako kompletná sieťová architektúra služieb, ale jeho modularita znamená, že vývojári môžu vybrať a implementovať iba technologické komponenty, ktoré potrebujú. Vzhľadom na to je dôležité jasne pochopiť koncept Service Mesh, aj keď si nie ste istí, či ho niekedy budete môcť plne implementovať do svojej aplikácie.

Modulárne monolity a DDD

Zdroj: hab.com

Pridať komentár