Śledzenie komunikacji w systemach rozproszonych z wykorzystaniem Spring Cloud Sleuth & Zipkin

W przypadku gdy mamy jedną monolityczną aplikację śledzenie zdarzeń jest banalne. Najczęściej dorzucamy logger np. Slf4j i zapisujemy mniej lub bardziej krytyczne zdarzenia odbywające się w naszej aplikacji. Jeżeli coś zawiedzie to w logach wyszukamy coś co przypomina nam błąd i dzięki temu łatwo możemy przeanalizować co się stało. Stosunkowo łatwo w takich aplikacjach odnaleźć…

W jaki sposób CORS spowalnia naszą aplikację i jak możemy temu zaradzić?

CORS (Cross-Origin Resource Sharing) dosyć poważnie wpływa na wydajność naszej aplikacji. W momencie gdy po stronie klienckiej wykonujemy jedno z zapytań, które wymaga wykorzystania CORS jak na przykład: kontakt z API serwera przy użyciu XMLHttpRequest/Fetch API, import czcionek za pomocą @font-face nasza przeglądarka w tle wykonuje tak na prawdę dwa zapytania HTTP, a nie jedno…

Spring Cloud Contract – testy kontraktowe

Żałuję, że nie znałem tego wcześniej. Jeden projekt przy którym pracowałem aż prosił się o zapewnienie takiej stabilności komunikacji jaką dają testy kontraktowe. Po co nam testy kontraktowe? Mało jest systemów, które są w pełni autonomiczne. Bardzo często projekt przy którym pracujemy jest jakąś częścią całego procesu biznesowego. Wymusza to, abyśmy w jakiś sposób komunikowali…

CategoriesBez kategorii

Wersjonowanie REST API za pomocą Content-type

Nasze API to kontrakt, który zawieramy z naszymi klientami na zasadzie: „Tak będziemy od dzisiaj ze sobą rozmawiać”. Niestety w praktyce zazwyczaj przychodzi ten moment kiedy sposób naszej rozmowy musi się delikatnie (lub diametralnie) zmienić. Powody mogą być różne – uznaliśmy, że może warto w końcu pozbyć się XML’a na rzecz JSON’a, albo że jednak…

CategoriesBez kategorii

Pozbądź się ifów ze swojego kodu za pomocą polimorfizmu

Skoro pracujesz z językiem obiektowym to czemu nie piszesz obiektowo? Większość instrukcji warunkowych może zostać zastąpiona polimorfizmem. Jakie są zalety takiego rozwiązania oraz jak przeprowadzić refactoring brzydkiej metody pełnej różnych warunków?

CategoriesBez kategorii

Co tak na prawdę robi @Transactional?

Spróbujmy zapanować nad tym co się dzieje podczas używania różnych adnotacji w Springu. Jak to jest, że czasami @Transactional (i inne adnotacje) nie działają? Do czego przydaje się ThreadLocal? Jeżeli piszesz w Springu to uwierz mi – dotykasz tego każdego dnia. 🙂

CategoriesBez kategorii

Co się dzieje gdy używasz adnotacji @Inject/@Autowired?

Niektóre osoby mogą powiedzieć, że to wiedza niepotrzebna. Spotkałem kilku programistów, którzy mimo wieloletniego doświadczenia nie do końca wiedzieli jak to działa i jakoś z tym żyli. Ale co to za życie. 😛 Wydaje mi się, że znajomość tego jak tak na prawdę działa wstrzykiwanie zależności, chociażby w takim podstawowym stopniu, to wiedza obowiązkowa –…

Valhalla – własne typy prymitywne w Javie

W tym artykule chciałbym opisać jedną z ciekawszych zmian jakie nas czekają w nowej Javie, a dokładniej mowa o projekcie Valhalla prowadzonym przez OpenJDK. O samym projekcie w społeczności słyszy się już od jakiegoś czasu, bo od ok. 2014 roku. Coś tam o oszczędzaniu pamięci, coś o przyspieszeniu… Ale o co tak na prawdę chodzi?…

CategoriesBez kategorii