DDD는 디자인패턴인가 아키텍처인가?

DDD(Domain-driven design)으로 프로젝트를 진행하게 되면서 DDD가 무엇인지 궁금해졌다.
DDD는 디자인패턴일까 아키텍처일까?
사소한 하나하나 다 궁금할 시기이지. 암암 그렇고말고.
구글링을 아무리 해봐도 뚜렷한 구분이 나오지 않았다. 그래서 공부한 내용을 바탕으로 팀장님께 문의를 드렸고 팀장님도 함께 고민해주셨다.
참 감사하다!
이번 포스팅은 스스로 공부하면서 작성한 포스팅이므로 정답이 아닐 수 있다.

나에게 가장 익숙한 프로젝트 구조는 MVC패턴으로 프레젠테이션로직, 비즈니스로직, 데이터베이스 로직을 구분한 구조이다. 이를 3계층 구조라고 부른다고 하셨다.
디자인패턴으로 보면 MVC패턴이지만 아키텍처관점에서는 3Tier Architecture라는 것이다.

디자인 패턴이란? 🤠

  • 정의: 어떤걸 해결할려고 할때 효율적인 방법에 대해서 정해놓은 규칙
  • 문제를 해결하기 위한 방법을 가이드
  • 크기로 보면 패턴이 좀 더 아키텍쳐 보단 작은 느낌




소프트웨어 아키텍처란? 🤠

  • 정의: 시스템, 컴포넌트 간의 관계가 어떻게 되어있냐 그런 구조적인 측면에서 정의한 것
  • 특징: 언어적 혹은 시스템 구조적 등 여러가지 환경에 따라 구조가 달라서 해당 구조에서 사용할 수 있는 패턴도 달라짐
  • 인프라 아키텍쳐(가장 광범위) -> 시스템 아키텍쳐 -> 소프트웨어 아키텍쳐(좁은범위)




디자인패턴 VS 소프트웨어 아키텍처 예시

디자인패턴 아키텍처
대표 예시 MVC모델, Commnad, Factory, DAO 데이터중심 스타일, 규칙기반스타일, 분산스타일, 파이프와 필터스타일




내가 내린 결론

다시 본래 질문으로 돌아가자.
DDD는 디자인패턴일까 아키텍처일까?
여기서 내가 내린 결론은 소프트웨어 아키텍처이다.
왜냐하면 DDD는 디자인패턴 같으면서도 구조적이다. 비즈니스와 디자인패턴, 아키텍쳐까지 포함하기에 디자인패턴보다는 큰 개념인 아키텍처에 적합하다.




참고