Warstwa Abstrakcji - stanowi izolację pomiędzy kodem programisty a zewnętrznymi
modułami, pozwala odseparować system od jego zależności przez co czyni go podatnym na zmiany i aktualizacje.
Przywiązując system do innej usługi czynimy go słabym.
Model biznesowy, domena, logika biznesowa - jakkolwiek nie nazwiemy kodu, który w założeniu reprezentuje sedno
projektu, często zgadzamy się co do jednego. Ten model nie powinien zawierać zewnętrznych zależności, tylko czy aby na pewno?
W modularnym monolicie kluczowa jest izolacja modułów, izolacja zarówno na poziomie kodu, jak i testów.
Pierwszy raz implementując monolit z ambicjami na mikroserwisy największą zagwozdką było jak
sensownie podejść do testów tak aby w razie ewentualnego wydzielenia nie utknąć z test suitem,
którego nie da się ruszyć. W tym celu, podążając za mocną inspiracją Behatem
wdrożyliśmy coś, co zostało nazwane Kontekstami.
Od bardzo dawna zbierałem się do poruszenia tego tematu.
W tym wpisie postaram się odnieść do podstaw, wrzucę trochę materiałów do
poczytania/pooglądania tak aby przygotować bazę pod kolejne wpisy.
Jeżeli pod koniec czytania będziesz czuć, że czegoś jeszcze brakuje i nie do
końca wiesz czy byłbyś w stanie zaimplementować modularny monolit, nie przejmuj się.
To bardzo obszerne zagadnienie, z wieloma szczegółami które wychodzą
dopiero w trakcie implementacji lub w czasie migracji do mikroserwisów.
Polecam w ogóle zacząć temat od oglądnięcia tej prezentacji:
Jeżeli po oglądnięciu dalej będziesz miał pytania, szczególnie o aspekty związane z PHP, czytaj dalej.