Ch2. Decomposition strategy
2021. 1. 22. 23:10ㆍ개발/MSA
728x90
반응형
4 + 1 view model
- 어플리케이션을 바라보는 여러가지 관점을 정의한 내용입니다.
- 각 뷰는 아래와 같습니다.
- Logical view: 상속, 연관, 의존 등 클래스와 패키지 사이의 관계를 말합니다.
- Implementation view: 빌드 시스템의 결과물, 코드, 컴포넌트 및 이 컴포넌트 모듈 간의 조합 관계를 의미합ㄴ디ㅏ.
- Process view : 런타임 컴포넌트, 즉, 개별 프로세스와 IPC를 통해 프로세스간 관계를 나타냅니다.
- Deployment view: 프로세스가 머신에 매핑되는 방법을 보여줍니다. 머신 및 프로세스 간의 관계를 네트워킹으로 표현 합니다.
- 시나리오 (+1) : 특정 뷰 내에서 아키텍쳐 요소가 협동하여 요청을 처리하는지 보여줍니다.
어플리케이션의 요건
- 기능 요건: 기능적으로 구현하는 것을 의미
- 서비스 품질 요건: 응답시간, 확장성, 신뢰성 등등
아키텍쳐 스타일
- 계층화 아키텍쳐
- 구조: 아래와 같이 3개의 계층으로 구별됩니다.
- Presentation layer: Controller
- Business logic layer: Service
- Persistence layer: Repository
- 구조: 아래와 같이 3개의 계층으로 구별됩니다.
- 육각형 아키텍쳐 스타일
- 구조
- 인바운드 어댑터
- 아웃바운드 어댑터
- Port
- 예시
- 다음의 링크에서 잘 정리되어 있습니다.
- 구조
Service란 무엇인가?
- 어떤 기능이 구현되어 단독 배포가 가능한 컴포넌트를 의미합니다.
- Command와 Query로 구별 됩니다.
Microservice Architecture란?
다음 3단계 프로세스를 통해 정의합니다.
- 어플리케이션의 요건을 핵심 요청으로 추상화합니다.
- 해당 요청을 서비스로 나누어 분해 할지를 결정합니다.
- 고려사항: 네트워크 지연, consistency
- 서비스별로 API를 정의합니다.
Application architecture definition process
- 도메인 모델 정의
- Scenario 정의
- Doamin 정의
- Depenedency 정의
- System 작업 정의
- Command, Query 두 단계로 나누어서 정의
- 서비스 정의
- 비즈니스 능력 패턴별 분해
- 하위 도메인 패턴별 분해
- bounded context로 분해
Tips
- Constraints를 항상 고려해야 합니다. (Network latency, Availability, Consistency)
- Consistency의 경우 기존에는 2PC를 많이 사용했으나, Microservice에서는 Saga pattern이 유명합니다.
- 만능 클래스는 회피합니다. : 모든 코드 전반에 쓰이는 만능 클래스는 지양하며 분해를 통해서 적합한 단위로 분해할 수 있게 합니다.
728x90
반응형
'개발 > MSA' 카테고리의 다른 글
Ch3. Inter-Process communication (1) | 2021.01.22 |
---|---|
Ch1. Monolithic vs Micro service (0) | 2021.01.22 |