3/25 16:00
2번째 프로젝트가 끝났다.
상품 주문 배송 프로젝트인데 허브 개념까지 포함해서 조금 고민이 많이 되는 프로젝트였다.
그것도 첫 MSA 프로젝트..ㅎㅎ
이번 프로젝트를 진행하면서 처음 접하거나 좀 신경썼던 부분을 적어보려한다.
MSA 구조로 DB 테이블 설계를 처음 해보았는데 이전 DDD 관련 짧은 특강에서 애그리게이트 중심으로 테이블을 설계하면 도메인과 도메인 간 강한 결합을 끊어내면 독립적으로 운영할 수 있다는 부분을 반영했다.
즉, DDD 패턴을 도입하여 프로젝트의 핵심 도메인 모델을 명확히 정의하고, 각 서비스의 경계를 명확히 구분했다.
Order - OrderDetail 외 도메인은 productId 처럼 id 값만 저장한다.
애그리게이트 루트는 도메인 모델의 일관성을 유지하고, 데이터 변경 시 비즈니스 규칙을 적용하는 역할을 한다.
각 서비스의 핵심 엔티티를 애그리게이트 루트로 정의하고, 애그리게이트 내부의 객체들을 통해 데이터 접근 및 변경을 제어함으로써, 도메인 모델의 복잡성을 관리하고 일관성을 유지할 수 있었다.