Domain Driven Design 기반의 마이크로서비스 디자인 방법론에 대해 설명을 하고 피보탈이 권장하는 모노리스 애플리케이션의 마이크로서비스 전환 방법론에 대해 살펴봅니다. 또한 실제 마이크로서비스 프로젝트에서 발생할 수 있는 우려사항들에 대해서도 국내 프로젝트 경험을 바탕으로 짚어봅니다.
5. Domain-Driven Design (DDD)
“코드를 변경하는 권한을 가진 모든 사
람들은 코드를 통해 모델을 표현할 수
있도록 교육을 받아야 한다. 모든 개발
자는 필수적으로 현업 담당자와 협의를
해야만 한다.”
- Eric Evans, Domain-Driven Design
6. “일반적으로 Bounded Context 당 한 팀이 구성이 됩니다. 한 팀은 여러 개의 Bounded Context를 관리할 수 있으나 여러 팀
이 한 개의 Bounded Context를 관리하는 것은 매우 어렵습니다.” - Evans
Bounded Context
10. Event
Storming
2. Event Storm
Thin
Slice
3. “Thin Slice(s)” 선택
OKRs1. 목표 설정 (OKR)
Tested
Code
6. 테스트 완료 및 동작하는 코드 생성
Snap-E
5. Snap-E
API DATA
PUB / SUB EXT
STORIES UI RISKS
SERVICE A
Patterns
7. 재사용 가능한 패턴
Boris
4. “Boris” - 아키텍처 표현
15. 할인
Event Storming (영화예매 샘플)
결제
극장
영화
선택
날짜
선택
상영관
선택
좌석
선택
결제
시작
신용카드
입력
결제
처리
결제
완료
예매
완료
!
도메인
이벤트
관련된 비즈니스 이벤트
“좌석 선택”, “티켓 예매 완료”
Aggregate
Brains
액션 수행 / 이벤트 생성
할인코드
입력
할인
처리
?
슬라이스
예매
시작
영화
결제
Bounded Context
예약
19. SnapE
API
Data Source / Storage
UI Risks
Stories
Rabbit
MQ
REST / J
SON
CICS G
W
Other
Purchase H
istory
AdminUI
Dependent
On...
GET /purchases
GET /purchases
GET /purchases
23. 릴리즈 파이프라인 자동화
코드 변경
빌드, 테스트, 배포 자
동화
바이너리 저장 스테이징 배포, UAT
운영 시스템 무중단 업
그레이드
샘플Tool
Gitlab ArtifactoryConcourse
Pivotal HA Services
(API기반)
가능한 여러 종류의 테스트
를 자동화하는 파이프라인을
빌드
자동화 된 프로세스
에 기반하여 다음 단
계의 환경으로 프로
모션
롤링 방식을 기반으로
무 중단 패치 및 업그
레이드
</>
12 factor를 반영하는 형
태의 코드
25. Cookbooks
재사용이 가능한 패턴은 문서화되어
다른 개발자들이 참조할 수 있게
합니다.
많은 기업들이 애플리케이션 변환을
위해 사용한 검증된 Playbooks와
Blueprints를 참조 합니다.
26. Selected
aggregate
2. To Boris
Selected
user story
3. To Snap-E
User story
breakdown
4. To story breakdown
5. To tested and
working code
Low-level design decisions:
1. Use Kafka as async interface for receiving job
orders
2. Define Job Order Event entity (data received)
3. Define REST API for job order lookup
...
App Nav + Modernization
Flow 1. From E.S.
6. To Cookbook of
Patterns
30. 국내 프로젝트 개요
● 국내 제조기업의 MES의 마이크로서비스 프로젝트
● Pivotal Application Transformation (AppTx) 서비스를 통한 서비스 도출 및
아키텍처 검증
Oracle DB
WebLogic
Schema
Application
Oracle DB
Pivotal Cloud Foundry
SchemaSchemaSchemaSchemaSchema
SchemaSchemaSchemaSchemaMicroservice
31. 고려사항
● 마이크로서비스 자체가 목표가 아닌 얻고자 하는 Value에 포커스를 맞춰 MSA 디자인
● 지속적인 애플리케이션 업데이트와 배포를 감안
● 개발자들의 Learning Curve를 감안
○ 국내 개발자들은 DB SQL을 이용한 개발에 친숙 (예> Union, join, with, connected by)
○ 이벤트 기반 구현에 대한 개발자들의 생소함
● 마이크로서비스 운영에 대한 고민이 필요
○ DevOps와 플랫폼 필요
○ 마이크로서비스 분산환경에서의 트러블슈팅 노하우 필요
● 마이크로서비스 경험이 있는 마스터 필요