클라우드 활용 실태 관련 보고서
https://info.flexera.com/CM-REPORT-State-of-the-Cloud
컨테이너 오케스트레이션이란?
컨테이너 오케스트레이션은 여러 대의 서버에 걸쳐서 컨테이너를 배포, 관리하는 프로세스를 자동화하는 기술입니다. 컨테이너 오케스트레이션은 앱을 더욱 효율적으로 실행할 수 있도록 도와줍니다.
컨테이너 오케스트레이션의 기능?
컨테이너 스케줄링
- 컨테이너를 실행할 호스트 노드를 자동으로 선택하고 배치하는 작업을 수행합니다. 이를 통해 앱의 가용성을 높일 수 있습니다. 스케줄러는 여러 가용 옵션 중에서 최적의 호스트 노드를 선택합니다.
컨테이너 클러스터링
- 여러 대의 노드를 하나의 클러스터로 묶어 앱을 분산하여 실행하고 자원을 효율적으로 활용하는 기능입니다.
- 여러 대의 컨테이너를 묶어 하나의 서버처럼 사용할 수 있도록 지원합니다.
- 클러스터를 덩어리 지어 주고 클러스터 내의 자원들에 접속할 수 있게 해주며 또한 이 자원들이 잘 배분되도록 해 주는 역할을 합니다.
서비스 디스커버리
- 컨테이너가 실행 중인 호스트 노드의 IP 주소를 자동으로 추적하고, 서비스 이름과 IP 주소 등을 관리하여 앱 간의 연결을 관리합니다.
- 앱을 사용하는 클라이언트가 호스트 노드를 찾을 수 있도록 합니다.
오토 스케일링(auto scaling)
- 앱의 트래픽이 증가할 때 자동으로 새로운 호스트 노드를 추가하여, 자원 사용량을 최적화하고 앱의 가용성을 보장합니다.
로드 밸런싱
- 컨테이너가 여러 대의 호스트 노드에 분산되어 실행되기 때문에, 로드 밸런싱을 수행하여 트래픽을 효율적으로 분배합니다.
롤아웃과 롤백
- 새로운 앱 버전이 배포될 때 서비스 중단 없이 천천히 업데이트를 수행하는 롤 아웃 기능을 제공합니다.
- 이슈 발생 시 이전 버전으로 롤백
자동 복구
모니터링과 로깅
- 클러스터 내의 여러 컨테이너와 호스트 노드의 상태를 모니터링하고, 로그를 수집합니다. 이를 통해 앱의 성능을 분석할 수 있으며 문제점을 신속하게 파악할 수 있습니다.
보안과 네트워크 관리
- 컨테이너와 노드의 보안을 관리하고 네트워크 설정을 관리하는 기능을 제공합니다.
대표적인 컨테이너 오케스트레이션 툴
- 도커 스웜(Docker Swarm)
- 쿠버네티스(Kubernetes)
- GKE(Google Kubernetes Engine)
- AWS ECS/EKS
도커 스웜
Docker Inc.
이 개발한 도커 컨테이너 오케스트레이션 도구
Docker Swarm
은 2015년 Docker 1.12
버전에서 처음 발표됨
- 쿠버네티스 등장 전까지 가장 대중적인 컨테이너 오케스트레이션 도구 중 비교적 간단하게 작동하고 설정이 쉽습니다.
- 또한 도커에서 제공하는 툴이기 때문에 기존의 Docker 생태계와의 호환성이 높으며, Docker 엔진에 내장되어 있으므로, Docker 사용자들이 쉽게 사용할 수 있습니다.
쿠버네티스(Kubernetes)
- Google에서 개발한 오픈소스 기반 프로젝트로, 구글은 2014년에 쿠버네티스 프로젝트를 오픈소스화했으며 현재는 리눅스 재단에 의해 관리되고 있습니다.
- 구글에는 Gamil, 유튜브 검색 등 다양한 웹 서비스가 있고 대용량 트래픽을 감당해야 하는 상황에서, 이를 위해 쿠버네티스 프로젝트를 시작, 실제 서비스에 적용하고 있는 사례
- v1.0이 2015년 7월 21에 출시
- 대규모에 적합
- 스케일링 기능 강화(Replicatio Controller, 컨테이너 수를 동적으로 조절)
- 서비스 디스커버리 기능 강화(DNS 기반)
- 베어 메탈, VM 환경 등 다양한 환경에서 동작
GKE(Google Kubernetes Engine)
- GCP에서 제공하는 쿠버네티스 기반의 관리형 컨테이너 오케스트레이션 서비스
- Google의 인프라 구조를 사용하며 쿠버네티스(Kubernetes)의 모든 기능을 지원합니다.
ECS(Amazon Elastic Container Service)
- AWS에서 제공하는 관리형 컨테이너 오케스트레이션 서비스
- Docker 컨테이너를 실행하기 위한 기능 제고
- 기존의 EC2 인스턴스를 사용하여 컨테이너 배포, 관리, 스케일링
- 다양한 AWS 서비스와 연동이 가능
EKS(Amazon Elastic Kubernetes Service)
- AWS에서 제공하는 관리형 쿠버네티스 서비스
- EKS는 쿠버네티스 기반으로 구축되어 있음
- 사용자가 직접 Kubernetes 마스터 노드를 관리할 필요 없이, 자동으로 프로비저닝하여 쿠버네티스 API를 통해 클러스터 생성 및 관리 가능
- Kubernetes의 모든 기능을 지원하며, Amazon VPC(Virtual Private Cloud)와 통합하여 사용 가능