DDD 란 ?

DDD(Domain-Driven Design)는 비즈니스 Domain별로 나누어 설계하는 방식이다. 기존의 어플리케이션 설계가 개발자와 Domain 비즈니스 전문가의 이해가 다르고, 여기에서 생기는 문제를 해결하기 위해 DDD가 고안되었다. 따라서 IT전문가와 Domain전문가의 쌍방향 커뮤니케이션을 매우 중요하게 생각한다.

DDD의 목표

DDD의 핵심 목표는 ‘Loose coupling’, ‘High cohesion’이다. 어플리케이션 모듈 내부의 응집성은 최대화하고, 그 모듈간의 의존성은 최소화 하는 것이다.

DDD의 4 Layers:


  • Domain: Domain과 어플리케이션의 비즈니스 로직이 정의되는 Layer.
  • Infrastructure: 이 Layer는 독립적으로 존재하는 것으로 구성된다. 예를들어 외부 라이브버리, db 엔진, 등
  • Application: 이 Layer는 Domain과 interface 레이어의 연결을 담당한다. inteface layer에서 온 request를 domain layer로 전달하고 response를 retrun 해준다.
  • Interface: 이 Layer는 다른 시스템 (예를들면 web service, RMI interface, batch processing frontends 등) 과 상호작용한다.