[Infra] 컨테이너 오케스트레이션

1. 정의

 컨테이너 오케스트레이션은 컨테이너화 된 애플리케이션의 배포, 관리, 확장, 네트워킹, 모니터링을 자동화하는 프로세스이다. 도커나 도커 컴포즈 등을 이용해 애플리케이션을 컨테이너화 하는 과정은 단일 서비스나 소규모 애플리케이션에 적합하지만, 서비스의 규모가 커지거나 복잡성이 증가하면 관리에 많은 시간과 노력이 필요하다.

 컨테이너 오케스트레이션은 이러한 문제를 해결하고, 다양한 컨테이너를 효율적으로 관리하기 위한 자동화 도구를 제공한다.

 


 

2. 툴

 

다운로드.png

 

image.png

 

 컨테이너 오케스트레이션 툴은 대표적으로 다음과 같다.

 

 

(1) Kubernetes(K8s)


 가장 널리 사용되는 컨테이너 오케스트레이션 도구로, 컨테이너 클러스터 관리에 최적화되어 있다. 특히 확장성, 자동 복구, 롤아웃 및 롤백 지원과 같은 기능이 강점이다.

  • 주요 특징 : 대규모 분산 환경에서 안정적이고 유연한 클러스터 운영 가능
  • 기업 사용 사례 : 네이버, 카카오, 쿠팡 등 국내외 대형 IT 기업

 

(2) Docker Swarm

 

 Docker에서 제공하는 기본 오케스트레이션 도구로, 간단하고 직관적인 설정이 강점이다. Kubernetes에 비해 학습 곡선이 낮아 소규모 프로젝트에 적합하다.

  • 주요 특징 : Docker Compose와의 통합 지원 및 빠른 시작 가능

 

(3) AWS ECS(Amazon Elastic Container Service)


 Amazon Web Services에서 제공하는 컨테이너 관리 서비스로, AWS 환경에 최적화된 통합 솔루션입니다.

  • 주요 특징 : AWS의 다양한 서비스와의 호환성, 확장 및 로드 밸런싱 지원

 

(4) Apache Mesos


 대규모 데이터 센터와 클러스터 환경에 적합한 도구로, 컨테이너뿐 아니라 다른 유형의 워크로드(ex -빅데이터 처리) 관리에도 사용된다.

  • 주요 특징 : 유연성과 확장성이 뛰어나며, 복합 워크로드 관리 가능

 

 

 그 외의 툴은 위 그림에서 살펴볼 수 있다. 컨테이너 오케스트레이션 관련 여러 블로그를 둘러보며 작성자가 가장 많이 봐왔던 툴은 Kubernetes이다. 실제로 국내 기업의 Backend Developer, DevOps Engineer 채용 정보를 살펴보면 쉽게 발견할 수 있다.

 

스크린샷 2025-01-11 오후 5.01.06.png
출처 - 토스 채용

 

스크린샷 2025-01-11 오후 5.03.00.png
출처 - 네이버 채용

 


 

3. 컨테이너와 컨테이너 오케스트레이션이 필요한 이유

 

0_5A9Dx1iVOs11irMy.png

 

 컨테이너는 애플리케이션 소스 코드와 모든 환경에서 코드를 실행하는데 필요한 모든 운영체제 라이브러리 및 종속성을 결합하는 경량의 실행 가능한 애플리케이션 구성 요소이다.

 

 컨테이너는 가상머신보다 더 작고 리소스 효율적이며 휴대성이 뛰어나기 때문에 컨테이너, 특히 컨테이너화된 마이크로서비스 또는 서버리스 기능이 최신 클라우드 네이티브 애플리케이션의 실질적인 컴퓨팅 단위로 자리잡았다고 한다.

 

 적은 수의 컨테이너는 수동으로 배포하고 관리할 수 있을 만큼 쉽지만, 컨테이너화 된 애플리케이션의 수는 빠르게 증가하고 있으며, 특히 CI/CD 또는 DevOps 파이프라인의 일부로 이러한 애플리케이션을 대규모로 관리하는 것은 자동화 없이 불가능하다.

 

 이러한 이유로 컨테이너 및 컨테이너 오케스트레이션이 필요한 것이다.

 


 

4. 컨테이너 오케스트레이션 작동 방식

 컨테이너 오케스트레이션은 기본적으로 3단계 프로세스로 이루어진다.

 

(1) 구성 파일 작성

 YAML 또는 JSON 형식의 선언적 구성 파일을 작성하여, 애플리케이션의 상태와 요구 사항을 정의한다.

  • 애플리케이션을 구성하는 컨테이너 이미지 및 해당 이미지가 있는 위치(레지스트리)를 정의함
  • 컨테이너에 스토리지 및 기타 리소스를 프로비저닝 함
  • 컨테이너 간의 네트워크 연결을 정의하고 보호함
  • 버전 관리 지정(단계적 카나리 롤아웃용)

 

단계적 카나리 롤아웃이란?

  • 애플리케이션 업데이트 시 새로운 버전을 기존 사용자들에게 단계적으로 배포하는 방법을 말한다. 무중단 배포 방식 중 하나인 '카나리 배포(Canary Deployment)'와 밀접한 관련이 있다.

 

(2) 컨테이너 배포 및 관리

 작성된 구성 파일을 오케스트레이션 도구가 읽어들여, 정의된 상태에 맞게 애플리케이션을 배포한다.

 

  • 컨테이너 실행 및 연결
  • 리소스 동적 할당
  • 상태를 지속적으로 모니터링하며 문제 해결

 

 

(3) 모니터링 및 최적화

 실행 중인 컨테이너의 상태와 성능을 분석하고, 필요 시 자동으로 조정한다.

 


 

5. 컨테이너 오케스트레이션의 이점

(1) 자동화

 운영을 자동화함으로써 팀은 신속한 반복 주기로 개발 및 배포하고, 새로운 요소와 기능을 더 빠르게 출시할 수 있는 애자일 또는 DevOps 접근 방식을 지원한다.

 

(2) 인텔리전스

컨테이너 오케스트레이션에서의 인텔리전스(Intelligence)는 오케스트레이션 도구(예: Kubernetes, Docker Swarm 등)가 개발자가 선언적으로 정의한 구성 상태를 스스로 분석하고 조정하여 원하는 상태를 유지하는 능력을 의미한다. 오케스트레이션 툴의 인텔리전스는 컨테이너화에 내재된 많은 이점을 향상 또는 확장할 수 있다. 선언적 구성을 기반으로 하는 자동화된 호스트 선택 및 리소스 할당은 컴퓨팅 리소스의 효율적인 사용을 극대화하고, 자동화된 상태 모니터링 및 컨테이너 재배치는 가용성을 극대화 한다.

 

참고자료

 

https://www.ibm.com/kr-ko/topics/container-orchestration

 

컨테이너 오케스트레이션이란 무엇인가요? | IBM

컨테이너 오케스트레이션은 컨테이너화된 애플리케이션의 배포 및 관리를 자동화하고 간소화합니다.

www.ibm.com

 

https://blog.a-cloud.co.kr/2020/01/10/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EC%99%80-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%98%A4%EC%BC%80%EC%8A%A4%ED%8A%B8%EB%A0%88%EC%9D%B4%EC%85%98/

 

컨테이너와 컨테이너 오케스트레이션 - Acloud Blog!

컨테이너화란 무엇인가? 컨테이너화는 커널 하나에 격리된 여러 개의 사용자 공간 인스턴스가 포함될 수 있도록 애플리케이션 수준에서 이루어지는 가상화의 일종입니다. 이런 인스턴스를 컨

blog.a-cloud.co.kr