thug_choonsik 춘식이 주특기: 삼촌들 용돈 뺏기

도메인 중심 설계

» oop

도메인 중심 설계 (DDD, Domain-Driven Design):

도메인 중심 설계(이하 DDD)는 비즈니스 로직에 초점을 맞추어 소프트웨어를 개발해나가는 방법론을 말한다. DDD는 실세계의 비즈니스 프로세스 모방한 도메인 모델을 만들고 이를 코드에 직접적으로 반영한다. 이를 통해 도메인 전문가와 개발자 사이의 커뮤니케이션 비용을 줄이고, 도메인 모델을 통해 비즈니스 로직을 쉽게 이해할 수 있게 한다. 결국, DDD에서 핵심 요소는 도메인(문제)에 대해 유용한 모델을 제공하는 것이라고 볼 수 있다.

시스템을 간단하게 Presentation layer, Domain(Business) layer, Data Access layer로 나누어 생각해보자. 일반적으로 3계층 구조에서 각 계층은 아래 계층에만 의존한다.

3layer

하지만, DDD에서 도메인 계층은 그 어떤 계층에도 의존하지 않도록 하며 Presentation layer와 Data Access layer가 Domain layer에 의존하도록 설계한다. 이렇게 함으로써 Domain layer는 독립적으로 테스트할 수 있고, 요구사항의 변경이나 새로운 기능 추가에도 유연할 수 있게되어 유지보수성이 높아진다.

domain-layer


SQL 중심 설계

SQL 중심 설계는 데이터베이스와 SQL을 중심으로 소프트웨어를 개발하는 방식이다. 이 방식은 데이터 구조를 먼저 설계하고 이를 기반으로 비즈니스 로직을 구현한다. 데이터베이스 성능 최적화와 일관성 유지에 유리하다는 점이 있다. 하지만 비즈니스 계층 코드가 데이터베이스에 의존하게 되어 유지보수성이 떨어지고, 데이터베이스의 변경이 비즈니스 로직에 영향을 미치게 된다.


차이점

DDD와 SQL 중심 설계의 주요 차이점은 소프트웨어 설계에 대한 접근 방식이다.

  • DDD는 비즈니스 로직과, 그 복잡성을 관리하는 데 초점을 맞춘다.
  • SQL 중심 설계는 데이터와 그 관계 및 효율적인 데이터 처리에 초점을 맞춘다.