📌 DDD설계와 SQL 중심 설계
도메인 주도 설계를 알려면 도메인이 무엇인가를 알아야 하는데, 도메인이란 소프트웨어로 해결하고자 하는 문제 영역을 의미한다.
"e-book" 애플리케이션을 예로들면, "e-book" 자체가 도메인이 될 수 있고, 하위 도메인으로 될 수 있는 개념으로는 "책", "회원", "대출", "예약" 등이 있을 것이다.
DDD 설계
DDD(Domain Driven Design)라고 부르는 도메인 주도 설계는, 이러한 도메인에 집중해서 설계를 하는 것이다. 어떤 도메인이 있는지 파악하고, 여러 하위 도메인들을 정의할 수 있다.
도메인에 집중해서 개발을 하면 서비스의 비즈니스 로직을 구현할 때 도메인 단위로 구현할 수 있다.
e-book애플리케이션에서 "책"라는 도메인은 책목록을 조회하는 기능, 책정보를 상세조회하는 기능 등 도메인을 중심으로 애플리케이션 기능을 개발할 수 있다.
도메인 주도 방식으로 설계하는 다양한 규칙과 구현하는 방법이 여러 책에 소개 되어있는데, 추후에 도메인 주도 방식 설계에 대한 구체적인 방법에 대해 정리해볼 예정이다.
SQL 중심 설계
도메인 주도 설계와는 다르게 SQL 중심 설계라는 개념이 있는데, SQL 중심 설계는 도메인에 집중하지 않고, 데이터베이스와 데이터 자체에 집중해서 SQL 쿼리문을 어떻게 작성할 것인가에 대해 집중하는 설계방식이다.
"어떻게 테이블을 정의하고 어떻게 쿼리를 작성할지"에 대해 생각하며 설계를 하기 때문에 데이터에 종속적인 애플리케이션이 될 수 있다는 단점이 있다.
최근의 애플리케이션들은 기능이 복잡하고 다양한데다가 요구사항이 자주 변경되는 서비스의 특징을 가지고 있다. 이때 DB데이터에 따라 복잡하게 작성한 SQL 쿼리에 치중해서 설계된 애플리케이션은 재사용하기도 어렵고 유지보수 하기도 어렵기때문에 데이터에 종속적이라고 할 수 있다.
그렇게 때문에 최근에는 대부분 SQL중심의 설계보다는 도메인 주도 방식의 설계를 지향하고 있다.
이렇게 간단하게 DDD 설계와 SQL 중심 설계의 차이에 대해 알아보았다.
DDD방식이 최근 애플리케이션 설계에 많이 사용되지만, 개발 초기에 설계가 복잡해지고 시간이 오래걸릴 수 있다는 단점도 존재하는 것처럼 어떤 설계 방식이 정답이라고 말할 순 없을 것 같다.
참고서적 : 도메인 주도 개발 시작하기
'Spring' 카테고리의 다른 글
Entity vs DTO vs VO (0) | 2023.11.07 |
---|---|
[Spring] HTTP method (0) | 2023.11.06 |
[Spring] 스프링 빈과 의존성 주입 해보기 (0) | 2023.11.03 |
[Spring] Controller 구현하기 (0) | 2023.11.02 |
[Spring] Controller, Service, Repository 3계층의 역할 (0) | 2023.10.31 |