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