8 nejlepších správců sítě služeb pro vytváření moderních aplikací

Při vývoji aplikací založených na mikroservisech se setkáváme se situací, kdy je aplikace složena z mnoha menších, vzájemně propojených služeb. Tyto služby spolu musí efektivně komunikovat, aby celek fungoval jako soudržný systém.

V mnoha případech se mikroservisy dorozumívají přímo, což ale může být neefektivní a náchylné k poruchám. Právě zde může významně pomoci takzvaná servisní síť.

Co je to servisní síť?

Termín servisní síť označuje způsob, jak efektivně spravovat komunikaci mezi různými mikroservisy v rámci aplikace. Jde o využití specializovaného softwaru, který umožňuje a optimalizuje komunikaci tím, že zajišťuje:

  • Identifikaci jednotlivých aplikací
  • Rozložení zátěže mezi instance služeb
  • Ověřování identity služeb (autentizaci)
  • Šifrování dat při komunikaci

Servisní síť vytváří soubor paralelních spojení mezi mikroservisy, která jsou řízena pomocí proxy serverů. Tato síť je integrována do systémů správy datových center na vyšší úrovni. Díky tomu je možné optimalizovat komunikaci bez zbytečných prostojů v průběhu vývoje aplikace. V praxi každá aplikační služba potřebuje pro svou funkčnost a pro obsloužení uživatelských požadavků další podpůrné služby.

Příkladem může být online obchod, kde uživatel před nákupem zjišťuje dostupnost zboží. V tomto případě musí probíhat komunikace mezi službou zodpovědnou za webovou stránku produktu a databází skladových zásob. Následně uživatel komunikuje se svým nákupním košíkem.

Obchodník může také využít službu pro návrh produktů, která uživateli doporučuje zboží. Tato služba pak musí komunikovat s databází produktů, ale i s databází skladových zásob, aby doporučila zboží, které je skutečně dostupné. V podstatě jde o sadu opakovaně použitelných produktů a funkcionalit.

Moderní aplikace jsou tedy často koncipovány jako síť služeb, přičemž každá z nich má svou specifickou roli v rámci celkové obchodní logiky.

Jak servisní síť funguje a jaké jsou její výhody?

Je důležité si uvědomit, že servisní síť nepřidává do aplikace nové funkčnosti, ale spíše optimalizuje způsob, jakým stávající služby komunikují. Servisní síť je tvořena skupinou síťových proxy serverů, což je v podnikové sféře běžně využívaný koncept.

S proxy servery se pravděpodobně setkáváte každý den, když používáte internet v zaměstnání. V případě mikroservisů, proxy servery na úrovni infrastruktury pomáhají směrovat požadavky mezi jednotlivými službami. Označení „sidecar“ se používá proto, že proxy servery běží vedle služeb, ne uvnitř nich. Proxy servery „sidecar“ různých služeb pak vytvářejí celou servisní síť.

Bez servisní sítě by vývojáři museli kódovat komunikační logiku pro každou mikroservisu zvlášť. Komunikační logika by tak byla roztříštěná mezi jednotlivé služby, což by ztěžovalo dosahování obchodních cílů a diagnostiku komunikačních problémů. Servisní síť tyto problémy řeší.

S pomocí servisní sítě lze komunikaci automatizovat a veškerá potřebná data jsou snadno dostupná v rámci outsourcingové infrastruktury. Usnadňuje se tak lokalizace a řešení případných problémů. IT oddělení se tak může věnovat důležitějším úkolům.

Abstrakce komunikace také umožňuje automaticky obcházet nefunkční služby bez přerušení výměny dat mezi ostatními službami aplikace. Data ze servisní sítě lze snadno analyzovat a použít pro zlepšení provozu a celkového výkonu aplikace.

Nyní se podívejme na některé z nejpoužívanějších správců servisních sítí:

Meshery

Meshery je správce servisních sítí, který umožňuje spouštět různá řešení v rámci jedné platformy. Lze ho nasadit na Kubernetes i Docker. Poskytuje uživatelské rozhraní a CLI pro konfiguraci a správu všech hlavních řešení servisních sítí, včetně Linkerd a Istio. Meshery lze nasadit přímo do clusteru nebo lokálně.

Amazon App Mesh

AWS App Mesh je servisní síť pro platformu Kubernetes (EKS) od Amazonu. Poskytuje správu na úrovni aplikací pomocí proxy sidecar pro příchozí a odchozí provoz. Využívá mechanismus přerušení obvodu a poskytuje metriky pro pozorovatelnost pomocí AWS X-Ray. App Mesh lze používat i s dalšími službami, jako je Amazon EC2 a AWS Fargate.

Linkerd

Linkerd je open-source správce servisní sítě, který pro správu mikroservisů používá vlastní proxy server založený na Rustu. Součástí je předinstalovaná Grafana pro vizualizaci metrik. Na rozdíl od jiných open-source správců servisních sítí nabízí Linkerd i grafické uživatelské rozhraní a podporuje nejen Prometheus, ale i ingress controllery, jako jsou Traefik, Kong a Gloo. Linkerd také podporuje automatické upgrady nasazení v rámci clusterů.

Istio

Istio je open-source servisní síť, která pro správu mikroservisů využívá proxy server Envoy. Istio nabízí různé funkce, jako je rozložení zátěže, vytváření zásad, směrování provozu, nastavení časových limitů, přerušování obvodu a přesouvání provozu. Istio také poskytuje distribuované sledování napříč kontejnery nebo stroji bez nutnosti instalace dalšího softwaru.

Kuma

Kuma je servisní síť od firmy Kong, která slouží k rozšíření funkcionality stávajících služeb pomocí proxy serveru Envoy. Kuma podporuje různé typy mikroservisů a poskytuje vylepšené zabezpečení a monitorování sítí. Součástí je sada předem připravených zásad pro směrování, mTLS, řízení provozu a různé bezpečnostní funkce. S Kumou lze snadno ovládat různé izolované sítě z jednoho řídicího centra.

Nginx Service Mesh

Nginx je servisní síť pro Kubernetes, která šifruje komunikaci mezi kontejnery pomocí datové roviny založené na Nginx Plus. Nginx využívá omezování rychlosti a jističe pro řízení provozu a je dodáván s dashboardem Grafana pro monitorování metrik servisní sítě.

Consul

Consul od HashiCorp je servisní síť, která poskytuje vestavěnou proxy vrstvu a podporuje i proxy server Envoy. Nabízí směrování na základě trasy, přesouvání provozu a vyvažování zátěže. Consul je integrován s HashiCorp Vault a podporuje mTLS. Lze ho integrovat s Prometheus a Grafana pro vizualizaci metrik.

Gloo Mesh

Gloo Mesh je servisní síť postavená na základech Istio a využívá Envoy proxy, která umožňuje implementaci bezpečnostního modelu Zero Trust. Gloo podporuje multi-tenancy Kubernetes, virtuální stroje a další mikroservisy. Je optimalizovaný pro CI/CD a GitOps, což usnadňuje nasazení.

Závěrečná slova

Servisní sítě řeší problematiku komunikace mezi různými mikroservisy a poskytují řadu bezpečnostních výhod. Vzhledem k široké nabídce řešení je důležité vybrat si takovou servisní síť, která nejlépe vyhovuje vašim potřebám a kterou lze snadno spravovat.