마이크로서비스
마이크로서비스 는 애플리케이션을 여러 개의 작고 독립적인 서비스로 분할해서 개발하고 운영하는 소프트웨어 아키텍처 스타일입니다.
각 마이크로서비스는 하나의 특정 기능을 담당하며, 독립적으로 개발, 배포, 확장될 수 있습니다. 서비스 간에는 API(주로 RESTful, gRPC)를 통해 통신하며, 대규모 시스템의 복잡성을 줄이고 민첩성을 높이는 방식으로 널리 사용됩니다.
주요 특징
- 단일 책임: 각 서비스가 하나의 비즈니스 기능에만 집중 (예: 결제, 사용자 관리, 상품 관리).
- 독립적 배포: 서비스 단위로 개별 개발·배포 가능, 다른 서비스에 영향 없이 업그레이드 가능.
- 자율성: 각 팀이 자신들의 마이크로서비스를 독립적으로 개발, 운영, 유지보수.
- 경량 통신: 주로 HTTP/HTTPS 기반 REST API, gRPC 등을 통해 서비스 간 통신.
- 독립 데이터 저장소: 서비스별로 자신만의 데이터베이스를 가질 수 있어 데이터 격리 보장.
- 탄력적 확장: 트래픽이 많은 특정 서비스만 별도로 확장 가능 (예: 주문 처리 서비스만 확장).
장점
- 유연한 개발과 배포: 빠른 업데이트와 새로운 기능 추가, 서비스 단위 배포 가능.
- 확장성: 서비스별로 독립적 확장 가능, 효율적 자원 사용.
- 장애 격리: 하나의 서비스에 문제가 생겨도 전체 시스템에 영향 최소화.
- 기술 다양성 허용: 각 서비스별로 적절한 언어, 프레임워크 선택 가능 (예: Java, Python, Node.js).
- 비즈니스 민첩성: 빠른 시장 대응과 서비스 개선.
관련 용어
- 모놀리식 아키텍처 (Monolithic Architecture): 하나의 큰 덩어리로 구성된 기존 애플리케이션 방식, 마이크로서비스의 반대 개념.
- API 게이트웨이 (API Gateway): 모든 마이크로서비스의 진입점을 통합 관리하는 시스템.
- 서비스 메시 (Service Mesh): 서비스 간 복잡한 통신을 지원하는 인프라 계층.
- 컨테이너(Container): 마이크로서비스를 배포하는 경량 가상화 기술.
- 오케스트레이션 (Orchestration): Kubernetes와 같은 도구로 다수의 마이크로서비스 배포 및 관리.
- DevOps: 마이크로서비스 환경에서 필요한 지속적 통합 및 배포(CI/CD) 방식.
주요 솔루션 및 사용 사례
- 주요 솔루션
- Kubernetes, Docker, Istio, Consul, AWS ECS, Google Kubernetes Engine (GKE), API Gateway (Kong, Apigee).
- 사용 사례
- 대규모 전자상거래 플랫폼: 상품, 주문, 결제, 배송을 각각 독립 마이크로서비스로 운영.
- 핀테크 서비스: 계좌 관리, 송금, 결제, 사용자 인증을 서비스별 분리.
- 스트리밍 서비스: 사용자 관리, 추천, 동영상 재생, 광고 서비스로 분할.
- 게임 서버 백엔드: 로그인, 매치메이킹, 랭킹, 채팅 등 기능별 마이크로서비스 구성.