MSA
MSA(Microservices Architecture, 마이크로서비스 아키텍처) 는 애플리케이션을 여러 개의 독립적인 작은 서비스(마이크로서비스)로 분할하여 운영하는 소프트웨어 설계 방식이다.
각 서비스는 특정 기능을 담당하며, 독립적으로 개발, 배포, 확장, 운영할 수 있다.
마이크로서비스 간에는 REST API, gRPC, 메시지 큐(Kafka, RabbitMQ) 등의 통신 방식으로 데이터를 주고받는다.
Netflix, Amazon, Google 같은 글로벌 IT 기업에서 확장성과 유연성을 확보하기 위해 적극적으로 사용하는 아키텍처다.
주요 특징
- 독립적인 서비스: 각 서비스는 특정 비즈니스 기능을 수행하며, 개별적으로 배포 및 확장 가능.
- 분산 시스템: 서비스 간 네트워크 통신을 통해 협업.
- 다양한 기술 스택 사용 가능: 각 서비스별로 Java, Python, Go, Node.js 등 최적화된 기술 선택 가능.
- 자동 확장 및 장애 격리: 특정 서비스만 확장하거나 장애가 발생한 서비스만 격리 가능.
- DevOps 및 CI/CD 친화적: 빠른 배포와 업데이트 지원.
장점
- 확장성 증가: 특정 서비스만 개별적으로 확장 가능하여 성능 최적화 용이.
- 배포 속도 향상: 각 서비스가 독립적으로 배포될 수 있어 업데이트 주기가 빨라짐.
- 고가용성 유지: 한 서비스가 장애를 일으켜도 전체 시스템에 영향을 주지 않음.
- 다양한 기술 도입 가능: 서비스마다 적절한 언어와 데이터베이스 선택 가능.
관련 용어
- Monolithic Architecture (모놀리식 아키텍처): 기존의 단일 애플리케이션 구조, MSA의 반대 개념.
- Service Discovery (서비스 디스커버리): 서비스 간 동적 탐색을 위한 기능
- API Gateway (API 게이트웨이): 클라이언트 요청을 적절한 서비스로 전달하는 역할
- Circuit Breaker (회로 차단기): 장애 발생 시 서비스 간 영향 확산 방지
- Service Mesh (서비스 메시): 서비스 간 네트워크 트래픽을 관리하는 계층
주요 솔루션 및 사용 사례
- 주요 솔루션
- Spring Cloud, Istio, Kubernetes, Quarkus, Micronaut, Netflix OSS,
- 사용 사례
- 대규모 SaaS 애플리케이션: 독립적인 마이크로서비스로 확장 가능.
- 금융 시스템: 높은 보안 요구사항을 충족하면서 유연한 배포 가능.
- 이커머스 플랫폼: 주문, 결제, 배송 등의 기능을 각각의 마이크로서비스로 운영.
- 스트리밍 서비스: 영상 전송, 추천 시스템, 인증 등을 분리하여 확장 가능.
- DevOps 및 CI/CD 파이프라인 통합: 마이크로서비스별 개별 배포 자동화.