본문 바로가기

Development/Spring

DDD(Domain Driven Design)와 SQL 중심 설계의 차이점

 

 

DDD

 

 

DDD(도메인 주도 설계)는 데이터를 도메인별로 나누어, 도메인 객체중심으로 관리하는 설계 기법이다. 여기서 도메인이란 현실 세계에서 해결해야 할 문제가 나눠지는 영역을 뜻한다.

 

DDD 방식은 복잡한 비즈니스 로직을 가지는 소프트웨어에 적합하며, 비즈니스요구사항을 보다 명확하게 이해하고, 이를 개발자의 코드반영할 수 있도록 돕는다.

 

도메인 주도 설계를 통해 객체역할을 명확히 구분할 수 있고, 비즈니스 로직(현실세계의 문제(도메인)에 대한 의사결정 과정을 포함하는 로직)과 서비스 로직(애플리케이션의 기능을 지원하는 로직)이 구별되어 주요 문제집중하기 쉬워진다.

 

비즈니스와 서비스 객체의 구분이 명확하므로 유지 보수용이하고, 도메인연관관계 속에서 데이터가 관리되므로 체계적인 관리가 가능해진다.

 

 

SQL 중심 설계

 

 

 SQL 중심 설계객체 내부에 저장되는 데이터중심으로, 데이터베이스에서 객체를 관리하는 설계 기법이다. 따라서 객체가 포함해야 하는 데이터집중하게 된다.

 

개별 엔티티별로 데이터가 관리되어 Schema에 대한 고려사항을 위주로 설계되며, SQL Query를 통해 데이터를 조작한다. 따라서 정형화 데이터 명확한 관계를 가진 데이터 중심의 소프트웨어에 적합한 설계 방식이며, 요구사항 변경으로 인한 객체 데이터의 변경 유지보수 어려워지므로 복잡한 비즈니스 로직을 가지는 소프트웨어에는 적용하기 어렵다.

 

유의해야 할 점은 두 설계 기법이 상호 배타적 관계를 가지는 것은 아니기 때문에, 소프트웨어 설계 시 적절히 융합될 수 있다는 것이다. 오직 한 가지 설계 방법론만을 고집하는 것은 설계의 유연성을 경직시킬 위험성을 내포하고 있다.