Szkolenie Architektura mikroserwisów we frontendzie
Poziom
ŚredniozaawansowanyCzas
16h / 2 dniTermin
IndywidualnieCena
IndywidualnieSzkolenie Architektura mikroserwisów we frontendzie
Praktyczne szkolenie poświęcone projektowaniu skalowalnych, testowalnych i wydajnych aplikacji frontendowych. Uczestnicy przeanalizują architekturę z perspektywy architekta i programisty, przełożą wymagania biznesowe na granice modułów oraz porównają podejścia oparte na DDD, monorepo, multi-repo i micro frontends. Zakres obejmuje również zarządzanie stanem, zasady SOLID, wzorce projektowe, programowanie obiektowe i funkcyjne, Core Web Vitals oraz kontrolę ryzyk związanych z zależnościami i kodem generowanym przy wsparciu AI.
Dla frontend developerów, którzy samodzielnie tworzą aplikacje w JavaScript lub TypeScript oraz znają moduły, programowanie asynchroniczne i architekturę komponentową
Dla programistów przygotowujących się do roli senior developera, lidera technicznego lub architekta frontendowego
Dla zespołów frontendowych, które chcą uporządkować granice modułów, zarządzanie stanem, standardy jakości i sposób podejmowania decyzji architektonicznych
Dla full-stack developerów i liderów technicznych odpowiedzialnych za wydajność, testowalność, rozwój oraz integrację aplikacji frontendowych
Czego nauczysz się na szkoleniu?
- Przeanalizujesz wymagania funkcjonalne i jakościowe, przygotujesz mapę architektury aplikacji oraz zapiszesz kluczową decyzję w formie Architecture Decision Record
- Wyznaczysz granice domenowe i modułowe, a następnie dobierzesz zasady SOLID oraz wzorce projektowe do wskazanych problemów
- Porównasz monorepo, multi-repo i micro frontends oraz zaproponujesz sposób podziału kodu, odpowiedzialności zespołów i zarządzania stanem
- Zidentyfikujesz problemy z wydajnością, testowalnością i zależnościami oraz ocenisz jakość kodu obiektowego, funkcyjnego i generowanego przy wsparciu AI
Program szkolenia
Dzień 1
Architektura z perspektywy architekta
- Zakres architektury aplikacji frontendowej: struktura systemu, odpowiedzialności komponentów, przepływy danych, kontrakty integracyjne i granice technologiczne
• Rola architekta frontendowego i granice odpowiedzialności: decyzje techniczne, standardy zespołowe, współpraca z biznesem, backendem, UX i infrastrukturą
• Wymagania funkcjonalne i atrybuty jakościowe: wydajność, dostępność, bezpieczeństwo, skalowalność, testowalność, utrzymywalność i odporność na zmiany
• Miary architektoniczne, budżety jakościowe i Architecture Decision Records: kryteria oceny, mierzalne ograniczenia, dokumentacja decyzji i analiza kompromisów
• Struktura kodu, granice domenowe i potrzeby biznesowe: moduły funkcjonalne, zależności, odpowiedzialności zespołów i zgodność architektury z rozwojem produktu
Architektura z perspektywy programisty
- Odporność na błędy i wydajność interfejsu: obsługa awarii API, stany częściowe, ponawianie operacji, mechanizmy fallback i ograniczenie kosztownych operacji
• Rozszerzalność, testowalność i dostępność: stabilne kontrakty, izolacja logiki, testy jednostkowe i integracyjne oraz zgodność z wymaganiami dostępności cyfrowej
• Reużywalność, czytelność i spójność kodu: biblioteki współdzielone, standardy nazewnictwa, dokumentacja komponentów i kontrola nadmiernych abstrakcji
• Bundling, tree shaking, code splitting i lazy loading: struktura paczek, eliminacja nieużywanego kodu, podział aplikacji i ładowanie zasobów na żądanie
• Core Web Vitals: LCP, INP i CLS oraz budżety wydajnościowe: interpretacja metryk, źródła problemów, progi jakości i kontrola regresji wydajności
Architektura DDD we frontendzie (Domain-Driven Design)
- Warstwy aplikacji i wzorzec MVC (Model–View–Controller): odpowiedzialności warstwy prezentacji, logiki aplikacyjnej, modelu domenowego i integracji z usługami
• Przesłanki zastosowania DDD we frontendzie: złożoność domeny, trwałość reguł biznesowych, niezależność modułów i współpraca wielu zespołów
• DDD strategiczne i taktyczne: bounded contexts, encje, value objects i agregaty oraz ich reprezentacja w strukturze aplikacji frontendowej
Zarządzanie stanem aplikacji
- Ewolucja kodu i kontraktów stanu: model danych, źródła prawdy, synchronizacja, migracje struktur i kompatybilność między wersjami aplikacji
• Proces deweloperski, testy architektoniczne i przeglądy zmian: automatyczna kontrola zależności, reguły jakości, code review i walidacja decyzji architektonicznych
• Monorepo, multi-repo i micro frontends: granice, zależności i kompromisy dotyczące autonomii zespołów, współdzielenia kodu, wdrożeń i spójności technologicznej
Dzień 2
Zasady jakości kodu – dobre praktyki
- Zasady SOLID: SRP, OCP, LSP, ISP i DIP w projektowaniu komponentów, usług, adapterów, kontraktów i zależności aplikacji frontendowej
• Prawo Demeter: ograniczenie wiedzy między modułami, redukcja sprzężenia i ochrona wewnętrznej struktury komponentów oraz obiektów domenowych
• Hollywood Principle, inwersja sterowania i kontrola kodu generowanego przez AI: mechanizmy rozszerzeń, wstrzykiwanie zależności, przegląd jakości, bezpieczeństwo i weryfikacja poprawności
Paradygmaty programowania we frontendzie
Programowanie obiektowe:
– Niskie sprzężenie i wysoka spójność: wyraźne odpowiedzialności klas, stabilne interfejsy, ograniczone zależności i lokalizacja reguł biznesowych
– Inwersja zależności i kompozycja obiektów: abstrakcje, adaptery, wstrzykiwanie zależności i kompozycja jako alternatywa dla rozbudowanej hierarchii dziedziczenia
Popularne wzorce projektowe
- Wzorce kreacyjne: Factory, Builder i Dependency Injection oraz kryteria ich zastosowania w tworzeniu komponentów, usług i konfiguracji
• Wzorce strukturalne: Adapter, Facade, Proxy i Decorator w integracji API, rozszerzaniu zachowania i upraszczaniu złożonych interfejsów
• Wzorce behawioralne: Strategy, Observer, Command i State w zarządzaniu interakcjami, zdarzeniami, stanem oraz wymiennymi algorytmami
Programowanie funkcyjne
- Funkcje czyste i nieczyste: przewidywalność wyników, zależności wejściowe, dostęp do środowiska i separacja logiki od operacji wejścia–wyjścia
• Efekty uboczne i granice izolacji: komunikacja sieciowa, zapis stanu, obsługa czasu, losowości i zdarzeń oraz kontrolowane miejsca integracji
• Niezmienność stanu i przezroczystość referencyjna: bezpieczne transformacje danych, łatwiejsze testowanie, prostsze śledzenie zmian i ograniczenie błędów współbieżności
Mechanizmy programowania funkcyjnego
- Currying: częściowa aplikacja argumentów, konfiguracja funkcji i budowa wyspecjalizowanych operacji z funkcji ogólnych
• Memoizacja: pamięć wyników, kryteria poprawności, koszty pamięciowe i zastosowania w optymalizacji obliczeń oraz renderowania
• Rekurencja: definicje problemów rekurencyjnych, warunki zakończenia, koszty stosu i alternatywy iteracyjne
• Domknięcia: prywatny stan, zachowanie kontekstu, fabryki funkcji i ryzyka związane z niekontrolowanym przechowywaniem danych
• Funkcje wyższego rzędu: przekazywanie funkcji jako argumentów, zwracanie funkcji i budowa elastycznych mechanizmów przetwarzania
• Łańcuchy operacji: sekwencyjne transformacje danych, czytelność przepływu i kontrola błędów w wieloetapowym przetwarzaniu
• Kompozycja funkcji: łączenie małych operacji, kierunek przepływu danych, reużywalność i ograniczenie złożoności logiki
• Monady: zastosowania i ograniczenia w modelowaniu wartości opcjonalnych, błędów, operacji asynchronicznych i efektów ubocznych