Microservice with Kubernetes
개요
Microservice Architecture(MSA)는 작은 서비스들의(Microservices) 조합을 통해 비즈니스 애플리케이션을 개발하는 접근방법을 말합니다. MSA를 이용하면 비즈니스 요구사항을 빠르게 개발하고, 변경 사항을 비교적 자유롭게 운영환경에 즉시 배포하고 유지보수가 용이하며, 부분 장애가 전체로 미치지 않아 장애 영향을 최소화할 수 있는 장점이 있습니다.
Samsung Cloud Platform에서는 최근의 급격한 비즈니스 및 기술 변화에 대응할 수 있도록 MSA 기반 클라우드 네이티브 어플리케이션 개발을 위한 Kubernetes Engine, API Gateway, Event Streams 등의 클라우드 서비스를 제공합니다.
아키텍처 다이어그램
- 클라이언트의 요청은 API Gateway 서비스를 통해서 VM/Container Workload로 전달된다.
- API 요청에 따라 API Gateway는 Container Workload에 해당되는 Kubernetes Engine의 Ingress Controller로 전달된다. Kubernetes Engine은 ingress를 통해 들어온 요청을 매핑되어 있는 서비스 Pod로 라우팅 처리를 수행한다.
- API 요청에 따라 API Gateway는 VM Workload에 해당되는 LoadBalancer로 연결되어 애플리케이션을 처리를 수행한다.
- Microservice Architecture는 구조화된 서비스 단위로 분리된 DB를 구성한다.
- Backing Service는 Microservice 들이 네트워크를 통해서 사용할 수 있는 Backend 서비스를 말하며, PostgreSQL(DBaaS)과 같은 DBMS서비스, CacheStore(DBaaS)와 같은 in-memory cache 서비스, Event Streams과 같은 Microservice 메시지의 비동기 처리를 위한 Message Queue 서비스 등을 제공한다.
- DevOps 기반 CI/CD 서비스를 통해서 Container Image는 Container Registry에 저장된 Image를 Pull 받아서 애플리케이션을 구성한다.
- Microservice 구성 요소간의 네트워크를 제어하기 위해 Service Mesh 기술을 사용할수 있다. Service Mesh 기술을 통해 분할된 애플리케이션간의 다양한 네트워크 구성과 데이터 흐름에 대한 관리 및 추적이 가능하다.
- MSA에서는 다수의 Microservice가 분산환경에서 운영되기 때문에 서비스 상태에 대한 모니터링이 필요하다. Monitoring, Logging, Tracing과 같은 Telemetry 서비스는 서비스들을 모니터링하고, 서비스 별로 발생하는 이슈들에 대응할 수 있도록 환경을 구성하는 역할을 한다.
사용 사례
물류 시스템 Microservice 적용
물류 시스템의 Application 경량화 및 가용성 확보 및 비즈니스 확대 시 유연한 대응이 가능한 아키텍처를 위해 신규 Application 개발 시 컨테이너 기반의 MSA 를 적용하여 구축을 수행했습니다.
물류 시스템을 구성하는 창고관리 시스템, 수배송시스템, 복합운송시스템 등 세부 시스템은 컨테이너로 구성되고 Samsung Cloud Platform은 표준적인 Kubernetes Engine 서비스를 이용하여 컨테이너 기반의 환경에서 Microservice의 손쉽고 빠른 배포, 독립적인 실행 환경, 확장성 및 복원성을 제공합니다.
글로벌 제조사의 개발 플랫폼 사례
글로벌 제조사의 Application 개발을 지원하는 플랫폼은 Microservice 기반의 Application 개발을 위한 API Gateway, DevOps, Kubernetes 기반 컨테이너 서비스를 제공합니다.
이를 통해서 개별 구축 서비스에 대한 DevOps 기반 Canary 배포를 지원하고 API Gateway를 통해서 개별 서비스의 API 를 카탈로그화 하여 서비스의 재사용성을 높이고 있습니다.
Service mesh 기술을 통해 Microservice에 대한 흐름 제어 및 가시성을 확보할 수 있습니다.
선결 사항
없음
제약 사항
Ingress Controller 및 Service Mesh 등의 일부 기능은 Samsung Cloud Platform에서 제공되지 않으므로 별도 구성이 필요합니다.
고려 사항
없음
관련 서비스
본 가이드에서 설명하는 기능 또는 구성과 연결되는 Samsung Cloud Platform의 서비스 목록입니다. 서비스 선택 및 설계 시에 참고하세요.
| 서비스군 | 서비스 | 상세 설명 |
|---|---|---|
| Compute | Virtual Server | 클라우드 컴퓨팅에 최적화된 가상 서버 |
| Networking | VPC | 클라우드 환경에서 독립된 가상 네트워크를 제공하는 서비스 |
| Database | MySQL(DBaaS) | 오픈소스 관계형 데이터베이스(RDBMS) MySQL을 간편하게 생성하고 관리하는 서비스 |
| Database | MariaDB(DBaaS) | MySQL과의 호환성이 높은 MariaDB를 간편하게 생성하고 관리하는 서비스 |
| Database | PostgreSQL(DBaaS) | 오픈소스 PostgreSQL을 간편하게 생성하고 관리하는 서비스 |
| Database | EPAS(DBaaS) | EPAS를 간편하게 생성하고 관리하는 서비스 |
| Database | Microsoft SQL Server(DBaaS) | Microsoft SQL Server를 간편하게 생성하고 관리하는 서비스 |
| Database | CacheStore(DBaaS) | 빠른 데이터 처리 능력의 Key-value 인메모리 데이터 스토어 |
| Data Analytics | Event Streams | Apache Kafka 클러스터를 간편하게 생성하고 관리하는 서비스 |
| Container | Kubernetes Engine | Kubernetes 컨테이너 오케스트레이션 서비스 |
| Container | Container Registry | 컨테이너 이미지를 손쉽게 저장, 관리, 공유하는 서비스 |
| Application Service | API Gateway | API를 손쉽게 관리 및 모니터링하는 서비스 |
| Management | ServiceWatch | 생성한 자원의 지표, 로그, 이벤트 등을 수집하여 모니터링하고 성능, 운영 상태 등 자원 전반에 대한 관찰성을 제공하는 다양한 도구를 제공하는 서비스 |
