DDD
DDD(도메인 주도 설계)는 데이터를 도메인별로 나누어, 도메인 객체를 중심으로 관리하는 설계 기법이다. 여기서 도메인이란 현실 세계에서 해결해야 할 문제가 나눠지는 영역을 뜻한다.
DDD 방식은 복잡한 비즈니스 로직을 가지는 소프트웨어에 적합하며, 비즈니스의 요구사항을 보다 명확하게 이해하고, 이를 개발자의 코드에 반영할 수 있도록 돕는다.
도메인 주도 설계를 통해 객체의 역할을 명확히 구분할 수 있고, 비즈니스 로직(현실세계의 문제(도메인)에 대한 의사결정 과정을 포함하는 로직)과 서비스 로직(애플리케이션의 기능을 지원하는 로직)이 구별되어 주요 문제에 집중하기 쉬워진다.
비즈니스와 서비스 객체의 구분이 명확하므로 유지 보수가 용이하고, 도메인별 연관관계 속에서 데이터가 관리되므로 체계적인 관리가 가능해진다.
SQL 중심 설계
SQL 중심 설계는 객체 내부에 저장되는 데이터를 중심으로, 데이터베이스에서 객체를 관리하는 설계 기법이다. 따라서 객체가 포함해야 하는 데이터에 집중하게 된다.
개별 엔티티별로 데이터가 관리되어 Schema에 대한 고려사항을 위주로 설계되며, SQL Query를 통해 데이터를 조작한다. 따라서 정형화된 데이터와 명확한 관계를 가진 데이터 중심의 소프트웨어에 적합한 설계 방식이며, 요구사항 변경으로 인한 객체 데이터의 변경과 유지보수가 어려워지므로 복잡한 비즈니스 로직을 가지는 소프트웨어에는 적용하기 어렵다.
유의해야 할 점은 두 설계 기법이 상호 배타적 관계를 가지는 것은 아니기 때문에, 소프트웨어 설계 시 적절히 융합될 수 있다는 것이다. 오직 한 가지 설계 방법론만을 고집하는 것은 설계의 유연성을 경직시킬 위험성을 내포하고 있다.
'Development > Spring' 카테고리의 다른 글
HTTP method의 개념과 종류 정리 (0) | 2023.04.11 |
---|---|
DDD 기반의 AOP에서 비즈니스 로직이 가지는 의미 (0) | 2023.04.07 |
DDD에서 Controller, Service, Repository의 역할 (0) | 2023.04.07 |
DDD(Domain Driven Design)에서 Entity, DTO, VO 비교 (0) | 2023.04.05 |
Spring Framework의 DI(의존성 주입)와 IoC(제어의 역전) 개념 정리 (0) | 2023.04.04 |