
모놀리식과 마이크로서비스 아키텍처를 비교하여 각각의 장단점을 분석한다. 모놀리식은 초기 개발이 쉽지만 확장성에 한계가 있으며, 마이크로서비스는 유연성이 높으나 복잡하다. 아키텍처 설계 시 서비스 경계 설정과 확장 전략을 고려해 최적화를 추구해야 함을 설명한다.

마이크로서비스 분해 전략을 다루며, 서비스 경계를 정의하는 중요성을 설명한다. 특히 도메인 주도 설계(DDD)를 통해 바운디드 컨텍스트와 서브도메인 개념을 활용하여 모놀리식 애플리케이션을 독립적인 서비스로 효과적으로 나누는 방법을 설명한다.

다양한 IPC(Inter-Process Communication) 방식의 특징과 장단점을 설명하며, 상황에 맞는 적절한 방식 선택의 중요성을 강조합니다. REST, gRPC, 메시지 큐 등 여러 기술을 비교하고, MSA에서의 효율적인 통신을 위한 고려사항을 제시한다.

MSA 트랜잭션 관리 방식인 SAGA 패턴을 소개한다. SAGA는 분산 시스템에서 일관성을 유지하며, 각 서비스의 독립적인 트랜잭션을 관리한다. 다양한 SAGA 구현 방식인 코레오그래피와 오케스트레이션을 비교하고, SAGA를 통해 신뢰성/안정성 향상 방법을 설명한다.

비즈니스 로직을 마이크로서비스 아키텍처에서 효과적으로 설계하는 방법을 다룬다. 특히, 비즈니스 프로세스를 서비스로 분리하는 방법과 이를 통해 유연성, 유지보수성을 높이는 전략을 설명하고, 서비스를 구성하는 데 있어 고려해야 할 요소들을 구체적으로 제시한다.

비즈니스 로직 개발의 이벤트 소싱 패턴을 다룬다. 이벤트 소싱의 개념과 이를 통해 데이터의 변화를 관리하는 방법을 설명하며, 마이크로서비스 아키텍처에서의 활용 사례도 제시한다. 이러한 접근 방식은 시스템의 유연성과 확장성을 높이는 데 기여할 수 있다.

CQRS(명령 쿼리 책임 분리) 패턴의 중요성과 적용 방법을 설명한다. CQRS는 데이터의 읽기와 쓰기를 분리하여 성능과 확장성을 높이고, 복잡한 비즈니스 로직을 더 잘 관리할 수 있게 한다. 이를 통해 시스템의 효율성을 극대화하는 방안을 제시한다.

외부 API 패턴의 중요성과 이를 활용한 마이크로서비스 간의 통신 방식을 다룬다. 외부 API를 통해 서비스 간 데이터 공유와 기능 확장이 가능하며, 이를 통해 시스템의 유연성과 효율성을 높일 수 있다. 다양한 API 설계 원칙과 모범 사례도 소개한다.

MSA로 전환하고자 하는 CONTOSO Bank의 서비스를 Microsoft Azure를 기반으로 구현한 예제에 대한 내용으로 Azure를 사용하여 SAGA 패턴을 구현하는 방식을 설명한다.

이 문서는 CQRS(명령과 쿼리의 역할 분리) 패턴의 개념, 필요성, 장단점 및 구현 방법에 대해 설명한다. 또한 AWS 환경에서 구현하는 아키텍처를 살펴본다.