Szkolenie Software Architecture
Poziom
ŚredniozaawansowanyCzas
32h / 4 dniTermin
IndywidualnieCena
IndywidualnieSzkolenie Software Architecture
Praktyczne, czterodniowe szkolenie poświęcone fundamentom projektowania i oceny architektury oprogramowania. Uczestnicy przełożą wymagania biznesowe i atrybuty jakościowe na decyzje architektoniczne, przygotują dokumentację systemu w modelu C4 oraz porównają monolit modularny, mikroserwisy, architekturę zdarzeniową, systemy rozproszone i rozwiązania chmurowe. Program obejmuje Domain-Driven Design, Event Storming, wzorce architektoniczne, kontrakty API, operacyjność, obserwowalność i ocenę ryzyka. Warsztaty kończą się przygotowaniem oraz obroną koncepcji architektury dla przykładowego systemu.
Dla kogo jest to szkolenie?
Dla doświadczonych programistów, którzy projektują większe komponenty systemów i chcą rozwijać kompetencje architekta oprogramowania
Dla liderów technicznych i architektów rozpoczynających pracę z atrybutami jakościowymi, dokumentacją C4, Domain-Driven Design oraz oceną kompromisów architektonicznych
Dla analityków systemowych i product ownerów, którzy potrafią opisywać procesy biznesowe, wymagania funkcjonalne i ograniczenia rozwiązania
Dla inżynierów DevOps i infrastruktury znających podstawy konteneryzacji, sieci, procesów CI/CD oraz utrzymania aplikacji
Czego nauczysz się na szkoleniu?
- Zidentyfikujesz interesariuszy, wymagania funkcjonalne, ograniczenia oraz mierzalne scenariusze atrybutów jakościowych dla przykładowego systemu
- Przygotujesz dokumentację architektury obejmującą diagramy C4, wybrane modele UML lub BPMN oraz zapis decyzji w formie Architecture Decision Record
- Porównasz style i wzorce architektoniczne, a następnie uzasadnisz wybór rozwiązania na podstawie skalowalności, niezawodności, bezpieczeństwa, kosztów i złożoności operacyjnej
- Opracujesz mapę domeny, bounded contexts, kontrakty komunikacyjne oraz podstawowy model integracji synchronicznej i asynchronicznej
- Przeprowadzisz warsztatową ocenę architektury, przygotujesz listę ryzyk i zaprezentujesz rekomendowane decyzje wraz z kompromisami, miernikami oraz planem walidacji
Program szkolenia
Dzień 1: Fundamenty architektury oprogramowania
1.1. Wprowadzenie do architektury oprogramowania
- Definicja architektury oprogramowania, jej zakres i granice
- Architektura i projekt techniczny – poziomy decyzji oraz zakresy odpowiedzialności
- Architektura jako abstrakcja, zestaw reguł i mapa systemu
- Prawo Conwaya oraz wpływ struktury organizacyjnej na granice systemu
1.2. Rola architekta i interesariuszy
- Interesariusze systemu oraz ich wpływ na wymagania i decyzje projektowe
- Mapa interesariuszy, modele komunikacji i zasady zarządzania oczekiwaniami
- Kompetencje architekta, odpowiedzialność decyzyjna oraz kontrola rekomendacji generowanych przy wsparciu AI
1.3. Atrybuty jakościowe i wymagania niefunkcjonalne
- Kluczowe atrybuty jakościowe: dostępność, wydajność, bezpieczeństwo, testowalność, modyfikowalność i operacyjność
- Perspektywy jakościowe użytkowników, klientów, zespołów technicznych i organizacji
- Scenariusze jakościowe, kompromisy architektoniczne oraz zarządzanie ryzykiem
Dzień 2: Style architektoniczne i modele systemów
2.1. Klasyczne style architektoniczne
- Monolit – korzyści, ograniczenia i architektura monolitu modularnego
- SOA – zasady, kontrakty usług, rejestr usług i integracja systemów
- Modularność – hermetyzacja, spójność, sprzężenie i kontrola zależności
- Mikroserwisy – autonomia usług, koszty rozproszenia, API Gateway i service discovery
2.2. Systemy rozproszone i architektury chmurowe
- Charakterystyka systemów rozproszonych: skalowalność, współbieżność, opóźnienia, częściowe awarie i tolerancja błędów
- Modele usług chmurowych: IaaS, PaaS, FaaS i serverless
- Modele wdrożeniowe: chmura publiczna, prywatna, hybrydowa i środowisko wielochmurowe
- Konteneryzacja i orkiestracja: obrazy OCI, Docker, Kubernetes oraz granice odpowiedzialności platformy
2.3. Model 12-Factor App
- Zasady projektowania przenośnych, skalowalnych i operowalnych aplikacji usługowych
- Deklaratywność, bezstanowość, konfiguracja środowiskowa, logi, procesy i skalowanie
Dzień 3: Projektowanie systemów w praktyce
3.1. Modelowanie i dokumentowanie architektury
- Cele modelowania oraz pytania poprzedzające przygotowanie diagramów
- Jakość modeli: precyzja, kompletność, aktualność i czytelność
- Notacje i techniki modelowania: C4, ArchiMate, UML i BPMN
- Narzędzia CASE, dokumentacja jako kod oraz kontrola artefaktów tworzonych przy wsparciu AI
3.2. Wzorce architektoniczne
- Architektura warstwowa, heksagonalna, zdarzeniowa i mikrojądro
- Architektury referencyjne oraz zasady adaptacji do kontekstu organizacji
- Luźne sprzężenie, separacja odpowiedzialności i granice modułów
- Widoki architektoniczne oraz perspektywy funkcjonalne, informacyjne, wdrożeniowe i operacyjne
3.3. Pomiar i ocena architektury
- Kryteria pomiaru architektury, scenariusze jakościowe i architektoniczne funkcje dopasowania
- Metryki strategiczne i techniczne: KPI, OKR, SLI, SLO oraz budżety błędów
- Modele dojrzałości architektonicznej i ocena zdolności organizacyjnych
- Wartość IT: centrum kosztów, wsparcie strategii i katalizator rozwoju produktu
Dzień 4: Domain-Driven Design i współczesne podejścia
4.1. Domain-Driven Design
- Domena, model domenowy i język wszechobecny
- Granice usług, bounded contexts i mapa kontekstów
- Subdomeny główne, wspierające i generyczne
- Wzorce strategiczne i taktyczne DDD: encje, obiekty wartości, agregaty, serwisy oraz zdarzenia domenowe
- Event Storming jako metoda odkrywania domeny i zależności procesowych
4.2. Mikroserwisy i DDD w praktyce
- Kryteria zastosowania mikroserwisów oraz przesłanki pozostania przy monolicie modularnym
- Komunikacja synchroniczna i asynchroniczna – sprzężenie czasowe, kontrakty i semantyka dostarczenia
- Baza danych na usługę oraz współdzielona baza danych – własność danych i konsekwencje integracyjne
- Spójność ostateczna i transakcje ACID – zakresy zastosowania oraz kompromisy
- Architektura sterowana zdarzeniami – zdarzenia domenowe, integracyjne i niezawodność publikacji
- CQRS i Event Sourcing – modele odczytu, historia zdarzeń, wersjonowanie i koszty operacyjne
4.3. Operacyjność i DevOps
- Zarządzanie konfiguracją i infrastrukturą: GitOps, kontenery, Terraform i Ansible
- Monitoring, scentralizowane logi, śledzenie rozproszone, OpenTelemetry oraz sygnały diagnostyczne
- Wzorce infrastrukturalne: broker komunikatów, transactional outbox, kolejka błędów i materialized view
4.4. API-first i kontrakty integracyjne
- REST, GraphQL i gRPC – charakterystyka, kompromisy i kryteria doboru
- Dokumentacja, wersjonowanie i specyfikacje kontraktów: OpenAPI, AsyncAPI oraz Protocol Buffers
- Testy kontraktowe, kompatybilność konsumentów i bezpieczna ewolucja interfejsów
4.5. Podsumowanie i projekt końcowy
- Koncepcja architektury systemu przygotowana od podstaw
- Dobór stylów, wzorców, kontraktów i sposobu dokumentowania decyzji
- Prezentacja oraz obrona decyzji architektonicznych z uwzględnieniem kompromisów, ryzyk i planu walidacji