본문 바로가기

DevOps/Cloud

패스트캠퍼스 챌린지 11일차

[강의] 다음은 패스트 캠퍼스 DevOps 운영 패키지를 통해 학습 및 정리한 내용입니다.

 

11월 11일 강의

 

목차

1. 도메인 주도 설계

2. 어플리케이션 이벤트 스토밍

 

도메인 주도 설계

도메인이란 특정 영역을 의미하는 단어로, 일반적으로 전문가의 영역을 의미하고 서비스를 출시하기 위해서는 도메인 영역에서 기획이 이루어지고 이러한 기획은 모델의 설계도로 구성된 다음 설계도를 실제 개발해나가며 서비스를 출시한다.

 

서비스를 출시하게 되면 분야별로 영역과 관점 차이로 기획 및 개발 과정이 순탄하지 않는 경우가 많다고 한다. 그래서 각 구성원들은 도메인 언어의 보편화로 누구나 알기 쉽게 이해할 수 있는 단어를 사용하고, 도메인과 모델 그리고 소프트웨어라는 구조에서 모델에 집중하여 모델 주도 설계를 해나가는 방식을 추구해야하는데, 이를 도메인 주도 설계라고 한다.

 

도메인 주도 설계는 전략적 설계와 전술적 설계로 구분되는데 이중 전략적 설계를 통해 상황에 따른 그룹화와 관계도를 만들어 도메인 모델로 적용하고, 전술적 설계를 통해 도메일 모델을 더 상세하게 모델링해나가게 된다.

 

어플리케이션 이벤트 스토밍

1. 도메인 이벤트

이벤트는 사용자가 행동해서 발생한 결과로, 구성원들이 생각하는 이벤트를 적고 중복되는 것들을 없애고 합친다. 그리고 이벤트 발생 시간 순서대로 붙이며 동시성을 가진 이벤트는 수직으로 붙인다. 이때 각 구성원들은 전문적인 용어가 아닌 일반적인 용어로써 소통한다.

 

예를 들어, 음식 주문 어플리케이션을 제작한다고 하면 Domain Event로 음식점 선택 -> 음식 메뉴 선택 -> 배송지 입력 -> 주문 접수 완료 순으로 정리하는 것과 같다.

 

2. 프로세스 그룹핑

동일한 업무 프로세스로 이벤트들을 그룹핑한다. 비즈니스적으로 중요한 핵심 프로세스에 집중하며, 중요한 이벤트가 누락하지 않았는지 검토한다.

 

3. 커맨드 정의

사용자의 행위가 커맨드가 되는 것으로, 커맨드는 일반적으로 "무엇을 CRUD 요청한다." 또는 "무엇을 00한다."의 형태가 된다. 각 이벤트별로 그 이벤트를 발생시키는 커맨드가 무엇인지 생각하고 이벤트와 함께 작성하며 하나의 커맨드에 하나 이상의 이벤트가 발생할 수 있다는 점을 고려한다.

 

음식점 선택이 커맨드라면, 이로 인한 결과로 음식점이 선택된 것이 이벤트가 될 수 있다.

 

4. 트리거 정의

트리거는 커맨드를 수행하는 사용자로, 이때 사용자는 커맨드를와 함께 작성한다. 만약 결제 시스템 등 외부 시스템이 필요할 경우 추가로 작성한다.

 

5. Aggregate 정의

커맨드 수행을 위해 CRUD 해야 하는 데이터 객체 정의로, 커맨드를 수행해서 이벤트를 발생시키려면 어떤 데이터(정보)가 필요한지 커맨트와 이벤트와 함께 작성한다. 여기서 CRUD는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말을 의미한다.

 

6. Bounded Context 정의

이벤트에 따라 고려되는 Metadata가 있는데 이를 바탕으로 유형화하여 그룹화한다. Metadata란 데이터에 관한 구조화된 데이터로, 다른 데이터를 설명해 주는 데이터를 의미한다.

 

7. Context Map 작성

Bounded Context간의 관계를 도식화한다.

 

https://bit.ly/3FVdhDa

 

(~10/31) 최대 70% 최저가 특가 마지막 득템 찬스! | 패스트캠퍼스

fastcampus.co.kr

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.