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

게시일 2024년 10월 22일
연한 녹색 배경 위에 부드러운 그림자를 드리우며 대각선으로 배치된 여러 개의 청록색 로켓
By Stephanie Susnjara and Ian Smalley

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

컨테이너 오케스트레이션은 컨테이너화된 애플리케이션의 프로비저닝, 배포, 확장 및 수명 주기를 자동으로 프로비저닝, 배포, 확장 및 관리합니다. 개발자는 컨테이너 오케스트레이션을 사용하여 민첩한 또는 DevOps 워크플로를 간소화하여 최신 하이브리드 멀티클라우드 인프라를 지원하는 데 필요한 유연성과 속도를 제공합니다.

오늘날 Kubernetes는 가장 널리 사용되는 컨테이너 오케스트레이션 플랫폼이며, Amazon Web Services(AWS), Google Cloud Platform, IBM® Cloud, Microsoft Azure를 비롯한 대부분의 주요 클라우드 서비스 공급업체에서 관리형 Kubernetes 서비스를 제공합니다. 그 밖의 컨테이너 오케스트레이션 툴로는 Docker Swarm과 Apache Mesos가 있습니다.

컨테이너에 오케스트레이션이 필요한 이유는 무엇인가요?

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

컨테이너를 생성하는 기술은 수십 년 전부터 존재했지만, 2008년 Linux가 커널에 컨테이너 기능을 포함하면서 널리 사용되기 시작했습니다. 이후 2013년에 Docker 오픈 소스 컨테이너화 플랫폼이 등장하면서 그 중요성은 더욱 커졌습니다. (Docker는 매우 널리 사용되기 때문에 'Docker 컨테이너'와 '컨테이너'라는 용어가 같은 의미로 사용되는 경우가 많습니다.) 오늘날 컨테이너는 Windows를 비롯해 Linux 외의 다양한 운영 체제와도 호환됩니다.

가상 머신(VM)보다 크기가 작고 리소스 효율성과 이식성이 뛰어나기 때문에 컨테이너, 특히 컨테이너화된 마이크로서비스서버리스 함수는 현대적인 클라우드 네이티브 애플리케이션의 사실상 표준 컴퓨팅 단위가 되었습니다.

 

적은 수의 컨테이너는 수동으로 배포하고 관리할 수 있을 만큼 쉽습니다. 그러나 컨테이너화된 애플리케이션과 이를 대규모로 관리해야 하는 필요성은 대부분의 대규모 조직에서 보편화되었습니다.

예를 들어 컨테이너화된 애플리케이션과 서비스를 배포하고 실행하는 운영 작업을 자동화하는 컨테이너 오케스트레이션이 없다면 지속적 통합/지속적 전달(CI/CD) 또는 DevOps 파이프라인을 구축할 수 없습니다.

IBM 연구에 따르면, 설문에 참여한 개발자의 70%가 컨테이너 오케스트레이션 솔루션을 사용하고 있으며, 그중 70%는 조직에서 완전관리형(클라우드 관리형) 컨테이너 오케스트레이션 서비스를 사용한다고 응답했습니다.

컨테이너 오케스트레이션은 어떻게 작동하나요?

컨테이너 오케스트레이션 아키텍처는 여러 시스템과 환경에 걸쳐 컨테이너 클러스터를 실행하는 방식으로 구성됩니다. 각 클러스터는 일반적으로 여러 노드(서버 인스턴스라고도 함)로 구성됩니다. 워커 노드는 Docker와 같은 컨테이너 런타임을 사용하여 컨테이너를 실행합니다. 컨트롤 플레인 노드 그룹은 클러스터의 오케스트레이터 역할을 수행합니다. 사용자는 애플리케이션 프로그래밍 인터페이스(API)와 그래픽 사용자 인터페이스(GUI)를 제공하는 툴을 사용하여 컨테이너화된 워크로드를 관리하고 모니터링할 수 있습니다.

플랫폼과 도구에 따라 방법론과 기능이 다르지만, 컨테이너 오케스트레이션은 기본적으로 3단계 프로세스(또는 반복적인 애자일 또는 DevOps 파이프라인의 일부인 경우 사이클)입니다.

  1. 프로비저닝
  2. 배포
  3. 라이프사이클 관리

1. 프로비저닝

