SALA A
Pełna agenda dnia
10:00
Porządkowanie chaosu - Structured concurrency
Kiedy w naszym świecie panuje porządek jest nam łatwiej się w nim poruszać. Ten dosyć znany fakt jako programiści odkrywamy z radością co parę lat. W Javie 21 dostaliśmy nową zabawkę - wątki wirtualne.
Jednym z ich głównych haseł reklamowych jest "Stwórz, wystartuj, zapomnij" - kusi, do tego wszyscy zachęcają by jak najwięcej takich wątków tworzyć. A wszyscy wiemy co dzieje się w dziecięcych pokojach po urodzinach naszych pociech, po świeżej dostawie zabawek - chaos. Tym razem jednak twórcy Javy starają się uprzedzić fakty i dać nam do użytku całkiem nowe API - Structured Concurrency. Nie jest to odkrycie koła na nowo i wielka sensacja - ale raczej sprawdzony sposób na "ogarnięcie" współbieżności w naszych programach.
Podczas tej prezentacji postaram się Was wprowadzić w koncepcję Structured Concurrency, dlaczego ona działa i dlaczego powstała. Postaram się również zaprezentować ten kod w działaniu.
Konrad Szałkowski
Java Rockstar
11:00
Przerwa
11:30
Spring Framework bez tajemnic: gusła adnotacji
Wielu programistów piszących w Spring Framework'u opiera się na adnotacjach w celu szybkiego implementowania wymaganej logiki biznesowej. Musisz zapewnić spójność kilku operacji na bazie SQL? Proszę! Użyj @Transactional. Chcesz utworzyć nowy index TTL na danej kolekcji w MongoDB? Tada! Użyj @Indexed z odpowiednimi parametrami. Metryki? Żaden problem, @Timed i inne adnotacje są tuż pod ręką! Wszystko pięknie i kolorowo wygląda - aż do momentu, gdzie jakaś zmiana nagle psuje naszą funkcjonalność i musimy zdebugować nasz (i nie tylko nasz) kod. Sprawdźmy jakie czarnoksięstwa Spring odprawia by nasycić wspomniane runy mocami.
Paweł Kowalski
Java Rockstar
12:30
Przerwa
13:00
OpenTelemetry Tracing - To nie takie proste: Prawdziwe wyzwania w złożonych systemach
Na początku wszystko wygląda dobrze, automatyczna instrumentacja działa, trace'y są widoczne. Ale z czasem coś zaczyna się psuć: część danych znika, trace'y się urywają, a koszty monitoringu rosną.
W tej prezentacji pokażę z czym naprawdę mierzymy się przy wdrażaniu OpenTelemetry w złożonych architekturach. Dowiesz się:
- Jak działa tracing "pod maską"
- Dlaczego trace'y czasem się gubią i jak to naprawić w scenariuszach takich jak:
- wielowątkowość
- wzorce Outbox/Inbox (manualne i z Debezium)
- Kafka Streams i przetwarzanie wsadowe
- sagi
- Jak nie utonąć w danych i kosztach:
- head-based vs tail-based sampling
- konfiguracja OpenTelemetry Collector
- jak filtrować to, co naprawdę istotne
Pokażę konkretne przykłady z projektów produkcyjnych: kod, konfiguracje, pułapki i skuteczne strategie. Po tej prezentacji będziesz wiedzieć, jak tworzyć naprawdę użyteczny system monitorowania nawet w najbardziej złożonych środowiskach.
Sebastian Kozak
Java Rockstar
14:00
Przerwa
14:30
At least once delivery: Outbox i jakieś 14 innych wzorców
Nie klepiemy wszystkiego na jedną dechę. Outbox Pattern - czy pasuje czy nie - wdrażamy bo zawsze dawał radę. Nawet jeśli tak nie do końca potrzebujemy takiej implementacji. Są różne inne sposoby bazujące na podstawowej koncepcji - pokażę Ci jakie.
Implementacji może być kilkanaście, warto mieć ich świadomość. Każda optymalizuje inne drivery architektoniczne. Jest z czego wybierać - pokażę opcje wraz z wszystkim czego potrzebujesz aby ocenić które implementacje powinieneś wziąć pod uwagę. Pozwoli Ci to też ocenić efektywność implementacji które znajdujesz w odwiedzanych projektach.
Aby podjąć odpowiedzialne decyzje, warto wykazać się szeroką perspektywą przed zespołem i być liderem rozumiejącym potrzeby i konsekwencje. Pomogę Ci zbudować uznanie w zespole dając argumenty w dyskusjach, zrozumieć obecne decyzje pokazując kontekst i dać Ci jasne kryteria oceny jakości tego jak skutecznie jest zaimplementowana komunikacja sieciowa.
Jacek Milewski
Java Rockstar
15:30
Przerwa
16:00
Instrumenting Java Code
This talk is about the various ways of instrumenting Java code; we will explore several different methods, concentrating on code generation; dive deeper into ByteBuddy, create a simple javaagent, all with actual running code examples.