Monitoring Mikrousług – diagnostyka problemów w środowisku rozproszonym

Monitoring Mikrousług – diagnostyka problemów w środowisku rozproszonym

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
Pula połączeń i źródło danych

Pula połączeń i źródło danych

Tworząc systemy, które wymieniają dane z bazą danych, chcesz, aby komunikacja była niezawodna.
Możesz wykonywać operacje, które mogą być krótkie, ale za to częste, a może będziesz wykonywał takie, które są bardzo długie.
Operacje są wykonywane w ramach nawiązanego wcześniej połączenia do bazy.
Użytkowników systemu przeważnie jest wielu, a ich sesje powinny być niezależne.

W pewnym momencie może się zdarzyć, że użytkownik nie będzie mógł wykonać jakiejś operacji,
ponieważ baza danych odrzuci kolejne połączenie ze względu na jakiś limit.

Ale przez odpowiednią konfigurację możesz zoptymalizować szybkość działania Systemu w zakresie dostępu do nawiązanego
połączenia do bazy danych.

Sposoby na poprawę wydajności Hibernate 🚀

Sposoby na poprawę wydajności Hibernate 🚀

W Hibernate wiele operacji wykonywanych jest „auto magicznie”. Nie znając specyfiki, możesz doprowadzić do spadku wydajności.

Jeśli poznasz i zrozumiesz zasady działania, będziesz w stanie poprawić wydajność operacji związanych z komunikacją z bazą danych.

Wiedząc jak włączyć monitorowanie, zweryfikujesz czy zapytania wysyłane do bazy danych są tymi, których się spodziewałeś.

Jak działa Lazy-Loading? Jak obsłużyć operacje masowe? Czym jest problem N+1?

Wiele wersji Java na komputerze 🎨 – SDKMAN

Wiele wersji Java na komputerze 🎨 – SDKMAN

SDKMAN to narzędzie oryginalnie stworzone dla *nix-owych systemów operacyjnych w prosty sposób pozwala na pobieranie i przełączanie się pomiędzy różnymi SDK na maszynie.

Wspiera instalację wielu środowisk SDK, np. dla Java, Groovy, Scala, Kotlin, Maven, Micronaut. Poprzednio znane jako GVM (Groovy enVironment Manager).

W tym wpisie skupie się na instalacji narzędzia na Windows i po krótce przejdę przez najważniejsze funkcje.

Ważne parametry JVM, o których powinieneś wiedzieć przed wyjściem na produkcję

Ważne parametry JVM, o których powinieneś wiedzieć przed wyjściem na produkcję

Podczas przygotowywania aplikacji przed wyjściem na produkcję dobrze jest zwrócić uwagę na to, z jakimi java opts jest ona uruchamiana. Włączenie kluczowych z nich pozwala na spełnienie wymagań niefunkcjonalnych, takich jak stabilność systemu, szybkość działania (inicjalizacji), diagnostyka. Z tego artykułu dowiesz się o opcjach m.in.: -Xms i -Xmx (oraz ich działaniu w kontekście kontenerów Docker), -XX:+HeapDumpOnOutOfMemoryError, -Duser.timezone, -Djava.security.egd, -server, -Xloggc.

HTTP/3 – musisz to poznać

HTTP/3 – musisz to poznać

Trudno w to uwierzyć, ale protokół HTTP nie skończył nawet 30 lat. HTTP początkowo został stworzony w 1989 roku i został nazwany WorldWideWeb. Dopiero w 1991 roku, standard komunikacji pomiędzy przeglądarką internetową a serwerem, czyli Hypertest Transfer Protocol...