컨테이너는 애플리케이션의 인프라 종속성을 배제해 개발환경과 운영환경의 간극을 줄이는 기술이다. 컨테이너라는 그릇에 애플리케이션 개발 당시 사용했던 운영체제(OS)부터 웹 애플리케이션 서버(WAS, Web Application Server)와 같은 모든 요소를 ‘라이브러리(Lib)’, ‘바이너리(Bin)’ 파일로 이미지화해 담는 기술이다.
예를 들어 애플리케이션이 우분투 OS 환경에서 개발됐고, 고객사가 윈도우 OS에서 애플리케이션을 운영한다면, 우분투 OS 환경에서 보여줬던 애플리케이션의 기능과 성능이 고객사가 운영하는 윈도우 OS에서 구동될 경우 성능에 문제가 나타날 수 있다. 이러한 문제를 애플리케이션의 인프라 종속을 배제하고 배포를 빠르게 만들어주는 컨테이너가 해결할 수 있다는 것이다.
그러나 운영해야 하는 컨테이너가 적게는 수천 개, 많게는 수십억 개에 달한다면 컨테이너 관리가 복잡하고 어려워진다는 문제가 나타난다. 수많은 컨테이너를 통합하고 가시성을 확보하면서 손쉽게 관리할 수 있는 솔루션이 필요한 이유다.
컨테이너 관리 툴은 크게 아파치 소프트웨어 재단에서 개발한 오픈소스 프로젝트인 ‘아파치 메소스(Apache Mesos)’, 도커에서 개발한 도커 엔진 그룹을 단일 가상 도커 엔진으로 묶어 클러스터링하는 ‘도커 스웜(Docker Swarm)’, 클라우드 네이티브 컴퓨팅 재단이 담당하고 있는 쿠버네티스(Kubernetes) 등으로 구분된다.
애플리케이션이 구동되는 컨테이너들을 조정, 조율, 통제(오케스트레이션, Orchestration)할 수 있는 오픈소스 프로젝트다. 오픈소스 프로젝트 쿠버네티스의 원래 명칭은 ‘바닐라(Vanilla) 쿠버네티스’였다. 사실 쿠버네티스는 구글 엔지니어들이 개발하고 설계한 플랫폼으로, 구글 사내에서 이용하던 컨테이너 클러스터 관리 도구인 ‘보그(Borg)’에서 아이디어를 얻어 만들어진 오픈소스다.
쿠버네티스는 고유의 기능인 컨테이너 오케스트레이션 기능을 통해 방대한 양의 컨테이너를 관리하는 것은 물론, 컨테이너의 생성과 소멸, 시작 및 중단 시점 제어, 스케줄링, 로드밸런싱, 클러스터링 등 컨테이너로 애플리케이션을 구성하는 과정까지 관리할 수 있다.
...
대표 클라우드 CSP(Cloud service provider) 3사
Amazon AWS
MS Azure
Google GCP
각 회사에서 제공하는 쿠버네티스 클라우드 서비스
AWS의 EKS(Elastic Kubernetes Service)
Azure의 AKS(Azure Kubernetes Service)
GCP의 GKE(Google Kubernetes Engine)
참고 문헌
'용어' 카테고리의 다른 글
URI, URL, URN (0) | 2024.09.24 |
---|---|
여러 컴퓨터 ‘클러스터링’ (0) | 2024.08.22 |
AOP (0) | 2022.01.31 |
JSP의 jstl (0) | 2022.01.31 |
JPA, Log4j , Thymeleaf (0) | 2022.01.28 |