Gdy dołączyłem do zespołu, myślałem że projekt to rocket science - inaczej nie wyobrażałem sobie takiego chaosu w kodzie. Prawda była prostsza i smutniejsza: system robił dość podstawowe rzeczy, tylko strasznie źle napisane.
Ta prezentacja to prawdziwa historia tego, jak nie przepisywaliśmy systemu od zera,
nie uciekliśmy w mikroserwisy i nie zaczęliśmy od idealnej architektury. Zamiast tego
zaczęliśmy od fundamentów: wspólnych ustaleń developerskich, nauki i budowania wspólnego
języka wokół czystej architektury.
Mając tę wiedzę, wprowadzaliśmy zmiany małymi krokami — tworząc pierwsze bounded contexty (logicznie odseparowane obszary biznesowe) wewnątrz jednego monolitu. Z czasem pojawiły się nowe wyzwania: integracja między kontekstami, zacierające się granice i reguły
architektoniczne istniejące głównie w głowach developerów.
Wtedy sięgnęliśmy po narzędzia statycznej analizy, które pozwoliły egzekwować struktury
wewnątrz kontekstów i zależności między nimi. Efektem była architektura modularnego
monolitu, którą można było rozwijać bez strachu — a w pewnym momencie w naturalny sposób
wydzielić pierwszy niezależny serwis.
To nie jest teoretyczna opowieść o idealnej architekturze. To praktyczna historia pracy
z legacy codebase, zespołowych kompromisów, błędów i decyzji, które pozwoliły odzyskać
kontrolę nad systemem.