Wykorzystanie Service Mesh do pracy z aplikacjami opartymi na mikroserwisach

Share
Share

Czym jest Service Mesh i dlaczego ma tak duże znaczenie dla użytkowników Kubernetesa? I dlaczego czasami o wiele łatwiej jest dodać nową funkcjonalność do istniejącej usługi niż tworzyć nową usługę i dodawać ją do naszej infrastruktury?

Aby zrozumieć, jak ważne jest używanie Service Mesh podczas pracy z aplikacjami opartymi na mikroserwisach, zacznijmy od pewnej historii. Załóżmy, że pracujesz nad dużą aplikacją bankową opartą na mikroserwisach, w której każdy błąd może mieć poważne konsekwencje. Pewnego dnia zespół programistów otrzymuje prośbę o dodanie do aplikacji funkcji oceniania. Rozwiązanie jest oczywiste: należy stworzyć nową mikro-usługę, która będzie obsługiwać oceny użytkowników. Teraz czas na trudniejszą część zadania. Zespół musi oszacować rozsądnie czas potrzebny na dodanie tej nowej usługi. I szacuje, że dodanie systemu ocen może zostać ukończone w 4 sprintach. Kierownik jest wściekły. Nie może zrozumieć, dlaczego tak trudno jest dodać do aplikacji tak prostą funkcję oceniania.

Aby zrozumieć te oszacowania czasu musimy uświadomić sobie, co trzeba zrobić, aby uzyskać funkcjonalną mikro-usługę oceniania. Część CRUD (Create, Read, Update, Delete) jest łatwa – wystarczy proste kodowanie. Ale dodanie tego nowego projektu do naszej aplikacji opartej na mikroserwisach nie jest trywialne. Po pierwsze, musimy zaimplementować uwierzytelnianie i autoryzację, a następnie potrzebujemy jakiegoś rodzaju śledzenia, aby zrozumieć, co dzieje się w naszej aplikacji. Ponieważ sieć nie jest niezawodna (niestabilne połączenia mogą powodować utratę danych), musimy pomyśleć o rozwiązaniach dotyczących ponawiania prób, wyłącznikach sieciowych, timeoutach itp.

Musimy także zastanowić się nad strategiami wdrażania. Być może chcemy korzystać z wdrożeń typu shadow deployments, aby testować nasz kod na produkcji bez wpływu na użytkowników. Może chcemy dodać możliwości testowania A/B lub wdrożenia kanaryjskie. Tak więc nawet jeśli tworzymy tylko prosty mikro-serwis, istnieje wiele przekrojowych zagadnień, o których musimy pamiętać.

Dlatego czasami o wiele łatwiej jest dodać nową funkcjonalność do istniejącej usługi niż tworzyć nową usługę i dodawać ją do naszej infrastruktury. Wdrożenie nowej usługi, dodanie uwierzytelniania i autoryzacji, skonfigurowanie śledzenia, utworzenie potoków CI/CD, wdrożenie mechanizmów retry i wiele innych czynności może zająć sporo czasu. Jednak dodanie nowej funkcji do istniejącej usługi spowoduje, że stanie się ona zbyt duża.

Jakie jest więc rozwiązanie tego problemu? Czy istnieje sposób, aby zaimplementować wszystkie te zagadnienia raz i wstrzyknąć je do każdej mikroserwisu, tak aby zespół programistów mógł skupić się na wytwarzaniu wartości biznesowej? Odpowiedzią jest oprogramowanie Istio. Ciąg dalszy tego blogu (Stupid Simple Service Mesh in Kubernetes) znajdziesz na stronie: https://www.suse.com/c/rancher_blog/stupid-simple-service-mesh-in-kubernetes

Share
(Visited 1 times, 1 visits today)
Rafal Kruschewski
398 views