[MSA] 6. MSA 개발 프로세스와 도메인 주도 설계 개념

steve·2024년 3월 12일
0

Backend

목록 보기
13/17
post-thumbnail

개요

  • 마이크로서비스 개발 프로세스에 대해 이해한다
  • 도메인 주도 설계의 전반적인 내용을 알아본다
  • 컨텍스트 매핑에 대해 알아본다

마이크로서비스 개발 프로세스

  1. 마이크로서비스 도출
    • 고려 사항
      • 도메인 : 업무영역, 제공서비스
      • 구성원 역량 및 운영 조직 구조
      • 서비스 변경 / 배포 빈도
      • 사용량 파악 (트랜잭션 빈도)
      • 데이터베이스 Ownership
  2. 시스템 복잡성 고려하여 마이크로 서비스를 정의
    • 로컬 복잡성 : 개별 마이크로 서비스 내에서의 복잡성
    • 글로벌 복잡성 : 서비스 간의 상호작용과 의존성
    • 판단 기준 : 너무 많이 쪼개도 안좋고 너무 안쪼개도 안좋으니 균형있게 설계해야 함
  3. 기능 분해를 통해 서브 시스템, 업무 영역 분리
  4. 도메인 주도 설계를 통한 마이크로 서비스 도출

도메인 주도 설계

  • 마이크로 서비스 분리 기준
    • Bounded Context 기준
    • 전략적 설계, 전술적 설계를 통한 분리
  • 유비쿼터스 언어를 사용하여 현업(도메인 전문가)과 개발자 간 서로 이해할 수 있는 소통 필요
    • 예시)
      • 사용자 - 포괄적인 의미 사용 X
      • 방문자 - O
  • 도메인 모델링
    • 유비쿼터스 언어로 비즈니스 도메인 모델을 구축하는 것
  • 고객과 주문이라는 멘탈 모델(머릿속의 모델링) 을 구분을 해서 정의를 하는것은 좋으나 덩어리가 너무 커지도록 하지 않고 Bounded Context(맥락의 경계)를 잘 설계해야 한다
  • 동일한 Customer라고 해도 각각 컨텍스트내에서 일관성을 가져야 한다
    • 과거에는 "Customer"라는 용어를 모든 시스템 총괄 하나의 의미를 가졌다 → 의미 충돌 발생
    • 혼동을 피하기 위해 컨텍스트 간 용어를 분리하여 정의해야함
  • 도메인과 BC(바운디드 컨텍스트)는 아래처럼 필드/메소드 등을 정의

Context Mapping

  • Bounded Context간에 상호 작용 하기 위한 관계 설정을 Context Mapping이라 함
  • 유형
    • 협력 패턴 1. 파트너쉽 관계
      • A-B 팀 간 의사 소통으로 풀어나가는 관계
    • 협력 패턴 2. 공유 영역
      • A-B 팀 간 공유 영역이 존재할 때 공통 부분은 공통 라이브러리화 하여 배포 진행
    • 공급자-소비자 패턴
      • 대부분의 Bounded Context는 공급자-소비자 패턴
      • 공급자 → 소비자 방향 = Down stream
      • 소비자 → 공급자 방향 = Up stream
      • 세부적으로는 Conformist(순응주의자), ACL(충돌방지계층), OHS(오픈 호스트 서비스), 공개프로토콜 공표된 언어(PL) 유형이 있음
    • 분리형 노선
      • 각각의 BC가 커뮤니케이션이 어려운 경우 특정 기능을 중복으로 두는 것이 더 저렴한 경우 사용
  • 서비스 매핑도
    • 예시 참고
  • 실무 설계 예시
    • 호출 방식은 실선(동기)과 점선(비동기)로 표기
    • 위 과정에 대한 표준화 된 프로세스는 Event Storming 기법을 활용하여 Bounded Context를 도출하고, 그 결과에 대한 서비스 매핑도를 위와 같이 작성해보는 연습이 필요함

0개의 댓글

관련 채용 정보