Notepad

작성중입니다....

비즈니스 로직 설계

핵심 내용

  • 비즈니스 로직 패턴 적용: 트랜잭션 스크립트 패턴, 도메인 모델 패턴
  • DDD Aggregate 패턴을 응용한 비즈니스 로직 설계
  • 도메인 이벤트 패턴을 마이크로서비스 아키텍처에 적용

비즈니스 로직 구성 패턴

비즈니스 로직 설계: 트랜잭션 스크립트 패턴

  • 트랜잭션 스크립트 패턴
    • 비즈니스 로직을 요청 타입별로 하나씩 매핑된 절차적 트랜잭션 스크립트 뭉치로 구성
    • 단순한 비즈니스 로직에 적합

비즈니스 로직 설계: 도메인 모델 패턴

  • 도메인 모델 패턴
    • 비즈니스 로직을 상태와 동작을 가진 클래스로 구성된 객체 모델로 구성
    • 객체지향적으로 비즈니스 로직 설계
    • MSA에서는 OOD도 한계가 있기에 OOD를 개선한 DDD가 필요

도메인 주도 설계 개요

  • DDD는 복잡한 비즈니스 로직을 개발하기 위해 OOD를 개선한 접근 방식
  • DDD 방식으로 설계하면 각 서비스는 자체 도메인 모델을 가지며, 애플리케이션 전체 도메인 모델의 문제점을 방지 할 수 있음

도메인 모델 설계: DDD Aggregate 패턴

  • Aggregate 패턴
    • 도메인 모델을 여러 Aggregate로 구성하여 각 Aggregate를 한 단위의 객체망으로 취급

불분명한 경계 문제

  • 전통적인 객체 지향 설계에서는 비즈니스 객체들의 경계가 불분명함

Aggregate는 경계가 분명하다

  • Aggregate는 한 단위로 취급 가능한 경계 내부의 도메인 객체들
  • 도메일 모델을 개별적으로 이해하기 쉬운 덩어리로 분해
  • CRUD 등의 작업 범위를 분명하게 설정
  • DDD 도메인 설계의 핵심은 Aggregate와 그 경계, 루트를 식별하는 것

Aggregate 규칙

  • 규칙1: Aggregate 루트만 참조
  • 규칙2: Aggregate 간 참조는 반드시 기본키를 사용
  • 규칙3: 하나의 트랜잭션으로 하나의 Aggregate를 생성/수정

Aggregate 입도

  • Aggregate는 작으면 작을수록 좋음
  • 잘게 나뉘어져 있으면 그만큼 동시 처리 가능한 요청 개수가 늘고 확장성이 좋아짐

비즈니스 로직 설계: Aggregate

  • 대부분의 마이크로서비스 비즈니스 로직은 Aggregate로 구성
    • 나머지는 비즈니스로직은 도메인 서비스와 사가에 위치

도메인 이벤트 발행

  • 도메인 이벤트 패턴
    • Aggregate는 뭔가 생성되거나 중요한 변경이 발생했을 때 도메인 이벤트를 발행
  • DDD 맥락에서 도메인 이벤트는 Aggregate에 발생한 사건
  • Aggregate는 상태가 전이될 떄마다 이에 관련된 컨슈머를 위해 이벤트를 발행

변경 이벤트를 발행하는 이유

  • 다른 애플리케이션 또는 같은 애플리케이션 내부의 다른 컴포넌트들이 Aggregate 상태 변경에 영향을 받아 처리하는 업무들이 있기에 이벤트 발행

도메인 이벤트란 무언인가?

  • 과거 분사형 동사로 명명한 클래스
  • 이벤트에 의미를 부여하는 프로퍼티는 primitive value 또는 value Object가 있음

이벤트 강화

  • 컨슈머에 필요한 정보를 이벤트가 갖고 다니는 이벤트 강화 기법

도메인 이벤트 식별

도메인 이벤트 생성 및 발행

도메인 이벤트 소비

주방 서비스 비즈니스 로직

주문 서비스 비즈니스 로직

참고

  • 마이크로서비스 패턴 자바(저 : 크리스 리처드슨)

'dev > 아키텍처' 카테고리의 다른 글

마이크로서비스 패턴(7)  (0) 2022.04.06
마이크로서비스 패턴(6)  (0) 2022.03.31
마이크로서비스 패턴(4)  (0) 2022.03.10
마이크로서비스 패턴(3)  (0) 2022.03.03
도메인 주도 설계(Domain-Driven Design)  (0) 2022.02.24
profile

Notepad

@Apio

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!