Idealny dla zespołów, które…
Solidny backend i architektura — wzorce sprawdzone w środowisku produkcyjnym.
PHP 8.3+: modularny monolit, bounded contexts, publiczne API modułów
Zdarzenia domenowe — Symfony EventDispatcher
Testy PHPUnit: unit i integracyjne
Docker i Composer
Co konkretnie robimy
- · 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
- · 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
- · 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
- · 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
Od briefu do retro w 30 dniach.
Brief i diagnoza
Rozmowa z liderem zespołu + krótka ankieta dla uczestników. Określamy cele, gap, kontekst.
Modyfikacja programu
Dostosowujemy moduły, case studies i przykłady kodu pod Twój stack. Akceptacja w 5 dni.
Warsztat
Sesje z trenerem, hands-on, code review. Mentor dostępny też pomiędzy sesjami.
Retro + raport
Raport z efektami dla zespołu i lidera. 30 dni konsultacji w cenie.
Wyślij brief. Odezwiemy się w 1 dzień.
Po krótkim briefie przygotujemy program i wycenę. Bez zobowiązań — to tylko punkt wyjścia do rozmowy.
Dziękujemy!
Odezwiemy się w ciągu 1 dnia roboczego.
Inne programy dla zespołów
Zobacz wszystkie →Architektura systemów przez pryzmat czynnika ludzkiego
Solidny backend i architektura — wzorce sprawdzone w środowisku produkcyjnym.
Czysta Architektura
Solidny backend i architektura — wzorce sprawdzone w środowisku produkcyjnym.
Mikro, makro i wszystko pomiędzy: jak podejmować decyzje o wielkości serwisu
Solidny backend i architektura — wzorce sprawdzone w środowisku produkcyjnym.