보라코딩
DDD 본문
도메인(Domain): 문제 해결을 위해 소프트웨어가 구현하는 특정 비즈니스 영역입니다.
바운디드 컨텍스트(Bounded Context): 특정 도메인의 경계를 정의하는 개념입니다. 바운디드 컨텍스트는 명확한 경계를 가지며, 다른 바운디드 컨텍스트와는 독립적으로 동작합니다.
컨텍스트 맵(Context Map): 시스템 내 여러 바운디드 컨텍스트 간의 관계를 시각적으로 표현한 것입니다. 컨텍스트 맵은 바운디드 컨텍스트 간의 통합, 상호작용 방식을 명확하게 이해하는 데 도움이 됩니다.
애그리게이트(Aggregate): 일관성을 유지하기 위해 함께 관리되어야 하는 도메인 객체들의 그룹입니다. 애그리게이트는 하나의 루트 엔티티(애그리게이트 루트)를 가지며, 이를 통해서만 외부에서 접근할 수 있습니다.
트랜잭션 범위를 애그리게이트 단위로 제한하여 데이터 일관성을 보장
도메인은 POJO 클래스로 구성해야 하는가?
도메인 객체를 POJO(Plain Old Java Object) 클래스로 구성하는 것이 권장됩니다. 그 이유는 다음과 같습니다:
- 단순성: POJO 클래스는 자바의 기본 기능만을 사용하여 구현되므로, 불필요한 복잡성을 피할 수 있습니다. 이는 코드를 더 쉽게 이해하고 유지보수할 수 있게 합니다.
- 테스트 용이성: POJO 클래스는 외부 프레임워크에 의존하지 않기 때문에, 단위 테스트가 용이합니다. 이는 테스트 작성과 실행을 간단하게 만들어줍니다.
- 프레임워크 독립성: POJO 클래스는 특정 프레임워크에 종속되지 않으므로, 프레임워크의 변경이나 업그레이드에도 영향을 덜 받습니다. 이는 코드의 이식성을 높입니다.