[Dev.] 아키텍쳐 개요

핑쿠핑쿠한 지니·2021년 2월 24일
0

dev

목록 보기
2/2

DDD 도메인 주도 설계 - 최범균 저자님 책 읽고

아키텍쳐 개요에 대해 이해하기 위해서 정리해본 내용...!

  1. 아키텍처 개요
  • 응용서비스에서는 로직 직접수행보다는 도메인 모델에 로직수행을 위임한다.

  • 도메인 모델은 도메인의 핵심 로직을 구현한다.

    • 주문 도메인의 경우 ‘배송지 변경’, ‘결제 완료’, ‘주문 총액 계산’ 과 같은 핵심 로직을 도메인 모델에서 구현한다.
  • 인프라스트럭처 영역은 구현 기술에 대한 것을 다룬다.

    • RDBMS 연동 / 메시징 큐 전송,수신 / DB 연동 등
    • SMTP 메일 발송 기능 구현
    • HTTP 클라이언트를 이용한 REST API 호출 처리
    • 즉, 논리적인 개념 보다는 실제 구현을 다룬다.
  • 표현 (ui) -> 응용 (service) -> 도메인 (domain) -> 인프라스트럭쳐 (infra)

  • 하위 계층은 상위계층에 의존하지 않는다. 하지만 구현의 편리함을 위해

  • 도메인과 응용 계층은 infra에 의존하기도 한다.

  • DIP 적용 필요성

    • 고수준모듈: 의미있는 단일 기능을 제공하는 모듈 = CalculateDiscountService
    • 저수준모듈: 고수준 모듈의 기능을 구현하기 위해 필요한 하위기능을 실제로 구현한 것
      • DB JPA 고객정보 읽기
      • Drools로 룰을 실행하기
    • 저수준 모듈이 고수준 모듈에 의존하도록 하려면 -> 추상화한 인터페이스 를 구현한다.
    • :: 더이상 고수준이 저수준에 의존하지 않도록 구현하면 되는 것이다. => DIP 의존 역전의 원칙 (Dependency Inversion Principle)
    • => 대용객체 사용해서 ( mock ) 테스트 가능하다.
    • 실제 구현없이 테스트 할 수 있는 이유는 Dip를 적용해서 고수준 모듈이 저수준 모듈에 의존하지 않게 하였기 때문이다.
    • 구조변경도 쉽게 가능한 장점이 있다.
profile
Web Developer, Backend, Server

0개의 댓글