| Tytuł: | Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów |
| Kod: | Arch-patterns |
| Kategoria: | Wzorce architektoniczne |
| Forma: | 50% wykłady / 50% warsztaty |
| Czas trwania: | 3 dni |
| Odbiorcy: | architekci |
| Zapisy: |
Indywidualne zamówienie i dopasowanie dla grupy. |
| Logistyka: |
W siedzibie klienta lub w innym dowolnym miejscu. |
Szkolenie prezentuje wybrane Wzorce Projektowe i Architektoniczne w praktycznym i niepodręcznikowym ujęciu osadzonym w kontekście projektowania aplikacji Webowych, platform, systemów i frameworków.
Podczas szkolenia prezentowane są przykłady praktycznego zastosowania zaczerpnięte z rzeczywistych systemów klas: ERP, narzędzia wizualne, systemy rozproszone, serwery.
Podczas szkolenia uczestnicy nabędą zintegrowaną wiedzę na temat zdobyczy nowoczesnej inżynierii oprogramowania pozwalającą im na tworzenie zaawansowanych systemów. Omawiane zagadnienia leżą u podstaw nowoczesnych frameworków i technologii – co zwiększa poziom ich zrozumienia i pozwala na świadome korzystanie. Przedstawiamy techniki łączenie wzorców w struktury wyższego rzędu.
Szkolenie przeznaczone dla projektantów i architektów pragnących poszerzyć swe kompetencje w zakresie standardowych styli architektonicznych.
Program jest ogólną ramą merytoryczną. Jego realizacja wykracza poza 3 dni. W trakcie analizy przedszkoleniowej wybieramy wzorce, które będą przydatne dla zespołu i skupiamy się tylko na nich w trakcie szkolenie. W ciągu 3 dni zwykle jesteśmy w stanie zaadresować ok 70% wymienionych wzorców.
Wyróżniki szkolenia
- Nowoczesne architektury (CqRS - wspierająca DDD)
- Możliwość oparcia przykładów o Kafka
- Dobór klasy rozwiązania do klasy problemu
Program Szkolenia
Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.-
Dokumentowanie architektury w podejściu 4C - Context, Containers, Components, Classes- Context
- Kontekst w jakim będzie działał system
- Główni aktorzy
- Procesy na poziomie organizacji w które zaangażowany jest system
- Rola innych systemów
- Kontekst w jakim będzie działał system
- Containers
- Kontenery techniczne w jakich będzie rozmieszczony system
- Wzorce integracji
- Protokoły komunikacji
- Kontenery techniczne w jakich będzie rozmieszczony system
- Components
- Komponenty i Serwisy w ujęciu SOA
- Dane kanoniczne wymieniane pomiędzy Serwisami
- Projektowanie API
- Zasada jednego źródła prawdy
- Komponenty i Serwisy w ujęciu SOA
- Classes
- Wstęp do technik i wzorców projektowania na poziomie klas
- Wstęp do technik i wzorców projektowania na poziomie klas
- Context
-
Architektura systemu - przegląd podejść- Modularyzacja
- Poziomy separacji
- Techniki integracji modułów
- Poziomy separacji
- Architektura Micro Kernel
- Command + Command Handler
- Ports and Adapters
- Restful
- 4 poziomy dojrzałości
- Rest jako protokół aplikacyjny a nie transportowy
- 4 poziomy dojrzałości
- Event Driven Architecture
- Architektury oparte o zdarzenia
- Events broker
- Events Bus
- Eventual Consistency
- Events broker
- Zależności czasowe pomiędzy zdarzeniami
- Sagi – orkiestracja zdarzeń
- Architektury oparte o zdarzenia
- Modularyzacja
-
Architektury aplikacji- Podejście warstwowe
- Różnice pomiędzy Layer a Tier
- Podział na logikę aplikacji i logikę domenową
- Logika aplikacji
- Modelowanie Use Case/User Story
- Stanowo czy bezstanowo
- Problemy projektowania API modułu
- Logika domenowa i Techniki Domain Driven Design - Building Blocks
- Agregaty
- Encje
- Value Objects
- Serwisy Domenowe
- Polityki
- Specyfikacje
- Fabryki
- Repozytoria
- Modelowanie niezmienników
- Poziomy modelu: Capacity, Operations, Policy – dostrajanie modelu, Decission Support
- Logika aplikacji
- Strategiczne testowanie warstw – ogólny przegląd podejścia
- Problem eksplozji kombinatorycznej przypadków testowych
- Testowanie górnych warstw w podejściu end2end
- Testowanie dolnych warstw w podejściu jednostkowym
- Problem eksplozji kombinatorycznej przypadków testowych
- Różnice pomiędzy Layer a Tier
- Praktyczne wykorzystanie technik Inversion of Control (DI, Events, AOP)
- Dependency Injection – podstawowa technika IoC
- Wykorzystanie zamiast wzorców fabrykujących
- Budowanie konkretnych Strategii, Dekoratorów itd. w zależności od stanu aplikacji (kontekst, konfiguracja)
- Otwartość na rozbudowę dzięki wzorcom Strategii
- Wykorzystanie zamiast wzorców fabrykujących
- Systemy sterowane zdarzeniami – silniejsza technika IoC
- Użycie do tworzenie rozszerzalnych architektur opartych o pluginy
- Użycie do tworzenia skalowalnych systemów wysokiej wydajności (wykorzystanie kolejek, np. JMS)
- Sagi - Modelowanie złożonych procesów zdarzeniowych
- Użycie do tworzenie rozszerzalnych architektur opartych o pluginy
- Aspect Oriented Programming
- Wstęp do AOP
- Techniki Interceptorów
- Przykłady zastosowania AOP
- Wstęp do AOP
- Dependency Injection – podstawowa technika IoC
- Projektowanie systemów otwartych na rozbudowę
- pluginy
- listenery
- wstrzykiwanie rozszerzeń
- podejście aspektowe
- pluginy
- Wzorce warstwy dostępu do danych
- DAO
- Repository
- Active Record
- Object-relational Mapping - na przykładzie Java Persistence API (Hibernate)
- Problemy ORM
- Niezgodność paradygmatów
- Mapowanie granic obiektów
- Kompozycja czy agregacja - mapowanie
- 3 podejścia do blokowania optymistycznego
- Wersjonowanie
- Blokowanie obiektów na podstawie których tworzymy inne obiekty (READ)
- Blokowanie spójności grafów obiektów poprzez ich korzeń (WRITE)
- Niezgodność paradygmatów
- DAO
- Podejście warstwowe
-
Modularyzacja- Sepracja Bounded Context
- Techniki wyznaczania granic modułów
- Techniki hermetyzacji modułów
- API
- DTO
- API
- Techniki wyznaczania granic modułów
- Integracja modułów - podejścia
- Zdarzenia
- Wywołania API
- Silniki procesów biznesowych
- Zdarzenia
- Sepracja Bounded Context
-
Command-query Responsibility Segregation – rozszerzona architektura warstwowa- Wsparcie dla Domain Driven Design
- Rozwiązanie problemów z niedopasowaniem ORM do przeglądu danych w Gridach
- Zorientowanie na skalowanie i rozszerzalność
- Tworzenie dedykowanych modeli: do odczytu, do operacji biznesowych
- Rozwiązanie problemów z wydajnością
- Architektura zewnętrznego indeksu z użyciem noSQL
- Rozwiązanie problemów z wydajnością
- Wsparcie dla Domain Driven Design
-
noSQL- Zastosowania
- Rodzaje baz - dobór do problemu
- Zastosowania
-
Testability – projektowanie architektur aplikacji zorientowanych na testy- Strategiczne testowanie
- Problem eksplozji kombinatorycznej przypadków testowych
- Mapowanie warstw aplikacji na piramidę testów
- Strategia
- Warstwa domenowa - testowanie jednostkowe
- Warstwa serwisów - testowanie end2end
- Warstwa domenowa - testowanie jednostkowe
- Problem eksplozji kombinatorycznej przypadków testowych
- Dążenie do uruchamiania logiki poza serwerem – zwiększanie produktywności, redukcja czasu używanego na redeploy
- Zagadnienia podatności architektury na testy: problemy i pułapki
- Techniki testowania jednostkowego: dummy, fake, stub, mock
- Narzędzia testowania jednostkowego i integracyjnego (JUnit, Mockito)
- 3 poziomy testów
- Specification by Example - cele biznesowe
- Flow - User Story
- Automatyzacja interakcji z UI - Agenty będące abstrakcją nad skryptem testowym
- Specification by Example - cele biznesowe
- Strategiczne testowanie
Pobierz program w formacie PDF