[MSA] 7. MSA 설계 기법 - 전략적 설계

steve·2024년 3월 20일
0

Backend

목록 보기
14/17

개요

  • 전략적 설계 기법에 대해 알아본다

전략적 설계 기법

  • 이벤트 스토밍 방법
    • 도메인 설계 시 이해 관계자가 모두 참여하여 마이크로서비스 설계를 위한 워크샵을 진행
      • 참가자: 실제 고객, 도메인 전문가, 분석가, 개발자
  • 구성 요소
    • 아래 순서대로 정의
    1. Domain Event
      • 시스템에서 발생하는 중요한 이벤트
      • 부착 위치 : 포스트잇을 왼쪽부터 오른쪽으로 붙여나가면서 진행
      • 데이터가 아닌 비즈니스 프로세스에 집중
      • 과거형 동사로 표현
    2. Hot Spot
      • 질문, 가정, 경고, 의견 수렴이 필요한 내용
      • 병목 구간, 자동화 필요한 수작업, 도메인 지식이 없는 경우
      • 완전히 정의되지 않은 영역, 해결해야 하는 문제
      • 부착 위치 : 필요한 곳 어디에나 부착 가능
    3. Command
      • 부착 위치 : 도메인 이벤트와 한 쌍으로 왼쪽에 부착
      • 이벤트를 트리거하는 명령
      • 현재 동사로 표현
    4. Actor
      • 부착 위치 : 작은 크기로 각 Command마다 붙임
      • 사람이나 역할의 이름을 명사로 표현
      • 예를 들어 주문이라는 도메인에서 회원/사용자의 표현보다는 주문자라는 구체적인 이름을 도출하는 것이 유비쿼터스 언어를 통한 도메인을 도출하는 데 도움이 됨
    5. Policy
      • 부착 위치 : 이벤트 → 커맨드 사이
      • 자동화 정책 : 이벤트가 커맨드를 시작하는 시나리오
      • 커맨드는 특정 도메인 이벤트가 발생할 때 자동 실행된다
      • 이벤트 할 때는 항상 커맨드 한다
      • 예) 주문되는 이벤트가 발생하면 배송요청 커맨드를 호출하는 비즈니스 규칙이 있다면 정책을 추가
    6. External System
      • 연계가 필요한 외부 시스템 또는 프로세스
      • 명사(단어)로 표현
      • 예) 소셜 로그인 OAuth, 이메일 발송
    7. Aggregate
      • 위치: 커맨드와 도메인 이벤트 사이에
      • 도메인 이벤트와 커맨드에 의해 관리되는 데이터
  • 실습 방법
    1. 도메인 이벤트 먼저 도출 (20분)
      • 배치하는 팁은 이벤트 흐름에 따라 가로 또는 세로로 배치
    2. 핫스팟 배치
      • 예) 주문 취소됨에 대해서 가능한 시점, 정책 등 추후 깊게 논의가 필요한 점에 대해 배치
    3. 커맨드 배치
      • 도메인 이벤트에 대한 현재동사형으로 배치
      • 하나의 커맨드로 여러개의 이벤트가 연쇄적으로 발생할 경우 하나만 배치
    4. Actor 식별
      • “사용자”가 아닌 바운디드 내에 활동하는 명확한 이름을 정한다
    5. 정책 식별
      • 예) 주문/취소에 따른 시스템 정책
    6. 외부 시스템
      • 예) 결제 모듈, 이메일 발송 시스템 연동 등
    7. Aggregate
    8. 최종적으로 식별한 Aggregate 기준으로 Bounded Context 식별
      • Context를 묶는 범위는 의사결정에 따라 결정
      • 예) 주문과 결제를 하나의 컨텍스트로 합치거나 또는 분리하거나
      • 제품의 핵심기능으로 보는 경우 컨텍스트를 분리하기도 함
      • 상품/배송 컨텍스트 같은 상용 솔루션들에서 흔히 쓰는 기능들인가, 쉽게 만들 수 있는 외주를 줄 수 있을 정도의 기능인가 에 따라 지원 서브 도메인을 도출한다
      • 컨텍스트 유형을 동기 처리 or 비동기 처리 크게 두가지로 구분
  • 컨텍스트 매핑
    • 아래와 같이 실선은 동기처리, 점선은 비동기 처리 표현
  • 이벤트 스토밍 결과를 헥사고널 아키텍처와 매핑

0개의 댓글

관련 채용 정보