Szkolenie z Architektury aplikacji
Poziom
ŚredniozaawansowanyCzas
16h / 2 dniTermin
IndywidualnieCena
IndywidualnieSzkolenie z Architektury aplikacji
Praktyczne szkolenie poświęcone projektowaniu aplikacji Java o czytelnych granicach modułów, kontrolowanych zależnościach i architekturze odpornej na zmiany technologiczne. Uczestnicy przeanalizują zastany system i uporządkują go z użyciem podejścia Package by Feature, fasad modułowych, CQRS, architektury heksagonalnej oraz Domain-Driven Design. Zakres obejmuje również modularny monolit, moduły Mavena, komunikację zdarzeniową, testy architektury i zasady bezpiecznego wykorzystania kodu generowanego przy wsparciu AI.
Dla kogo jest szkolenie z Architektury aplikacji?
Dla programistów Java, którzy samodzielnie tworzą aplikacje w Spring Boot, korzystają z Maven oraz znają podstawy JPA lub Hibernate, REST API i testów automatycznych
Dla osób rozwijających istniejące systemy, które chcą ograniczyć zależności między modułami, poprawić testowalność kodu i przygotować bezpieczny plan refaktoryzacji
Dla programistów rozpoczynających nowy projekt i potrzebujących praktycznych zasad podziału aplikacji według funkcji biznesowych oraz granic domenowych
Dla senior developerów i liderów technicznych rozwijających kompetencje w kierunku projektowania architektury aplikacji, modularnych monolitów i systemów mikroserwisowych
Czego nauczysz się na szkoleniu z Architektury aplikacji?
- Przeanalizujesz zależności w zastanej aplikacji i przygotujesz propozycję jej podziału na moduły o jednoznacznych odpowiedzialnościach
- Zaprojektujesz publiczne interfejsy modułów oraz ograniczysz dostęp do ich wewnętrznej implementacji za pomocą mechanizmów języka Java i fasad
- Rozdzielisz operacje zapisu i odczytu, a następnie uporządkujesz zależności zgodnie z architekturą heksagonalną oraz zasadą odwrócenia zależności
- Przygotujesz mapę kontekstów domenowych, podstawowy model domenowy oraz kontrakty komunikacji między modułami
- Zaprojektujesz komunikację zdarzeniową z uwzględnieniem idempotencji, ponowień, spójności ostatecznej i obserwowalności
- Ocenisz gotowość modularnego monolitu do etapowego wydzielenia mikroserwisów oraz udokumentujesz kluczowe decyzje, ograniczenia i ryzyka architektoniczne
Program szkolenia z Architektury aplikacji
Dzień 1
Moduł 1: Przykładowy kod i zastany system
- Konteneryzacja aplikacji – powtarzalne środowisko lokalne, konfiguracja usług zależnych i granice zastosowania kontenerów
- Java, Spring i Hibernate – warstwy techniczne, zależności frameworkowe, model persystencji i punkty sprzężenia
- Testy API w Postmanie – charakterystyka zachowania systemu, scenariusze regresji i kontrakty istniejących endpointów
Moduł 2: Dostęp pakietowy w Javie
- Konfiguracja IDE – wizualizacja zależności, reguły inspekcji i kontrola naruszeń granic pakietów
- Uproszczenie kodu – redukcja widoczności, ograniczenie API modułu i eliminacja zbędnych zależności
- Package by Feature i Package by Layer – struktura funkcjonalna, struktura warstwowa, zależności backend–frontend i kryteria wyboru
Moduł 3: Fasada – jedyne wejście do modułu
- Hermetyzacja modułu – publiczny kontrakt, implementacja wewnętrzna i ochrona granic odpowiedzialności
- Behavior-Driven Development – scenariusze biznesowe, kryteria akceptacji i testy zachowania modułu
- Przyszła refaktoryzacja – punkty rozszerzeń, kompatybilność kontraktów, zapis decyzji i kontrola kodu generowanego przez AI
Moduł 4: Command Query Responsibility Segregation (CQRS)
- Fasada i serwis – granice odpowiedzialności, kontrakt aplikacyjny i separacja logiki biznesowej od integracji
- Command Handler – obsługa poleceń, walidacja, transakcje, idempotencja i jednoznaczny rezultat operacji
- Query Repository – modele odczytu, projekcje danych, optymalizacja zapytań i separacja od modelu zapisu
Dzień 2
Moduł 5: Architektura czysta, heksagonalna i cebulowa oraz architektura portów i adapterów
- Warstwy biznesowe – możliwości, operacje, polityki, reguły domenowe i wsparcie decyzji
- Odwrócenie zależności – zależności skierowane do wnętrza, abstrakcje i niezależność logiki od frameworków
- Porty i adaptery – kontrakty wejściowe, kontrakty wyjściowe, adaptery interfejsu użytkownika i integracje zewnętrzne
- Persystencja w adapterach – repozytoria, mapowanie modeli, granice transakcji i niezależność domeny od bazy danych
- Spring jako adapter – konfiguracja frameworka poza rdzeniem aplikacji, wstrzykiwanie zależności i testowalność komponentów
Moduł 6: Moduły Mavena
- Zależności między modułami – kierunek zależności, graf modułów, cykle i automatyczna walidacja reguł architektonicznych
- Moduł i pakiet – granice kompilacyjne, granice logiczne, Spring Modulith i kryteria wydzielania komponentów
- Moduły Java 9+ – Java Platform Module System, eksportowane pakiety i kontrola dostępu na poziomie platformy
- Monolit i mikroserwisy – modularny monolit, koszty rozproszenia, autonomia wdrożeń i kryteria dekompozycji
- Różne języki JVM w modułach – interoperacyjność, wspólne kontrakty, proces budowania i koszt zróżnicowanego stosu technologicznego
Moduł 7: Domain-Driven Design
- DDD strategiczne – domeny, subdomeny, bounded contexts, język wszechobecny i Context Map
- EventStorming – zdarzenia domenowe, polecenia, aktorzy, polityki, agregaty i punkty integracji
- DDD taktyczne – encje, obiekty wartości, agregaty, repozytoria, serwisy domenowe i zdarzenia domenowe
- Encje bazodanowe i encje domenowe – różnice odpowiedzialności, mapowanie modeli i ochrona reguł biznesowych
- Praktyki projektowe – pragmatyczny zakres DDD, dokumentacja decyzji, przeglądy architektury i zarządzanie ryzykiem zmian
Moduł 8: Komunikacja zdarzeniami
- Publikacja zdarzeń z domeny i aplikacji – granice odpowiedzialności, zdarzenia domenowe, zdarzenia integracyjne i transactional outbox
- Ponowienia publikacji – idempotencja, backoff, kolejki błędów i kontrola wielokrotnego dostarczenia
- Obsługa zdarzeń – kolejność, wersjonowanie schematów, kompatybilność konsumentów i spójność ostateczna
- Wsparcie w Springu – zdarzenia aplikacyjne, Spring Modulith, integ