대부분의 컨테이너 오케스트레이션 툴은 선언적 구성 모델을 지원합니다. 개발자는 원하는 상태를 정의하는 구성 파일(툴에 따라 YAML 또는 JSON 형식)을 작성합니다. 파일을 실행하는 오케스트레이션 툴은 자체 인텔리전스를 사용하여 해당 상태를 달성합니다. 일반적으로 구성 파일은 다음과 같이 작용합니다.

  • 애플리케이션을 구성하는 컨테이너 이미지가 무엇인지, 그리고 해당 이미지가 어디에 저장되어 있는지(어떤 Container Registry에 있는지)를 정의합니다.
  • 컨테이너에 스토리지 및 기타 리소스를 프로비저닝합니다.
  • 컨테이너 간 네트워크 연결을 정의하고 보호합니다.
  • 버전 관리를 지정합니다(단계적 배포 또는 카나리아 배포를 위한 목적).

2. 배포

오케스트레이션 툴은 컨테이너(및 복원력을 위한 컨테이너 복제본)의 배포를 호스트에 스케줄링합니다. 오케스트레이션 툴은 중앙 처리 장치(CPU) 용량, 메모리 또는 구성 파일에 지정된 기타 요구 사항이나 제약 조건을 기준으로 가장 적합한 호스트를 선택합니다.

3. 라이프사이클 관리

컨테이너가 배포되면 컨테이너 정의 파일(일반적으로 Dockerfile)을 기반으로 오케스트레이션 도구가 컨테이너화된 애플리케이션의 라이프사이클을 관리합니다.

라이프사이클 관리 작업에는 다음이 포함됩니다.

  • 컨테이너 간의 확장성(증설 및 축소), 로드 밸런싱, 리소스 할당을 관리합니다.
  • 시스템 장애나 리소스 부족이 발생할 경우, 컨테이너를 다른 호스트로 이전하여 가용성과 성능을 보장하도록 지원합니다.
  • 애플리케이션의 건강과 성능을 모니터링하는 로그 데이터 및 기타 원격 측정 데이터를 수집하고 저장합니다.

이 동영상을 통해 컨테이너 오케스트레이션의 작동 방식을 자세히 살펴보세요.

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

컨테이너 오케스트레이션의 주요 이점은 다음과 같습니다.

  • 자동화
  • 복원력
  • 리소스 사용량 및 성능 향상
  • 비용 효율성
  • 속도 및 민첩성
  • 보안 향상
  • 생산성 향상

자동화

컨테이너 오케스트레이션의 가장 큰 장점은 자동화로, 대규모 컨테이너화된 애플리케이션 환경을 관리하는 데 필요한 수작업과 복잡성을 크게 줄여 줍니다.

복원력

컨테이너 오케스트레이션 솔루션은 컨테이너가 실패할 경우 컨테이너를 다시 시작하거나 확장하여 복원력을 향상시키며, 이로써 가용성을 보장하고 애플리케이션 가동 시간을 늘릴 수 있습니다.

리소스 사용량 및 성능 향상

자동화된 호스트 선택 및 리소스 할당은 컴퓨팅 리소스의 효율적인 사용을 극대화할 수 있습니다. 예를 들어 컨테이너 오케스트레이션 솔루션은 개별 컨테이너에 따라 CPU 메모리와 스토리지를 조정하여 오버프로비저닝을 방지하고 전체적인 성능을 향상시킬 수 있습니다.

비용 효율성

컨테이너 오케스트레이션은 수작업으로 개입할 필요를 없애 운영 비용을 절감합니다. 또한 컨테이너는 VM보다 필요한 리소스가 적기 때문에 IT 인프라 요구 사항과 운영 오버헤드 비용을 줄일 수 있습니다.

속도 및 민첩성

컨테이너 오케스트레이션 툴은 애플리케이션 개발 및 배포 속도를 높이는 데 도움이 되며, 최신 클라우드 네이티브 프로세스에 대한 중요한 지원을 제공합니다.

보안 향상

컨테이너는 애플리케이션을 호스트 시스템과 서로 격리하여 공격 표면을 줄임으로써 보안을 강화합니다. 많은 플랫폼에는 취약점을 감지하고 이미지 레지스트리를 보호하기 위한 자동 스캔이 포함되어 있어 전반적인 보호를 강화합니다.

