Cloud Native – reverse proxy, service mesh

W dobie tworzenia aplikacji Cloud Native, czyli takich, które będą działać w tzw. chmurze, ważnym elementem stają się API gateway, reverse proxy oraz service mesh. Czym od siebie te pojęcia się różnią ? Jakie przykłady implementacji (rozwiązań) można użyć dla każdego z nich ?

API gateway

API gateway jest centralny miejscem znajdującym się przed API naszej organizacji, przez który każde żądanie z zewnątrz musi zostać przetworzone i wysłane od odpowiedniego żądania wewnątrz organizacji.

Różnica między API gateway a service mesh diametralna, są to tak naprawdę 2 różne podejścia dla różnych przypadków użycia. 

W obszarze API gateway znajdziemy bardzo wiele rozwiązań, z których niektóre zostały krótko przedstawione poniżej.

Apigee

Cały ekosystem Apigee jest niezwykle rozbudowany, posiada on komponenty nie tylko do projektowania API, ale do jego zabezpieczenia, monitorowania czy nawet monetyzowania. Apigee jest rozwiązaniem komercyjnym.

API Umbrella

API Umbrella nie ma tak rozbudowanego ekosystemu, ale jest rozwiązaniem open-source, więc na początek przygody z API gateway z pewnością się przyda 🙂

KrakenD

Niezwykle wydajny, rozproszony, bezstanowy API gateway i co najważniejsze darmowy 🙂

OpenResty

Kolejny z darmowych narzędzie oparte na Nginx, które ma ogromne możliwości rozbudowy dzięki językowi Lua.

NGINX

W niektórych przypadkach nie ma konieczności posługiwać się dodatkowym narzędziem, tylko wykorzystać to, co zawsze jest przy aplikach webowych tj. serwer WWW taki jak Nginx.

Kong

Wydaje się obecnie jeden z najpopularnieszych rozwiązań, również open-source.

Reverse proxy

Reverse proxy jest pewnym rodzajem proxy, które po otrzymaniu żądania klienta w imieniu klienta kontaktuje się z docelowym systemem, otrzymuje odpowiedź, która jest zwracana do klienta jakby pochodziła od serwera docelowego.

Poniżej przedstawione zostały 2 propozycje rozwiązań dla reverse proxy, a także odsyłam do oficjalnych witryn każdego z produktów oraz do porównania Traefik vs Envoy.

Traefik

Traefik jest niezwykle rozbudowanym reverse proxy z duża liczbą funkcji takich jak:

  • Auto Discovery (w Kubernetes czy Mesos)
  • Distributed Tracing (integracja z Jaeger & Zipkin, wsparcie dla Open Tracing)
  • Metryki (integracja z Prometheus czy Data Dog)
  • Bezpieczeństwo (SSL/TLS, integracja z Let’s Encrypt)
  • Protokoły HTTP i TCP (routuje nie tylko HTTP, ale aplikacje wykorzystujące inne protokoły oparte na TCP)
  • Middlewares (bardzo duża elastyczność i możliwość konfiguracji)
  • Canary Deployments (dla wybranej grupy użytkowników dostarczana jest zaktualizowana wersja aplikacji)
  • Mirroring (kopiowanie ruchu dla różnych serwisów)

Envoy

Envoy jest rozwiązaniem darmowym, które oferuje:

  • niezależność od języka programowania aplikacji
  • wsparcie dla HTTP/2 i gRPC 
  • zaawansowany load-balancer (automatyczne ponowienia, circuit breaker, rate limiting etc.)
  • API do zarządzania konfiguracją 
  • obserwowalność i distributed tracing dla każdego ruchu warstwy 7

Gobetween

Niezwykle wydajny, elastyczny, łatwy w konfiguracji i uruchomieniu, a przede wszystkim darmowy i prosty w użyciu.

Service mesh

Zastosowania service mesh w naszych rozwiązaniach umożliwia nam pozbycie się z serwisu wszystkich operacji dotyczących obsługi wejścia, wyjścia, bezpieczeństwa, logowania itd. do komponentów zewnętrznych pełniących rolę proxy dla naszej aplikacji. Poniżej przedstawione zostały najbardziej popularne rozwiązania.  

Istio

W kategorii service mesh zdecydowanym faworytem jest Istio, który w skrócie realizuje poniższe funkcje:

  • łączy ruch między wywołaniami różnych serwisów oraz dostarcza mechanizmy pozwalające wykonywać ich aktualizację w sposób stopniowy
  • zabezpiecza serwisy poprzez mechanizmy uwierzytelniania, autoryzacji oraz szyfrowania komunikacji między serwisami
  • zarządza politykami dostępu do zasobów
  • obserwuje, monitoruje i loguje ruch między serwisami

Kiali

Kiali nie jest rozwiązaniem konkurencyjnym, ale umieściłem je dlatego, ponieważ zwiększa obserwowalność Istio, dostarcza metryki oraz integrację z Grafana. Z kolei dla distributed tracing pozwala na integrację z Jaeger.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Time limit is exhausted. Please reload CAPTCHA.