DDD START! (1)

이유진·2023년 10월 29일
post-thumbnail

작년인가, 이번 해 초인가 DDD Start! 저자분께서 회사에 강연을 오신적이 있었다.
사실 그땐 이걸 배워서 써먹을 데가 없었는데, 곧 회사에서 적용할 수 있을 기회가 생길 것 같아 새로운 마음가짐으로 다시 읽어보려고 한다.

도메인

소프트 웨어로 해결하고자 하는 문제영역

ex) 온라인 서점

온라인 서점을 구현해야 한다.
➡️ 온라인 서점 도메인

온라인 서점 소프트웨어는 어떤 기능을 제공해야 하는가?

➡️ 주문, 회원, 결제, 배송, 카탈로그, 리뷰, 혜택 등 (하위 도메인)

  • 모든 하위 도메인을 구현해야 하는 것은 아니다 (외부 연동을 사용할 수도 있다)

도메인 모델

특정 도메인을 개념적으로 표현한 것

도메인 모델 파악을 위한 도구

1. 객체 모델

  • 도메인 자체를 이해하기 위해 필요하다
  • 도메인이 제공하는 기능, 주요 데이터 구성을 파악할 수 있다

2. 상태 다이어그램

  • 객체 모델만 보고 도메인을 완벽히 이해할 수 있는 건 아니다

ex) 주문 프로세스를 상태 다이어그램으로 나타낸다

  • 주문을 취소하면 결제취소도 함께 일어난다는 것을 알 수 있다

도메인 모델 패턴

일반적인 애플리케이션 아키텍처

Layered Architecture

출처

Presentation Layer (or UI)

  • 사용자의 요청 처리, 사용자에게 정보를 보여줌

Application Layer

  • 사용자가 요청한 기능 실행
  • 업무로직을 직접 구현하지 않는다
  • 도메인 계층을 조합해 기능을 실행한다

Domain Layer

  • 시스템이 제공할 도메인 규칙을 구현한다
    ex) 주문 도메인
  • 출고 전 배송지를 변경할 수 있다
  • 주문 취소는 배송전에만 할 수 있다
    ➡️ 이런 규칙을 구현한 코드가 도메인 계층에 위치해야한다

Infrastructure Layer

  • 데이터베이스나 메시징 시스템과 같은 외부 시스템과의 연동을 처리한다

중요한 것은, 도메인에 대한 지식과 정확한 요구사항을 먼저 파악하고 있어야 제대로 구현할 수 있다.

최근에 요구사항이 얼마나 중요한가에 대해 뼈저리게 느끼고 있다...
제발 요구사항을 정확히 주세요😭

참고도서

profile
BackEnd Developer

0개의 댓글