DDD

HG·2022년 10월 28일
0

자바

목록 보기
3/4

DDD

DDD는 객체지향에서부터!

객체지향에서의 핵심은 뭘까요?

객체지향에서의 핵심은 뭘까? 뭘까? 뭘까?

왜 객체를 지향할까?

좋은점이 많으니까 절차지향보다 순서를 고려하지 않아도 되는 장점들

일단, 재사용성이 좋지

그리고 객체가 그 자체를 표현하니까 보면서도 이 객체가 뭐를 말하고 싶은지 알 수 있지

유지보수에서도 장점이 있지

근데 객체지향이야 그렇다면, 어떻게 할 수 있을까?

추상화의 범위를 어떻게 잡아서 객체를 만들고, 어떤 객체가 필요하고, 상호작용하는 객체가 어떤것인지 추려낼 수 있을까?

이것을 가능하게 하는 것이 DDD이다. 도메인 주도 설계(Domain Driven Design)

즉, 도메인을 중심으로 설계해 나가는 것을 의미한다.

도메인이 뭔데? 정확히 한마디로 막 네이버 이려먼서 얼버무리지 말고 지역 범위를 말하는 영어 뜻 말고

도메인은 실세계에서 사건이 발생하는 집합이다.(?)

실세계에서 사건이 발생하는 집합 -> 말로 쓰니까 이해가 안된다.

ex) 옷 쇼핑몰을 예로 들어보면

손님들이 옷을 주문하는 도메인, 점주들이 옷을 관리하는 도메인, 좀 세부적으로 옷을 사기전에 담아두는 도메인 등등 있다.

이러한 여러가지 도메인들이 서로 상호작용하며, 설계하는 것이 도메인 주도 설계이다.

이 DDD의 특징은 같은 객체가 여러 개 존재할 수 있다는 것,

예를들어 옷을 손님 관점에서 보면 사기 위한 정보만 알면 된다.

하지만, 점주 입장에서는 더 다양한 정보가 필요하다. 예를들어 만든시간, 발주일자, 제조회사 등

즉, !문맥!에 따라 !객체!의 역할이 바뀐다.

이러한 관점을 더 나아가서 직접 서비스에 적용시킨 것이 바로 마이크로서비스이다.

다시 말해, 서로 다른 도메인 영역에 영향을 끼치기 위해, API 호출로 해야 된다는 것

즉, 각각의 도메인은 서로 철저히 분리되고, 높은 응집력과 낮은 결합도로 변경과 확장에 용이한 설계를 얻게 된다.

DDD는 어떻게 할까?

일단 3개의 Layer로 구분하는 것이 핵심이다.

  1. Application Layer: 주로 도메인과 Repository를 바탕으로 실제 서비스(API)를 제공하는 계층이다.

  2. Domain Model Layer: Entity, VO를 활용해서 도메인 로직이 진행되는 계층

  3. Infrastructure Layer: 쉽게 말해서 외부 통신(ORM, DB, NoSql)을 담당하는 계층이다.

profile
Making Body, Making Food, Making Co?de

0개의 댓글