Subdomeny w DDD

PodsumowanieLista

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.