8 najlepszych menedżerów Service Mesh do tworzenia nowoczesnych aplikacji

W architekturze mikrousług aplikacje składają się z szeregu niezależnych, niewielkich usług, które współdziałają ze sobą w celu realizacji wspólnych zadań. Kluczowym aspektem takiego podejścia jest efektywna komunikacja pomiędzy tymi usługami.

Często zdarza się, że mikroserwisy komunikują się bezpośrednio, co może prowadzić do nieefektywności i zwiększać ryzyko awarii. Właśnie w takich sytuacjach z pomocą przychodzi koncepcja siatki usług (ang. service mesh).

Czym jest siatka usług?

Początkowo termin „siatka usług” odnosił się do metody zarządzania wymianą danych między poszczególnymi mikrousługami w ramach aplikacji. W istocie chodzi o wykorzystanie specjalnego oprogramowania, które ułatwia komunikację pomiędzy mikroserwisami, zapewniając:

  • Identyfikację aplikacji
  • Równoważenie obciążenia
  • Uwierzytelnianie
  • Szyfrowanie

Siatka połączonych mikrousług powstaje dzięki równoległym połączeniom, które działają za pośrednictwem dedykowanych serwerów proxy. Sieć mikrousług jest włączona do nadrzędnego systemu zarządzania siecią centrum danych. Ułatwia to optymalizację komunikacji i minimalizuje przestoje w czasie ewolucji aplikacji. Każda usługa w aplikacji współzależy z innymi, aby sprostać wymaganiom użytkowników.

Rozważmy przykład sklepu internetowego. Przed dokonaniem zakupu użytkownik musi wiedzieć, czy dany produkt jest dostępny. W tym celu zachodzi komunikacja między usługą odpowiedzialną za bazę danych a stroną produktu. Następnie strona produktu musi połączyć się z koszykiem użytkownika.

Dodatkowo, sprzedawca może uruchomić usługę rekomendacji produktów, aby lepiej angażować użytkowników. Ta usługa musi wymieniać dane z bazą tagów produktów w celu generowania ofert, a także z bazą danych inwentarza, która wcześniej komunikuje się ze stroną produktu. Jest to więc współdziałający ze sobą ekosystem usług.

Współczesne aplikacje są często budowane jako sieci usług, które realizują określone funkcje biznesowe.

Jak działa siatka usług i jakie są jej korzyści?

Siatka usług nie tworzy nowych funkcjonalności w samej aplikacji. Jej działanie opiera się na grupie serwerów proxy, co jest powszechnie znane w środowisku korporacyjnym.

Serwery proxy są często wykorzystywane, gdy przeglądamy strony internetowe na firmowych komputerach. Serwery proxy, które są podstawą infrastruktury mikrousług, ułatwiają przekierowywanie żądań pomiędzy nimi. Stąd określenie „sidecar” (wózek boczny) dla serwerów proxy, które są częścią siatki usług. Działają one obok usług, a nie w ich wnętrzu. Serwery proxy „sidecar” różnych usług tworzą ze sobą wzajemnie połączoną sieć.

W sytuacji, gdy nie mamy siatki usług, programiści muszą samodzielnie implementować logikę komunikacji między mikrousługami w każdej z nich. W ten sposób logika komunikacji jest ukryta w poszczególnych usługach, co utrudnia realizację celów biznesowych.

Pojawiają się też trudności w diagnozowaniu problemów związanych z komunikacją. Siatka usług oferuje rozwiązania tych problemów.

Dzięki siatce usług komunikacja może być zautomatyzowana, ponieważ niezbędne dane są łatwo dostępne w ramach infrastruktury sieciowej. Ułatwia to identyfikację i eliminację problemów. Pozwala to również odciążyć zespoły IT i skierować ich wysiłki na inne, bardziej wartościowe zadania.

Dzięki abstrakcji komunikacji, uszkodzone usługi mogą być automatycznie omijane, co nie zakłóca działania pozostałych części aplikacji. Dane z siatki usług można łatwo analizować, co umożliwia optymalizację wydajności aplikacji.

Po omówieniu sposobu działania siatki usług, przejdźmy do przeglądu najpopularniejszych menedżerów siatek usług:

