도메인 주도 설계(Domain Driven Design, DDD)

코코·2023년 12월 20일
0

기술면접 준비

목록 보기
42/42

도메인 주도 설계(DDD)란 무엇일까?

  • 도메인 주도 설계(Domain-Driven Design, DDD)는 소프트웨어 개발에서 복잡한 비즈니스 도메인을 다루기 위한 개발 방법론 중 하나다. 이 방법론은 도메인 모델을 중심으로 하여 비즈니스 요구사항을 명확하게 이해하고, 이를 바탕으로 소프트웨어 시스템을 설계하고 구현하는 것을 강조한다.

도메인 주도 설계의 핵심 개념과 원칙:

  • 도메인 모델링: 비즈니스 도메인에 대한 명확하고 풍부한 모델을 만드는 것이 중요하다. 이 모델은 비즈니스 개념, 규칙, 프로세스 등을 포함하며, 모델은 개발자, 도메인 전문가, 그리고 다른 이해 관계자들이 공유하고 이해할 수 있는 형태여야 한다.

  • 유비쿼터스 언어 (Ubiquitous Language): 도메인 모델은 모든 이해 관계자 간에 공유되는 언어를 가져야 한다. 개발자와 비즈니스 전문가 간의 의사 소통을 원활하게 하기 위해 동일한 용어와 개념을 사용하는 것이 중요하다.

  • 컨텍스트 경계 설정 (Bounded Context): 큰 프로젝트에서는 여러 개의 Bounded Context로 나누어져 있을 수 있다. 각각의 컨텍스트는 특정한 비즈니스 규칙과 모델을 가지며, 이를 통합하기 위해 명확한 인터페이스가 정의된다.

  • 엔터티 (Entity)와 밸류 객체 (Value Object): 엔터티는 유일성을 갖는 식별 가능한 객체이며, 밸류 객체는 값 자체가 중요한 객체다. 이 두 가지는 도메인 모델에서 핵심적인 역할을 한다.

  • 애그리게이트 (Aggregate): 연관된 엔터티와 밸류 객체의 그룹을 형성하여 하나의 단일 단위로 다루는 애그리게이트를 사용하여 복잡성을 관리한다.

  • 도메인 서비스 (Domain Service): 특정한 엔터티나 애그리게이트에 속하지 않는 도메인 규칙을 처리하기 위한 서비스다.

  • 이벤트 소싱 (Event Sourcing): 시스템의 상태 변경을 이벤트의 시퀀스로 저장하고 이를 사용하여 현재 상태를 재구성하는 방법을 의미한다.

도메인 주도 설계는 복잡한 비즈니스 도메인을 이해하고 이를 반영하는 유연하고 확장 가능한 소프트웨어 시스템을 구축하는 데 도움이 된다. 이는 특히 대규모 팀이 협업하고 복잡한 비즈니스 요구사항을 다룰 때 유용하다.

profile
Just Do It

0개의 댓글