생산성 향상

컨테이너 오케스트레이션은 운영을 자동화하여 민첩한 또는 DevOps 접근 방식을 지원합니다. 이를 통해 팀은 빠르고 반복적인 주기로 개발 및 배포하고 새로운 능력과 기능을 더 빠르게 출시할 수 있습니다.

IBM DevOps

DevOps란 무엇인가요?

Andrea Crawford는 DevOps의 정의, DevOps의 가치, 그리고 DevOps 사례와 툴이 아이디어 구상부터 프로덕션에 이르기까지 전체 소프트웨어 Delivery Pipeline을 통해 앱을 이동하는 데 어떻게 도움이 되는지 설명합니다. 최고의 IBM 사고 리더가 이끄는 이 커리큘럼은 비즈니스 리더가 성장을 주도할 수 있는 AI 투자의 우선순위를 정하는 데 필요한 지식을 얻을 수 있도록 설계되었습니다.

Kubernetes 사용의 이점

Google이 개발하여 2014년에 공개한 Kubernetes는 오픈 소스 소프트웨어 역사상 가장 빠르게 성장한 프로젝트 중 하나가 되었습니다. 현재 Kubernetes는 Cloud Native Computing Foundation(CNCF)에서 관리하고 있습니다. Kubernetes가 2016년에 CNCF에 합류한 이후 기여자 수는 731명에서 8,012명으로 증가했습니다.1

Kubernetes는 다른 컨테이너 생태계 툴과 함께 조직이 생산성이 뛰어난 서비스형 플랫폼(PaaS)을 제공할 수 있도록 지원합니다.이 클라우드 컴퓨팅 모델은 클라우드 네이티브 애플리케이션 개발과 관련된 다양한 인프라 및 운영 작업과 과제를 해결하여 개발팀이 코딩과 혁신에만 집중할 수 있도록 지원합니다.

 

다른 오케스트레이션 솔루션과 비교한 Kubernetes의 장점은 여러 영역에서 더욱 포괄적이고 고도화된 기능을 제공한다는 점입니다.

  • 컨테이너 배포
  • 롤아웃
  • 서비스 검색
  • 스토리지 프로비저닝
  • 로드 밸런싱 및 확장성
  • 고가용성을 위한 자가 치료
  • 여러 클라우드 공급업체에 대한 지원 및 이동성
  • 오픈 소스 에코시스템

컨테이너 배포

Kubernetes는 지정된 수의 컨테이너를 지정된 호스트에 배포하고 원하는 상태로 계속 실행합니다.

롤아웃

롤아웃은 배포 상태를 변경하는 것입니다. 개발자는 Kubernetes를 사용하여 롤아웃을 시작, 일시 중지, 재개 또는 롤백할 수 있습니다.

서비스 검색

Kubernetes는 서비스를 검색하기 위해 Domain Name System(DNS) 이름이나 IP 주소를 사용하여 컨테이너를 인터넷 또는 다른 컨테이너에서 자동으로 접근할 수 있도록 공개할 수 있습니다.

스토리지 프로비저닝

개발자는 필요에 따라 자신의 컨테이너에 대한 영구 로컬 또는 클라우드 스토리지를 탑재하도록 Kubernetes를 설정할 수 있습니다.

로드 밸런싱 및 확장성

컨테이너로 유입되는 트래픽이 급증하면 Kubernetes는 로드 밸런싱과 자동 확장을 사용하여 네트워크 전반에 트래픽을 분산하고 안정성과 성능을 유지하도록 지원합니다. 또한 이 기능을 통해 개발자는 로드 밸런서를 직접 구성하는 작업을 줄일 수 있습니다.

고가용성을 위한 자가 치료

컨테이너에 장애가 발생하면 Kubernetes는 컨테이너를 자동으로 재시작하거나 교체할 수 있습니다. 또한, 조직의 상태 점검 요건을 충족하지 않는 컨테이너를 종료시킬 수도 있습니다.

여러 클라우드 공급업체의 지원 및 이식성

Kubernetes는 모든 주요 클라우드 공급업체에서 폭넓게 지원됩니다. 이 기능은 애플리케이션을 하이브리드 클라우드(퍼블릭 클라우드, 프라이빗 클라우드, 온프레미스 인프라를 결합한 환경) 또는 멀티클라우드(둘 이상의 클라우드 공급업체가 제공하는 클라우드 서비스를 사용하는 환경)에 배포하는 조직에 필수적입니다.