Siatka

Siatka to narzędzie do zarządzania siatkami usług, umożliwiające uruchamianie różnych implementacji siatek. Może być wdrożone w środowiskach Kubernetes i Docker. Zapewnia interfejs użytkownika (UI) i interfejs wiersza poleceń (CLI), umożliwiając konfigurację popularnych siatek usług, takich jak Linkerd i Istio. Meshery można wdrożyć bezpośrednio w klastrze lub lokalnie.

Siatka aplikacji Amazon

Siatka aplikacji AWS to usługa siatki usług dla platformy Amazon Kubernetes (EKS). Oferuje zarządzanie na poziomie aplikacji za pomocą proxy „sidecar” Envoy, obsługując ruch przychodzący i wychodzący. Wykorzystuje przerywanie obwodu, aby dostarczać metryki obserwacyjne przy użyciu AWS X-Ray. Siatka aplikacji AWS może być stosowana także z innymi usługami, takimi jak Amazon EC2 i AWS Fargate.

Linkerd

Linkerd to menedżer sieci open source, który wykorzystuje serwer proxy napisany w języku Rust do zarządzania mikrousługami. W zestawie z oprogramowaniem Grafana, dostarcza metryki obserwacyjne. W przeciwieństwie do innych menedżerów open source, Linkerd oferuje GUI i wsparcie dla Prometheus, a także kontrolerów ruchu, takich jak Traefik, Kong i Gloo. Linkerd obsługuje automatyczne aktualizacje w klastrach.

Istio

Istio to siatka usług open source, która wykorzystuje serwer proxy Envoy do zarządzania mikrousługami. Oferuje funkcje takie jak równoważenie obciążenia, tworzenie zasad, routing ruchu, limity czasu, przerywanie obwodu, przenoszenie ruchu i mechanizmy ponawiania prób. Istio zapewnia też funkcję śledzenia rozproszonego w kontenerach lub maszynach wirtualnych bez konieczności instalowania dodatkowego oprogramowania.

Kuma

Kuma to siatka usług stworzona przez firmę Kong, która rozszerza działanie istniejących usług za pośrednictwem proxy Envoy. Kuma wspiera różne mikrousługi i zapewnia wyższy poziom bezpieczeństwa i monitorowania sieci. Zawiera szereg predefiniowanych zasad dotyczących routingu, mTLS, kontroli ruchu i różnych funkcji bezpieczeństwa. Kuma umożliwia łatwe kontrolowanie różnych, izolowanych siatek za pomocą jednej płaszczyzny kontrolnej.

Siatka Nginx

Nginx to siatka usług dla Kubernetes, która szyfruje ruch między kontenerami za pomocą płaszczyzny danych opartej na Nginx Plus. Nginx wykorzystuje mechanizmy ograniczania szybkości i wyłączniki, aby zarządzać ruchem między usługami. Jest wyposażona w pulpit nawigacyjny Grafana do monitorowania metryk siatki usług.

Konsul

Konsul firmy HashiCorp to siatka usług, która ma wbudowaną warstwę proxy i wspiera proxy sidecar Envoy. Oferuje routing oparty na ścieżce, przenoszenie ruchu i równoważenie obciążenia. Konsul jest zintegrowany z HashiCorp Vault i obsługuje mTLS. Można go też zintegrować z Prometheus i Grafana w celu wizualizacji metryk.

Gloo Mesh

Gloo Mesh to usługa siatkowa zbudowana na bazie Istio, wykorzystująca proxy Envoy. Umożliwia wdrożenie modelu bezpieczeństwa Zero Trust. Gloo wspiera środowiska Kubernetes, maszyny wirtualne i inne mikrousługi. Jest przyjazny dla CI/CD i GitOps, co ułatwia wdrożenie.

Podsumowanie

Siatka usług rozwiązuje problem komunikacji między różnymi mikrousługami i zapewnia liczne korzyści w zakresie bezpieczeństwa. Jednakże, ze względu na ogromną liczbę dostępnych rozwiązań, istotne jest wybranie usługi, która najlepiej odpowiada konkretnym potrzebom i jest łatwa w zarządzaniu.


newsblog.pl