파이썬으로 살펴보는 아키텍처 패턴
-
- 명령-질의 책임 분리 CQRS
부록
아키텍처의 구성 요소와 하는 일
계층 | 구성 요소 | 설명 |
---|---|---|
도메인 : 비즈니스 로직을 정의한다 | 엔티티 | 애트리뷰트는 변할 수 잇는 도메인 객체지만, 시간이 지나도 인식 할 수 있는 정체성이 있다. |
값 객체 | 불변 도메인 객체로 애트리뷰트의 조합이 전체 객체를 결정한다. 모든 애트리뷰트는 다른 동일한 값 객체로 대체할 수 있다 |
|
애그리게이트 | 데이터 변경의 목적으로 한 단위로 취급하는 연관 객체들의 모임이다. 일관성 경계를 정의하고 강제한다 |
|
이벤트 | 무언가 발생할 수 있는 일을 표현한다 | |
커맨드 | 시스템이 수행해야 하는 작업을 표현한다 | |
서비스 계층 : 시스템이 수행해야 하는 작업을 정의하고 다른 구성 요소를 오케스트레이션한다. | 핸들러 | 커맨드나 이벤트를 받고 그에 따라 일어나야 하는 일을 수행한다. |
작업 단위 | 데이터 통합에 대한 추상화다. 각 작업 단위는 원자적 업데이트를 표현한다. 작업 단위가 있어서 저장소를 사용할 수 있다. 검색된 애그리게이트의 새로운 이벤트를 추적한다. |
|
메시지 버스 (내부) | 적절한 핸들러에게 보내(라우팅) 커맨드와 이벤트를 처리한다 | |
어댑터(2차) : 시스템에서 외부세계로 이어지는 인터페이스(I/O)의 구체적인 구현 | 저장소 | 영속적인 저장소에 대한 추상화다. 애그리게이트마다 자신만의 저장소가 있다. |
이벤트 발행자 | 이벤트를 외부 메시지 버스에 넣는다 | |
진입점(1차 어댑터) : 외부 입력을 서비스 계층 호출로 변환한다. | 웹 | 웹 요청을 받아서 커맨드로 변환하고 변환한 커맨드를 내부 메시지 버스에 넣는다. |
이벤트 소비자 | 외부 매시지 버스의 이벤트를 읽어서 커맨드로 변환한다. 변환한 커맨드를 내부 메시지 버스에 넣는다. | |
해당 사항 없음 | 외부 메시지 버스 (메시지 브로커) | 다른 서비스들이 이벤트를 통해 서로 통신하기 위한 인프라다. |
프로젝트 구조 틀
추천 도서
-
- 파이썬 애플리케이션 아키텍처에 대해 다루는 몇 안 되는 책 중 하나다
-
- 메시징 패턴을 시작하는 책으로 좋다
-
- 여러 가지 패턴을 소개한다.
- 가장 인기 있는 패턴으로 스트랭글러 피그 패턴을 언급한다.
- 여러분이 마이크로서비스로 옮기려고 계획 중이라면 이 두 책을 살펴보는 걸 권한다.
- 통합 패턴이나 비동기 메시징 기반 통합에 대한 책으로도 아주 좋은 책이다
관련 문서
Plugin Backlinks: 아무 것도 없습니다.