← Powrót do bloga

Architektura aplikacji webowych — jak projektować systemy, które da się rozwijać

architekturaDDDevent stormingAPISymfony

Od czego zaczyna się architektura?

Architektura aplikacji webowej to nie diagram narysowany przed startem projektu i odłożony na półkę. To ciąg decyzji podejmowanych przez cały czas życia systemu — od wyboru struktury katalogów po sposób komunikacji między modułami.

Najważniejsze pytanie brzmi: czy ta decyzja ułatwi, czy utrudni kolejną zmianę?

Domena przed frameworkiem

Niezależnie od tego, czy pracujesz w Symfony, czy w innym stosie technologicznym, kluczowa jest separacja logiki biznesowej od frameworka i infrastruktury. DDD (Domain-Driven Design) dostarcza narzędzi, które pomagają utrzymać tę granicę:

  • Agregaty — spójne grupy encji z jednym punktem wejścia
  • Value Objects — niezmienne obiekty z logiką walidacji i zachowania
  • Domain Events — jawna komunikacja o tym, co się wydarzyło w systemie
  • Repositories — abstrakcja dostępu do danych, niezależna od ORM-a

Event Storming jako punkt startu

Zanim pojawi się pierwsza linia kodu, warto usiąść z zespołem i zmapować procesy biznesowe. Event Storming w formie warsztatu pozwala:

  • zidentyfikować zdarzenia domenowe
  • nazwać komendy i polityki
  • wykryć granice modułów (Bounded Contexts)

To oszczędza miesięcy poprawek wynikających z nieporozumień między biznesem a zespołem technicznym.

API jako produkt

Projektowanie API to nie tylko dobór formatu (REST, GraphQL) — to przede wszystkim decyzje o kontraktach, wersjonowaniu, obsłudze błędów i strategii paginacji. Dobre API da się rozszerzać bez łamania istniejących integracji.

Podsumowanie

Najlepsza architektura to ta, którą zespół rozumie i w której potrafi się poruszać bez strachu. Nie chodzi o idealny model z książki, tylko o strukturę, która pomaga dostarczać wartość i nie blokuje rozwoju.