Subdomeny w DDD
Subdomeny w DDD mogą porządkować złożone systemy i mogą ułatwiać podział odpowiedzialności. Jasne granice mogą usprawniać komunikację zespołów i mogą zmniejszać sprzężenia pomiędzy częściami systemu.
Definicje i typy
Subdomena może być wyodrębnioną częścią problemu biznesowego z własnym językiem i regułami 1.
- Subdomena może:
- reprezentować spójny wycinek logiki biznesowej (np. rozliczenia, katalog, wysyłka)
- mieć własny model i język wszechobecny
- być obsługiwana przez jeden lub kilka kontekstów ograniczonych
Domena może obejmować szerszy obszar biznesowy, w którym poszczególne subdomeny współistnieją 1.
- W dużej organizacji subdomena może funkcjonować jak odrębna domena ze względu na skalę, autonomię i niezależny cykl rozwoju 1.
Klasyfikacja i priorytety
Typy subdomen mogą:
- być podstawowe (core), gdy dostarczają unikalnej przewagi i wymagają największej uwagi
- być wspierające (supporting), gdy uzupełniają funkcje podstawowe
- być ogólne (generic), gdy obejmują standardowe problemy możliwe do standaryzacji lub zakupu
Granice i integracja
Konteksty ograniczone mogą mapować się 1:1 do subdomen lub rozdzielać jedną subdomenę na kilka kontekstów, gdy różne modele są potrzebne. Integracje między subdomenami mogą wykorzystywać jasne kontrakty, modele antykorupcyjne i zdarzenia domenowe, co może ograniczać sprzężenia. Mapy kontekstów mogą ujawniać relacje (partnerstwo, klient–dostawca, publikujący–subskrybent), co może ułatwiać dobór strategii współpracy.
Organizacja i procesy
Struktury zespołów mogą odzwierciedlać subdomeny, co może zwiększać autonomię i szybkość zmian. Roadmapy mogą ustalać priorytety na podstawie wartości core, a governance może egzekwować odpowiedzialność za model i język wszechobecny w granicach subdomen.
Modelowanie i ewolucja
Identyfikacja subdomen może zaczynać się od analizy celów biznesowych, przepływów wartości i konwersacji z ekspertami domenowymi. Granice mogą ewoluować wraz ze zmianą strategii lub skali, a refaktoryzacja modeli może porządkować rozbieżne potrzeby użytkowników i ról.