Szkolenie PHP – Skalowalność i asynchroniczność

Poziom

Zaawansowany

Czas

16h / 2 dni

Termin

Indywidualnie

Cena

Indywidualnie

Szkolenie PHP – Skalowalność i asynchroniczność

Warsztat uczy przenoszenia operacji poza request — z synchronicznego monolitu do asynchronicznego systemu opartego o kolejki wiadomości. Uczestnicy zaczynają z aplikacją, w której „wszystko dzieje się w requeście” (e-mail, PDF, aktualizacja stanów), i krok po kroku wprowadzają Symfony Messenger, workery i kolejki. Każdy etap rozwiązuje realny problem: wolny request → zduplikowane wiadomości → niespójna danych → różne wymagania odczytu i zapisu. Warsztat kończy się działającym systemem z asynchronicznym przetwarzaniem, idempotentnym kodem i CQRS lite — wzorcami, które działają zarówno w modularnym monolicie, jak i w architekturze mikroserwisowej.

Dla kogo jest to szkolenie?
  • logo infoshare Absolwentów ścieżki szkoleniowej PHP (Architektura), chcących wprowadzić asynchroniczność do swoich aplikacji
  • logo infoshare Developerów PHP pracujących z aplikacjami, w których requesty trwają zbyt długo przez synchroniczne operacje
  • logo infoshare Programistów, którzy słyszeli o kolejkach i CQRS, ale nie wiedzą jak zacząć pragmatycznie
  • logo infoshare Zespołów planujących migrację z synchronicznej architektury na asynchroniczną
Czego nauczysz się na tym szkoleniu?
  • logo infoshare Symfony Messenger — konfiguracja, transporty, handlery, workery
  • logo infoshare Przenoszenia operacji blokujących request do asynchronicznych kolejek
  • logo infoshare Projektowania idempotentnych handlerów — bezpieczna obsługa duplikatów wiadomości
  • logo infoshare Eventual consistency — zrozumienie i obsługa chwilowej niespójności danych
  • logo infoshare Procesów wieloetapowych (saga) — koordynacja zamówienie → płatność → wysyłka
  • logo infoshare CQRS lite — separacja modelu odczytu i zapisu bez event sourcing
  • logo infoshare Synchronizacji read modelu asynchronicznie przez Messenger
  • logo infoshare Retry, dead letter queue i obsługi błędów w procesach asynchronicznych

Wymagania

  • PHP 8.3+: modularny monolit, bounded contexts, publiczne API modułów
  • Zdarzenia domenowe — Symfony EventDispatcher
  • Testy PHPUnit: unit i integracyjne
  • Docker i Composer

Program szkolenia

Dzień 1

 

Etap 1: Symfony Messenger — kolejki wiadomości

  • Problem: request trwa 5 sekund — dlaczego i co z tym zrobić?
  • Symfony Messenger — konfiguracja, transport RabbitMQ (AMQP), message i handler
  • Praktyka: wysyłka e-maila i generowanie PDF jako asynchroniczne handlery
  • Worker — uruchamianie, monitorowanie, supervisor w Docker
  • RabbitMQ management UI — podglądanie kolejek, wiadomości, stanu workerów
  • Retry i dead letter queue — co gdy handler się wywali?
  • Efekt: Operacje blokujące request są przeniesione do workerów; request jest szybki

 

Etap 2: Idempotentność

  • Problem: worker przetwarza wiadomość dwa razy — klient dostaje dwa maile
  • Dlaczego duplikaty się zdarzają — at-least-once delivery, network failures, worker restart
  • Idempotent handler — projektowanie handlerów bezpiecznych przy wielokrotnym uruchomieniu
  • Wzorce: idempotency key, deduplikacja, upsert zamiast insert
  • Praktyka: zabezpieczenie handlerów z etapu 1 przed duplikatami
  • Efekt: Uczestnicy rozumieją at-least-once delivery i potrafią pisać idempotentne handlery

 

Dzień 2

 

Etap 3: Eventual consistency

  • Problem: zamówienie złożone, ale stan magazynowy jeszcze nie zaktualizowany
  • Synchroniczne vs asynchroniczne — konsekwencje architektoniczne
  • Eventual consistency — dane BĘDĄ spójne, ale nie natychmiast
  • Eventy jako fakty vs komendy jako intencje
  • Saga/Process Manager — koncepcja + demo koordynacji procesu zamówienie → płatność → wysyłka
  • Kompensacja zamiast rollbacku — obsługa błędów w procesach asynchronicznych
  • Efekt: Uczestnicy rozumieją trade-offy asynchroniczności i potrafią projektować procesy wieloetapowe

 

Etap 4: CQRS lite i podsumowanie

  • Problem: listingi wymagają joinów przez 5 tabel, a zapis dotyka jednej — dlaczego traktujemy je tak samo?
  • CQRS lite — separacja modelu odczytu i zapisu (bez event sourcing)
  • Write model — agregaty, walidacja, reguły biznesowe
  • Read model — zdenormalizowane projekcje zoptymalizowane pod odczyt
  • Synchronizacja read modelu asynchronicznie przez Messenger (łączy wszystkie tematy warsztatu)
  • Praktyka: listing zamówień jako read model aktualizowany asynchronicznie
  • Kiedy NIE stosować CQRS — prosty CRUD nie potrzebuje separacji modeli
  • Retrospektywa — przegląd ewolucji od synchronicznego monolitu do asynchronicznego systemu
  • Efekt: Uczestnicy mają kompletny obraz: kolejki → idempotentność → eventual consistency → CQRS lite

Skontaktuj sie z nami

zorganizujemy dla Ciebie szkolenie dopasowane do Twoich potrzeb

Przemysław Wołosz

Key Account Manager

przemyslaw.wolosz@infoShareAcademy.com

    Administratorem danych osobowych jest InfoShare Academy Sp. z o.o. z siedzibą w Gdańsku, al. Grunwaldzka 427B, 80-309 Gdańsk, KRS: 0000531749, NIP: 5842742213. Dane osobowe przetwarzane są zgodnie z klauzulą informacyjną.