utworzone przez Piotr Pelczar | Java, Mikroserwisy i Integracje, Tip and Tricks
Wyobraź sobie, że wystąpił problem w produkcyjnym systemie zbudowanym z sieci rozproszonych mikrousług. Błąd przekazuje zespół, który złożył żądanie do Twojego systemu i operacja zawiodła – obsługa trwała długo, a następnie został zwrócony błąd. Podają requestId oraz szczegóły żądania.
Czy byłbyś w stanie szybko odpowiedzieć, co konkretnie było przyczyną błędu?
W tym wpisie chciałbym poruszyć problematykę Observability (obserwowalności) systemów opartych o architekturę rozproszonych mikrousług. Opowiem o:
- Log Aggregation, zbieranie logów w środowisku rozproszonym
- Distributed Tracing, czyli śledzenie konkretnego żądania
- Monitoring ogólnej kondycji systemu
- Perspektywa ogólna serwisu
- Perspektywa szczegółowa instancji
utworzone przez Damian Rudczyk | Java, Mikroserwisy i Integracje
Konsument Kafki jest używany do optymalnego odczytywania wiadomości z partycji topika, który subskrybuje. Główną rolą konsumenta jest wziąć połączenie do klastra Kafki oraz ustawienia konsumenta, aby połączyć się z brokerem i zacząć odczytywać wiadomości.
utworzone przez Piotr Pelczar | Java, Mikroserwisy i Integracje
W świecie mikroserwisów pojawia się temat sposobu ich integracji, aby wymienić wiedzę i udostępnić usługi pomiędzy domenami. Dwa popularne podejścia to komunikacja synchroniczna (np. HTTP, REST) oraz integracja przez system kolejkowy typu Apache Kafka, RabbitMQ czy JMS (Java Message Service np. Tibco).
Każde podejście ma szereg wad i zalet, dlatego przed podjęciem decyzji należy zrozumieć przypadek użycia, poznać kontekst biznesoowy i wymagania niefunkcjonalne oraz przeprowadzić analizę za i przeciw cechom każdego z rozwiązań.
utworzone przez Damian Rudczyk | Java, Mikroserwisy i Integracje
Apache Kafka to bardzo rozbudowany system umożliwiający dostosowanie się pod praktycznie każdą potrzebę biznesową. Jeśli chcemy wysokiej przepustowości i zezwalamy na utratę komunikatów (np. logi, metryki) – proszę bardzo – Kafka przygotowuje dla nas ustawienia producentów. Jeśli zależy nam na jak największej spójności danych (np. przelewy, geolokalizacja) – proszę bardzo mamy inne ustawienia. W dzisiejszym artykule na tapetę weźmiemy producenta w systemie Apache Kafka.
utworzone przez Piotr Pelczar | Java, Mikroserwisy i Integracje
Podczas komunikacji pomiędzy zintegrowanymi systemami może dojść do krótkotrwałej awarii. Dobrą praktyką jest, aby aplikacja działająca w środowisku rozproszonym była odporna i przygotowana na wystąpienie tymczasowych awarii i ponawiała operację, zamiast zatrzymywać proces biznesowy.
utworzone przez Damian Rudczyk | Java, Mikroserwisy i Integracje
W praktycznych projektach, kiedy komunikujemy się pomiędzy mikrousługami za pomocą kolejki – musimy uzgodnić w Teamie, w jaki sposób będziemy serializowali i deserializowali dane na kolejce. W jaki sposób zostanie rozwiązane wersjonowanie struktury komunikatów? To kluczowe pytania, z którymi musi zmierzyć się każdy zespół przy projektowaniu komunikacji pomiędzy mikroserwisami.