개발 일지/CS

[CS] DDD

미숫가루설탕많이 2023. 3. 4. 08:48

DDD는 Domain Driven Design(도메인 주도 설계)의 약자로, 소프트웨어 개발에서 시스템의 복잡성을 다루기 위한 설계 방법론 중 하나이다.

 

 성능, 생산성, 안정성 면에서 뛰어난 애플리케이션을 만들기 위해 가장 중요한 영역인 애플리케이션의 설계는 구현보다 더 어렵다고 한다. 그래서 오래전부터 많은 사람들이 애플리케이션 설계에 대해 고민한 결과물 중 하나가 DDD이다.

 

 DDD는 비즈니스 도메인을 중심으로 소프트웨어를 설계하고 개발하는 방법을 제공하며, 이 방법을 통해 비즈니스 로직과 데이터를 모델링하고 그것들이 코드에서 잘 표현되도록 할 수 있다. 따라서, 복잡한 도메인 문제를 유용히 다룰 수 있고 개발자와 비즈니스 전문가 간의 소통을 촉진하는 데 도움이 된다.

 

 

 

 

도메인

 

 도메인(Domain)이란 특정 분야나 주제에 대한 전문적인 지식, 용어, 규칙, 프로세스, 데이터 등을 포함하는 영역이다. 즉, 소프트웨어 개발에서 흔히 사용되는 도메인이란 용어는 주로 비즈니스적인 어떤 업무 영역과 관련이 있다.

 

 예를 들어, 배달 주문 앱을 개발할 때는 음식, 주문, 결제, 배송 등의 도메인이 있고 앱을 구현하기 위해 필요한 업무들을 자세히 알면 알수록 퀄리티 높은 애플리케이션을 만들 가능성이 높다.

 

 도메인은 소프트웨어 개발에 있어서 중요한 개념 중 하나이며, 소프트웨어를 설계하고 개발할 때 항상 고려해야 하는 요소이다.

 

 

 

 

DDD 요소

 

  • 도메인
    : 소프트웨어가 대상으로 하는 비즈니스 도메인을 이해하고 이를 중심으로 설계한다.

  • 모델
    : 비즈니스 도메인의 핵심 개념을 추출하여 모델링하고, 이를 바탕으로 객체지향 프로그래밍으로 구현한다.

  • 유비쿼터스 언어
    : 모든 개발자, 비즈니스, 사용자 등이 이해할 수 있는 통일된 언어를 사용한다.

  • 한계적인 컨텍스트
    : 도메인은 한계적인 컨텍스트 내에서 설계되어야 한다. 이러한 컨텍스트는 특정 도메인과 연관된 모든 것을 포함한다.

  • 계층 구조
    : 소프트웨어를 도메인 레이어, 응용 레이어, 인프라스트럭처 레이어 등의 계층으로 분리하여 설계한다.

'개발 일지 > CS' 카테고리의 다른 글

[Web] HTTPS  (0) 2023.03.14
[CS] Hamcrest  (0) 2023.03.06
[CS]Framework  (0) 2023.02.02
[DB] ACID  (0) 2023.01.30
[Web] HTTP Messages  (0) 2023.01.26