개요
- Domain Driven Design 로 개발을 하려고 하는데 그게 뭐임? 🤔
- Domain 이란?
- 비지니스 도메인
- 유사한 업무의 집합을 말한다.
- 명사 ex) 주문, 고객, 상품 등
Domain Driven Design Pattern
- 각각의 기능적인 문제의 영역들을 정의하는 도메인과 그 도메인을 사용하는 비지니스 로직을 중심으로 설계하는 것
DDD 장점
- 보편적인 언어 사용에 따른 빠른 커뮤니케이션 가능
- 기존 개발에서 사용하던 데이터 중심의 명칭들과 UI 나 APP 등에서 사용했던 기획과 사업에서 사용했던 언어들 간에는 서로 간 큰 차이가 있었다.
- 이것을 업무 용어를 통일하여 서로 간의 이해도나 비지니스 로직을 통일할 수 있었다.
- 도메인 간 관계가 복잡한 경우 큰 틀에서 정리가 가능
- 도메인의 분리에 따른 유지보수에 대한 편의성
- 새로운 기능 및 요구 사항에 대한 유연성
DDD 개발자 관점에서의 장점
- Aggregate 의 사용으로 캡슐화(Encapsulation)
- Use Case 와 port 사용 등으로 Loose Coupling
- Domain 로직과 서비스 로직을 필요한 곳에 모아서 High Cohesion
- Domain Logic 분리로 비지니스 로직에 집중 가능
- 코드에 대한 가독성 증가
DDD 단점
- MAS 에서 오는 단점은 별개로...
- 복잡해진 개발 난이도, 난이도를 해결하기 위한 숙련도 필요
- 서버들이 나누어진 만큼 트랜잭션에 대한 관리
- 통합 테스트에 대한 어려움, 배포에 대한 복잡도