오픈 소스 에코시스템

Kubernetes는 Kubernetes API를 통해 기능을 확장할 수 있도록 사용성과 네트워킹을 위한 다양한 툴도 지속적으로 제공하고 있습니다. 여기에는 컨테이너를 서버리스 워크로드로 실행할 수 있도록 지원하는 Knative와 오픈 소스 서비스 메시인 Istio가 포함됩니다.

서비스형 컨테이너(CaaS)란 무엇인가요?

서비스형 컨테이너(CaaS)는 개발자가 컨테이너화된 애플리케이션을 관리하고 배포할 수 있도록 지원하는 관리형 서비스로, 기업이 이식성이 뛰어나고 손쉽게 확장할 수 있는 클라우드 솔루션을 이용할 수 있도록 합니다. 2022년 전 세계 CaaS 시장 규모는 약 20억 달러로 평가되었습니다.2 연구기관들은 이 시장이 해당 기간 동안 연평균 성장률(CAGR) 30.2%를 기록하며 2027년에는 70억 달러를 넘어설 것으로 전망하고 있습니다.3

CaaS 제공업체는 컨테이너 런타임, 오케스트레이션 레이어, 영구 스토리지 관리, 다른 서비스와의 통합 등 다양한 이점을 기업에 제공합니다. 많은 주요 퍼블릭 제공업체가 컨테이너 오케스트레이션 관리형 서비스를 제공하며, 이 중 상당수가 기반 기술로 Kubernetes를 사용합니다.

상위 CaaS 제공업체는 다음과 같습니다.

  • AWS의 Amazon Elastic Container Service(Amazon ECS)
  • Google Cloud의 Google Kubernetes Engine(GKE)
  • IBM Cloud Kubernetes Service
  • Microsoft Azure Container Instances(ACI)
  • Red Hat OpenShift

컨테이너 오케스트레이션 및 AI

Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼은 실시간 상태 점검과 리소스 계획을 포함한 예측 유지 관리 워크플로와 같이 인공 지능(AI)머신 러닝(ML) 워크플로의 일부를 자동화할 수 있습니다.

머신 러닝은 텍스트 분류, 감정 분석, 기계 번역과 같은 고도화된 자연어 처리(NLP)를 수행하기 위해 대규모 언어 모델(LLM)을 활용합니다. 컨테이너 오케스트레이션은 대규모 언어 모델(LLM)의 배포를 가속화하여 자연어 처리(NLP) 프로세스의 자동화를 지원합니다. 또한 조직은 생성형 AI 모델을 실행하고 확장하기 위해 컨테이너 오케스트레이션을 사용하며, 이를 통해 높은 가용성과 장애 허용성을 확보할 수 있습니다.

작성자

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

관련 솔루션
IBM Instana Observability

AI와 자동화를 활용하여 애플리케이션 스택 전반의 문제를 선제적으로 해결하세요.

IBM Instana Observability 살펴보기
DevOps 솔루션

DevOps 소프트웨어와 도구를 사용해 다양한 장치와 환경에서 클라우드 네이티브 앱을 구축하고, 배포하고, 관리하세요.

DevOps 솔루션 살펴보기
클라우드 컨설팅 서비스

IBM 클라우드 컨설팅 서비스로 모든 플랫폼에서 애플리케이션을 지속적으로 현대화하여 기업의 민첩성과 성장을 가속화하세요.

클라우드 컨설팅 서비스 살펴보기
다음 단계 안내

IBM Instana®를 통한 사전 예방 문제 감지부터 스택 전반의 실시간 인사이트에 이르기까지 클라우드 네이티브 애플리케이션을 안정적으로 실행할 수 있습니다.

  1. IBM Instana 살펴보기
  2. DevOps 솔루션 살펴보기
각주

1 Kubernetes Project Journey Report, Cloud Native Computing Foundation, 2023년 6월 8일.

2 Containers as a Service Market worth USD 5.6 billion by 2027 - Exclusive Study by MarketsandMarkets, Cision, 2022년 11월 30일.

3 Container as a Service Global Market Report 2023, Yahoo Finance, 2023년 6월 1일.