Mając w aplikacji bogatą logikę biznesową, chcielibyśmy móc testować ją jak najszybciej, niezależnie od innych warstw oraz punktów wejścia i wyjścia naszej aplikacji. Żeby osiągnąć ten cel, może nam pomóc idea portów i adapterów!
Architektura Portów i Adapterów | Heksagonalna
Porty i Adaptery, znane również jako architektura heksagonalna, to podejście, które pozwala na odseparowanie logiki biznesowej od pozostałych warstw w aplikacji. Jest to ogólna idea, która na pewno warto mieć w swoim tool boxie!
Testcontainers: Docker w testach integracyjnych
W testach integracyjnych często musimy zadbać o to, aby nawiązać kontakt z zewnętrznymi usługami, np. z bazą danych. Najlepiej, żeby te usługi były identyczne jak na środowiskach wdrożeniowych, a ich tworzenie w testach było szybkie i zautomatyzowane. W tym celu może nam pomóc Testcontainers!
Java 21: Nowości z przykładami
Java 21 przynosi wiele nowości, między innymi Virtual threads, Sequenced Collections, Record Patterns i wiele innych. W tym wpisie omówione są te innowacje wraz z przykładami zastosowania w kodziku 😀
Niejednoznaczność zasad programowania
Zasady programowania, to niewidzialne linie, których programista stara się nie przekroczyć. Często jednak bywają one trudne do jednoznacznej interpretacji. Każdy deweloper może inaczej rozumieć daną zasadę, a to może prowadzić do chaosu, utrudniając efektywną współpracę i rozwój oprogramowania.
Kohezja i coupling
Większość zasad programowania aplikowalnych w Javie wywodzi się z podstawowych koncepcji programowania obiektowego, między innymi z kohezji i couplingu. Warto znać te metryki, bo mogą one wskazać nam potencjalne problemy w kodzie.
Value Object
Niektóre wzorce są proste do użycia, ale mogą znacznie poprawić jakość naszego kodziku. Takim właśnie wzorcem jest Value Object.
Outbox Pattern
Jeśli w ramach jednego procesu komunikujesz się z dwoma niezależnymi narzędziami, np. bazą danych i brokerem wiadomości, to zawsze jest ryzyko, że jedno z tych narzędzi jest niedostępne. Jak więc zwiększyć szanse na powodzenie takiego procesu? W tym może nam pomóc Outbox Pattern!
Command vs Event
Command i Event to dwa typy wiadomości często stosowane w systemach rozproszonych. Każdy z nich ma jednak swoje przeznaczenie i role do odegrania w procesie komunikacji.
Saga Pattern
Rozproszone transakcje są jednym z największych wyzwań w architekturze mikroserwisów. Gdy mamy do czynienia z jednym procesem rozproszonym jako kilka transakcji na różnych bazach danych, to już nie jest to samo, co transakcja na jednej bazie danych, gdzie zawsze możemy zrobić rollback. Jak więc podejść do takiej rozproszonej transakcji? Jak sobie poradzić, jeśli coś się wysypie w procesie, który działa na wielu bazach?