Czy należycie do tych programistów, którzy lubią eksperymentować z modnymi w danym momencie podejściami do architektury? Jeśli tak, to mamy dla Was wprowadzenie, jak zrobić go dobrze. Oprócz tego, zajmiemy się tematem piekła zależności, i jak Java wypada pod tym względem na tle innych języków.
1. A czy Wy już umiecie w Event Sourcing?
Nie wiem czy też macie takie wrażenie, ale w mojej perspektywie z jakiegoś powodu Event Sourcing (i CQRS) stały się „domyślnym” pytaniem rekrutacyjnym jeśli chodzi o weryfikacje wiedzy kandydata w temacie System Designu. Z jednej strony ma to sporo sensu – w dzisiejszym mocno rozproszonym świecie, Event Sourcing ze swoją monotonicznością i uporządkowaniem jawi się jako panaceum na naprawdę wiele problemów. Mam jednak wrażenie, że nie tylko kandydaci, ale również rekruterzy tak naprawdę często udają, że wiedzą o co w tym wszystkim chodzi. Event Sourcing jest po prostu tematem na tyle złożonym, że trudno jest w prosty (nie prostacki) sposób udowodnić swoją znajomość tego wzorca architektonicznego. Równocześnie jednak, siedząc po drugiej stronie stołu (czy raczej w 2022 ekranu) zadać pytania pogłębiające na tyle skutecznie, aby być w stanie wybadać, czy kandydat nie klepie nam wyuczonych regułek.
Dlatego też cieszy fakt, że wielu ludzi w naszej branży wzięło sobie za cel propagację wiedzy na temat Event Sourcingu. Ja osobiście przyznam, że dopiero lektura cudownego „Desigining Data-Intensive Applications” pana Klepmanna sprawiła, że ułożyłem sobie w głowie, gdzie Event Sourcing ma swoje miejsce w „taksonomii” sposobów przechowywania danych. Jednocześnie jednak, o ile przykłady Martina są świetne, żeby ułożyć sobie w głowie teorie, to jednak brakuje w nich trochę spojrzenia na potencjalną implementację.
Dlatego właśnie chciałem Wam dzisiaj podrzucić repozytorium EventSourcing.JVM autorstwa Oskara Dudycza. Jest to samodzielny kurs, który przeprowadzi Was krok po kroku przez serie ćwiczeń, pokazujących zarówno podstawy, jak i kruczki w tym jak powinno tworzyć się systemy oparte o Event Sourcing. Aby je prawidłowo wykonać, będziecie musieli też zapoznać się z wybranymi tekstami dotyczącymi tego typu architektury aplikacji. EventSorucing.JVM to dobry mix piguły wiedzy i praktyki, który sugeruje spróbować tym, którzy naprawdę chcą zrozumieć czym ten cały Event Sourcing jest.
Ogólnie w tym miejscu chciałbym polecić też prowadzony newsletter Oskara: Architecture Weekly. Sam regularnie czytam i jest to jedna z niewielu dobrych rzeczy, które pozostawiła po sobie pandemia – całość zaczęła być bowiem publikowana końcem 2020. Ciągle jeszcze pamiętam jej oryginalną wersję i potrzebę śledzenie całości poprzez releasy GitHubowe. Cieszę się, że projekt od tego czasu tak mocno wyewoluował.
Źródła
Zainstaluj teraz i czytaj tylko dobre teksty!
2. Problemy z zarządzanie zależnościami w Javie
Zarządzanie zależnościami w Javie to coś, co jest trochę jak prąd elektryczny, poczta albo wywóz śmieci – częścią naszej infrastruktury, której nie doceniamy dopóki takowa „po prostu działa”. Wystarczy jednak, że na moment coś w całym skomplikowanym mechanizmie zazgrzyta i z miejsca przypominamy sobie, jak bardzo ważne są one dla naszego życia i zdrowia (w tym psychicznego). I o ile raczej nikt nie wchodzi na codzień w szczegóły usług komunalnych, to zrozumienie tajników dependency managementu może pomóc nam nie kopnąć się w kolano w naszej codziennej pracy. Java bowiem posiada bowiem sporo mechanizmów działających w tym zakresie. Zarówno takich które aktywnie prowadzą nas za rączkę, jak i tych, które nieumiejętnie użyte mogą doprowadzić do nietrywialnych błędów.
To właśnie holistyczne spojrzenie na ten cały ekosystem jest tematem przewodnim tekstu Renato Athaydesa The difficult problem of managing Java dependencies. Obiecuje Wam, że po lekturze rzeczywiście zaczniecie doceniać, jak wiele robią za Was narzędzia i jak wiele nietrywialnych sytuacji są zmuszone rozwiązywać. Całość rozkłada buildy Mavena i Gradle na czynniki pierwsze, pokazując co tak właściwie dzieje się tam pod spodem. Nie zabrakło również w tekście miejsca na przyglądnięcie się JPMS-owi (aka Jigsaw aka moduły Javowe) i ocenie, na ile rzeczywiście pomaga on zachować stabilność tych bardziej złożonych aplikacji. Bardzo ciekawym aspektem jest też porównanie do konkurencji (tutaj głównie Rustowego Cargo) i przyglądnięciu, jakie przez lata nowe rozwiązania pojawiły się w „nowocześniejszych” językach niż Java oraz czy rzeczywiście rozwiązały one problem zarządzania zależnościami lepiej.
A jak już w temacie jesteśmy, to pozwolę sobie ponownie podrzucić serię Jar Hell, która już kiedyś się w naszych przeglądach znalazła. W dalszym ciągu jest to jednak świetne Deep-Dive w problematykę ClassPatha i tego, jak działają mechanizmy z nim związane. Takie rzeczy po prostu szybko się nie starzeją.
Źródła
Zainstaluj teraz i czytaj tylko dobre teksty!
Plotka: Zwolnienia w Oracle
Ze względu na spadek przychodów rok do roku o 28%, kierownictwo Oracle ma podobno na oku program redukcji kosztów o wartości 1 mld USD, który zakłada reorganizację organizacji i zwolnienie tysięcy pracowników.
Według plotek do zwolnień ma dojść już w sierpniu, a zaafektowani mają być głównie bardziej doświadczeni pracownicy, których można zastąpić młodszą „siłą roboczą”. Na razie są to głównie właśnie plotki, ale w sieci pojawia się coraz więcej komunikatów w tym temacie. Nie wiadomo na ile taki ruch może wpłynąć na Javę jako taką, „na dzielnicy” mówi się w tym momencie głównie o zwolnieniach w działach marketingu i reklamowych.