Presentation
패턴으로 알아보는 MSA 방법론
MSA 전환 및 클라우드 네이티브 환경 구축을 고민하고 계신 분들이라면 발표자료를 통해 성공 전략을 꼭 확인해보세요!
2025년 03월 21일

패턴으로 알아보는 MSA 방법론
MSA에 적용되는 패턴이 데이터 일관성 유지, 서비스 간 통신, 공통 기능 처리, 시스템 관리, 애플리케이션 회복력, 읽기/쓰기 성능 및 확장성 등의 문제 해결에 어떻게 기여하는지 설명합니다.
‘패턴으로 알아보는 MSA 방법론’ 발표 영상
‘패턴으로 알아보는 MSA 방법론’ 핵심내용
SAGA 패턴을 통한 분산 트랜잭션 관리

- SAGA 패턴은 두 개 이상의 서비스에서 발생하는 트랜잭션을 관리하여 데이터의 일관성을 보장하는 패턴입니다.
- Monolithic 애플리케이션에서는 데이터베이스가 트랜잭션을 처리하여 데이터 일관성을 유지하지만, 마이크로서비스 애플리케이션에서는 이를 서비스 레이어에서 직접 관리해야 합니다.
- 분산 트랜잭션에서는 서비스 장애로 인해 데이터 정합성 문제가 발생하거나, 결제 중복 및 실패와 같은 다양한 문제가 생길 수 있습니다.
- 특정 서비스 작업이 실패하면, 이미 완료된 서비스에 보상 이벤트를 발행하여 데이터의 일관성을 유지하도록 합니다.
- SAGA 패턴은 여러 방식으로 분산 트랜잭션을 관리하며, 채널을 통해 이벤트를 전달하고 처리 상태를 지속적으로 업데이트하여 안정적인 데이터 흐름을 유지합니다.
RPI 패턴의 통신 방식


- RPI 패턴은 HTTP 방식의 IPC(Inter-Process Communication) 방식을 이용하여 여러 서비스가 클라이언트의 요청을 처리하는 구조입니다.
- 마이크로서비스 아키텍처에서는 서비스 간 통신 방식을 표준화하여 보안, 성능, 관리적 측면을 모두 고려하여 설계해야 합니다.
- 비동기식 통신 방식은 Messaging Broker를 활용하여 서비스 간 메시지를 비동기적으로 주고받습니다. 요청된 서비스는 응답이 가능할 때 호출한 서비스에 결과를 전달하게 됩니다.
- 비동기식 방식의 장점은 클라이언트가 응답을 기다릴 필요 없이 다른 작업을 진행할 수 있다는 점이며, 즉시 응답이 필요하지 않은 경우에 특히 유용합니다.
- 또한, 메시지를 Queue에 보관할 수 있기 때문에 서비스 위치에 상관없이 메시지를 안전하게 처리할 수 있는 장점이 있습니다.
Circuit Breaker 패턴의 중요성 및 기능

- Circuit Breaker 패턴은 장애가 발생한 서비스를 차단하여 다른 서비스로의 장애 확산을 방지합니다. 이를 통해 시스템 전체의 안정성을 높일 수 있습니다.
- 서비스 장애 원인으로는 과도한 요청, 일시적인 불능 상태, 타임아웃, 느린 네트워크 등이 있으며, 이러한 문제를 신속히 식별하고 대응할 수 있어야 합니다.
- 장애가 발생하면 해당 서비스를 빠르게 감지하고 복구하여, 다른 서비스는 정상적으로 운영될 수 있도록 돕습니다.
- Circuit Breaker 패턴은 Closed, Opened, Half-Opened의 세 가지 상태를 통해 장애 상황을 효과적으로 관리하며, 장애 복구에 집중할 수 있도록 지원합니다.
- 이를 통해 전체 시스템에 미치는 영향을 최소화하고, 보다 안정적인 서비스 운영이 가능합니다.
Service Mesh의 필요성과 운영 효율성

- Service Mesh는 마이크로서비스 아키텍처(MSA) 환경에서 운영 및 관리의 효율성을 극대화하기 위해 꼭 필요한 기술입니다.
- MSA 환경에서는 수십, 수백 개의 컨테이너 인스턴스에 대한 스케일링, 설정, 로깅, 모니터링이 필요하므로 이를 효율적으로 관리할 수 있는 체계가 중요합니다.
- Service Mesh는 서비스 간 통신 정책과 관리를 통합하여, 복잡한 분산 환경에서도 일관된 운영이 가능하도록 지원합니다.
- 또한, 각 마이크로서비스에 중복되는 공통 기능을 단일 관리 포인트로 통합하여 관리 부담을 줄이고, 운영 효율성을 높일 수 있습니다.
- 사이드카(Sidecar) 패턴이나 프록시(Proxy) 패턴을 통해 서비스 로직은 그대로 유지하면서, 모니터링이나 로깅 같은 공통 기능을 외부로 분리하여 구현할 수 있습니다.
서비스 메쉬 패턴의 기능과 효과

- 서비스 메쉬 패턴은 네트워크 트래픽 관리, 라우팅, 보안 강화, 관측 가능성(Observability) 기능을 제공하여 컨테이너 기반 마이크로서비스 환경을 더 효율적으로 운영할 수 있도록 돕습니다.
- 특히 Service Discovery 기능은 서비스 이름만으로 다른 서비스를 찾을 수 있게 하며, 부하 분산(Load Balancing)을 통해 여러 복제본에 트래픽을 균등하게 분산시킵니다.
- 헬스 체크(Health Check) 기능도 제공하여, 각 서비스의 상태를 주기적으로 확인하고, 일시적인 네트워크 문제로 인한 서비스 호출 실패를 방지할 수 있습니다.
- 마이크로서비스 아키텍처 도입으로 인한 런타임 복잡성을 해소하고, 공통 기능을 라이브러리화하여 개발 생산성을 높일 수 있습니다. 사이드카 패턴을 통해 인프라의 복잡성도 완화할 수 있습니다.
- 다만, 서비스 메쉬를 도입하면 런타임 인스턴스 수가 늘어나고, 네트워크 레이어 추가로 인한 지연 시간이나 관리 부담이 발생할 수 있다는 점도 고려해야 합니다.
마무리
- 문의사항 : hello@msap.ai / 02-6953-5427