2017.06.29

FAQ로 정리한 컨테이너 ABC

Paul Rubens | CIO
도커(Docker)는 2013년 혜성처럼 등장한 이래 계속해서 IT계에 기대감을 불러일으켰다. 도커가 제공하는 응용프로그램 컨테이너 기술은, 몇 년 전 가상화 기술이 그랬던 것처럼, IT작업 수행 방식의 변화를 약속하고 있다. 다음은 이 기술과 관련된 가장 흔한 질문 13가지와 그에 대한 답이다.



컨테이너란 무엇이며 왜 필요한가?
컨테이너는 한 컴퓨팅 환경에서 다른 환경으로 이동 시에 소프트웨어를 안정적으로 실행할 수 있도록 돕는 솔루션이다. 개발자의 노트북에서 테스트 환경으로 이동이 될 수도 있고, 준비 환경에서 생산 환경으로의 이동이 될 수도 있다. 데이터센터 내 물리적 컴퓨터에서 프라이빗 또는 퍼블릭 클라우드 내 가상머신으로의 이동이 될 수도 있다.

도커를 만든 솔로몬 하익스(Solomon Hykes)에 따르면 지원 소프트웨어 환경이 동일하지 않을 때 문제가 발생한다. “테스트 환경에서는 파이썬(Python) 2.7을 사용하다가 생산 환경에서는 파이썬 3에서 실행하면 희한한 일이 발생한다. SSL라이브러리 중 특정 버전의 행동에 의존하는데 다른 버전이 설치되기도 한다. 테스트 환경은 데비안(Debian)인데 생산 환경은 레드햇(Red Hat)이라면 온갖 종류의 희한한 일이 발생한다”라고 그는 말했다.

상이한 소프트웨어만이 문제의 원인은 아니다. 하익스는 “소프트웨어 실행의 기반이 되는 망 구성 방식이나 보안 정책, 스토리지가 상이할 수도 있다”라고 설명했다.

컨테이너는 이 문제를 어떻게 해결하는가?
간단히 말하면, 컨테이너는 온전한 런타임 환경으로 구성되어 있다. 즉, 응용프로그램과 그 종속 요소, 라이브러리 및 기타 바이너리, 응용프로그램 실행에 필요한 구성 파일 일체가 패키지 하나에 다 들어 있다. 응용프로그램 플랫폼과 그 종속 요소를 컨테이너화하면 OS 배포판과 기본 인프라의 차이점은 무시된다.

컨테이너와 가상화의 차이점은 무엇인가?
가상화 기술에서는 통째로 이동하는 패키지가 가상머신이다. 가상머신에는 응용프로그램뿐만 아니라 운영체제 전체가 들어 있다. 3대의 가상머신을 구동하는 물리적 서버에는 하나의 하이퍼바이저(hypervisor) 위에 별도의 운영체제 3개가 구동된다.

반면, 도커를 통해 3개의 컨테이너화된 애플리케이션을 실행하는 서버는 하나의 운영체제로 구동되며 컨테이너 사이에 운영체제 커널이 공유한다. 운영체제 중 공유된 부분은 읽기 전용이며, 쓰기를 위해서는 각 컨테이너에는 컨테이너 접근 방식인 자체 마운트(mount)가 있다. 따라서 컨테이너는 가상머신에 비해 훨씬 더 가볍고 사용 리소스 또한 훨씬 적다.

컨테이너의 다른 장점은 어떤 것이 있는가?
컨테이너는 크기가 몇 십 메가바이트에 불과한 반면, 온전한 자체 운영체제를 갖춘 가상머신은 크기가 몇 기가바이트에 달한다. 따라서 가상머신보다 훨씬 많은 컨테이너를 서버 하나에 호스트할 수 있다.

또 다른 주요 장점은 가상머신의 경우 운영체제를 부팅하고 호스트 중인 응용프로그램 실행하기까지 몇 분이 소요되는 반면, 컨테이너화된 응용프로그램은 거의 즉시 시작된다는 점이다.

따라서 컨테이너는 필요할 순간 ‘적시에’ 인스턴스화되고 더 이상 필요가 없어지면 사라짐으로써 호스트의 리소스를 풀어줄 수 있다.

세 번째 장점은 컨테이너화를 통해 모듈성이 커진다는 점이다. 복잡한 응용프로그램 전체를 하나의 컨테이너 내부에서 실행하는 대신, 데이터베이스, 응용프로그램 프론트 엔드(front end) 등의 모듈로 응용프로그램을 쪼갤 수 있다.

이것이 이른바 마이크로서비스(microservices) 접근방식이다. 이런 식으로 구축한 애플리케이션은 관리하기 더 쉽다. 각 모듈은 비교적 간단하고 변경사항은 모듈에 적용할 수 있으므로 애플리케이션 전체를 재구축할 필요가 없기 때문이다. 컨테이너는 매우 가볍기 때문에 개별 모듈(또는 마이크로서비스)은 필요할 때에만 인스턴스화할 수 있고 거의 즉시 사용 가능하다.

-> 이제는 '마이크로서비스'가 대세··· 이점은? 전제조건은?

도커와 컨테이너의 차이점은 무엇인가?
도커는 컨테이너 기술의 대명사로 자리잡았다. 컨테이너 기술 대중화에 가장 성공적으로 공헌했기 때문이다. 그러나 컨테이너 기술이 새로운 것은 아니다. LXC 형태로 리눅스에 구축되기 시작한 지 10년이 넘었다. 이와 유사한 운영체제 수준의 가상화 역시 프리BSD 제일(FreeBSD jails), AIX 워크로드 파티션(Workload Partitions), 솔라리스 컨테이너(Solaris Containers)에 의해 제공된 바 있다.

표준 컨테이너 형식이 있는가?
2015년, 코어OS(CoreOS)라는 업체가 도커의 컨테이너 사양과는 다른 자체적인 앱 컨테이너 이미지(ACI: App Container Image) 사양을 만들었다. 당시 새롭게 인기를 얻은 컨테이너 움직임이 라이벌 리눅스 컨테이너 형식으로 인해 와해될 위험이 있었다.

그러나 같은 해 후반기에 오픈 컨테이너 프로젝트(OCP)라는 계획이 발표되었고 나중에 오픈 컨테이너 계획(OCI)이라는 이름으로 바뀌었다. 리눅스 재단의 후원으로 운영되는 OCI의 목적은 컨테이너 형식의 업계 표준과 모든 플랫폼에 대한 컨테이너 런타임 소프트웨어를 개발하는 것이다. OCP 표준의 시작점은 도커 기술이었다. 도커는 프로젝트가 시작될 수 있도록 코드베이스의 약 5%를 기부했다.

프로젝트의 후원업체로는 도커, 코어OS는 물론 AWS, 구글, IBM, HP, 마이크로소프트, VM웨어, 레드 햇, 오라클, 트위터, HP 등이 있다.

이들 업체들이 오픈 컨테이너 계획(OCI)에 참여하는 이유는 무엇인가?
OCI의 목적은 컨테이너 기술의 기본 구성 요소(예: 컨테이너 형식)를 표준화해서 모든 사람들이 활용할 수 있게 하는 것이다.

즉, 업체들은 경쟁 컨테이너 기술 개발에 자원을 소비하는 대신, 기업 또는 클라우드 환경에서 표준화된 컨테이너를 사용하는 데 필요한 추가 소프트웨어 개발에 집중할 수 있다. 필요한 소프트웨어의 종류에는 컨테이너 편성 및 관리 시스템과 컨테이너 보안 시스템이 있다.

무료 오픈소스 컨테이너 관리 시스템이 있는가?
그렇다. 가장 유명하고 널리 사용되는 무료 오픈 소스 컨테이너 관리 시스템은 아마도 쿠버네티스(Kubernetes)일 것이다. 구글에서 시작된 소프트웨어 프로젝트인 쿠버네티스는 컨테이너화된 응용프로그램을 배치, 유지 관리, 확장할 수 있는 방법을 제공한다.

현재 어떤 상용 컨테이너 관리 솔루션이 있는가?
도커 엔터프라이즈 에디션(Docker Enterprise Edition)이 아마도 가장 유명한 상용 컨테이너 관리 솔루션일 것이다. 기업용 리눅스 또는 윈도우 운영체제와 클라우드 제공자에 실행되는 응용프로그램을 위해 테스트와 인증을 거친 통합 플랫폼을 제공한다.

그러나 다른 것도 많이 있다. 그 중 주목할만한 몇 가지에는 쿠버네티스를 중심으로 구축한 독자 개발 소프트웨어가 있다. 이런 종류의 관리 소프트웨어 제품으로는 다음과 같은 것이 있다.

• 코어OS의 텍토닉(Tectonic)은 구글 스타일 인프라 구축에 필요한 오픈 소스 구성요소 일체가 미리 들어가 있으며, 이와 더불어 관리 콘솔, 기업 SSO 통합, 기업용 컨테이너 레지스트리인 키(Quay)와 같은 상용 기능이 추가된다.

• 레드햇의 오픈 시프트 컨테이너 플랫폼(Open Shift Container Platform)은 사내 개인 플랫폼으로 서비스 제품이다. 도커로 구동되는 핵심 응용프로그램 컨테이너를 중심으로 구축되었다. 쿠버네티스에서 제공하는 편성 및 관리 기능이 있으며 레드햇 엔터프라이즈 리눅스를 기반으로 한다.

• 랜처 랩(Rancher Labs)의 랜처는 어떤 인프라의 생산 환경에서도 컨테이너의 배치 및 관리를 쉽게 해 주는 상용 오픈소스 솔루션이다.

CIO의 프리미엄 콘텐츠입니다. 이 기사를 더 읽으시려면 개인정보 등록이 필요합니다. 이미 등록하신 분은 '본인확인'을 해주십시오.



2017.06.29

FAQ로 정리한 컨테이너 ABC

Paul Rubens | CIO
도커(Docker)는 2013년 혜성처럼 등장한 이래 계속해서 IT계에 기대감을 불러일으켰다. 도커가 제공하는 응용프로그램 컨테이너 기술은, 몇 년 전 가상화 기술이 그랬던 것처럼, IT작업 수행 방식의 변화를 약속하고 있다. 다음은 이 기술과 관련된 가장 흔한 질문 13가지와 그에 대한 답이다.



컨테이너란 무엇이며 왜 필요한가?
컨테이너는 한 컴퓨팅 환경에서 다른 환경으로 이동 시에 소프트웨어를 안정적으로 실행할 수 있도록 돕는 솔루션이다. 개발자의 노트북에서 테스트 환경으로 이동이 될 수도 있고, 준비 환경에서 생산 환경으로의 이동이 될 수도 있다. 데이터센터 내 물리적 컴퓨터에서 프라이빗 또는 퍼블릭 클라우드 내 가상머신으로의 이동이 될 수도 있다.

도커를 만든 솔로몬 하익스(Solomon Hykes)에 따르면 지원 소프트웨어 환경이 동일하지 않을 때 문제가 발생한다. “테스트 환경에서는 파이썬(Python) 2.7을 사용하다가 생산 환경에서는 파이썬 3에서 실행하면 희한한 일이 발생한다. SSL라이브러리 중 특정 버전의 행동에 의존하는데 다른 버전이 설치되기도 한다. 테스트 환경은 데비안(Debian)인데 생산 환경은 레드햇(Red Hat)이라면 온갖 종류의 희한한 일이 발생한다”라고 그는 말했다.

상이한 소프트웨어만이 문제의 원인은 아니다. 하익스는 “소프트웨어 실행의 기반이 되는 망 구성 방식이나 보안 정책, 스토리지가 상이할 수도 있다”라고 설명했다.

컨테이너는 이 문제를 어떻게 해결하는가?
간단히 말하면, 컨테이너는 온전한 런타임 환경으로 구성되어 있다. 즉, 응용프로그램과 그 종속 요소, 라이브러리 및 기타 바이너리, 응용프로그램 실행에 필요한 구성 파일 일체가 패키지 하나에 다 들어 있다. 응용프로그램 플랫폼과 그 종속 요소를 컨테이너화하면 OS 배포판과 기본 인프라의 차이점은 무시된다.

컨테이너와 가상화의 차이점은 무엇인가?
가상화 기술에서는 통째로 이동하는 패키지가 가상머신이다. 가상머신에는 응용프로그램뿐만 아니라 운영체제 전체가 들어 있다. 3대의 가상머신을 구동하는 물리적 서버에는 하나의 하이퍼바이저(hypervisor) 위에 별도의 운영체제 3개가 구동된다.

반면, 도커를 통해 3개의 컨테이너화된 애플리케이션을 실행하는 서버는 하나의 운영체제로 구동되며 컨테이너 사이에 운영체제 커널이 공유한다. 운영체제 중 공유된 부분은 읽기 전용이며, 쓰기를 위해서는 각 컨테이너에는 컨테이너 접근 방식인 자체 마운트(mount)가 있다. 따라서 컨테이너는 가상머신에 비해 훨씬 더 가볍고 사용 리소스 또한 훨씬 적다.

컨테이너의 다른 장점은 어떤 것이 있는가?
컨테이너는 크기가 몇 십 메가바이트에 불과한 반면, 온전한 자체 운영체제를 갖춘 가상머신은 크기가 몇 기가바이트에 달한다. 따라서 가상머신보다 훨씬 많은 컨테이너를 서버 하나에 호스트할 수 있다.

또 다른 주요 장점은 가상머신의 경우 운영체제를 부팅하고 호스트 중인 응용프로그램 실행하기까지 몇 분이 소요되는 반면, 컨테이너화된 응용프로그램은 거의 즉시 시작된다는 점이다.

따라서 컨테이너는 필요할 순간 ‘적시에’ 인스턴스화되고 더 이상 필요가 없어지면 사라짐으로써 호스트의 리소스를 풀어줄 수 있다.

세 번째 장점은 컨테이너화를 통해 모듈성이 커진다는 점이다. 복잡한 응용프로그램 전체를 하나의 컨테이너 내부에서 실행하는 대신, 데이터베이스, 응용프로그램 프론트 엔드(front end) 등의 모듈로 응용프로그램을 쪼갤 수 있다.

이것이 이른바 마이크로서비스(microservices) 접근방식이다. 이런 식으로 구축한 애플리케이션은 관리하기 더 쉽다. 각 모듈은 비교적 간단하고 변경사항은 모듈에 적용할 수 있으므로 애플리케이션 전체를 재구축할 필요가 없기 때문이다. 컨테이너는 매우 가볍기 때문에 개별 모듈(또는 마이크로서비스)은 필요할 때에만 인스턴스화할 수 있고 거의 즉시 사용 가능하다.

-> 이제는 '마이크로서비스'가 대세··· 이점은? 전제조건은?

도커와 컨테이너의 차이점은 무엇인가?
도커는 컨테이너 기술의 대명사로 자리잡았다. 컨테이너 기술 대중화에 가장 성공적으로 공헌했기 때문이다. 그러나 컨테이너 기술이 새로운 것은 아니다. LXC 형태로 리눅스에 구축되기 시작한 지 10년이 넘었다. 이와 유사한 운영체제 수준의 가상화 역시 프리BSD 제일(FreeBSD jails), AIX 워크로드 파티션(Workload Partitions), 솔라리스 컨테이너(Solaris Containers)에 의해 제공된 바 있다.

표준 컨테이너 형식이 있는가?
2015년, 코어OS(CoreOS)라는 업체가 도커의 컨테이너 사양과는 다른 자체적인 앱 컨테이너 이미지(ACI: App Container Image) 사양을 만들었다. 당시 새롭게 인기를 얻은 컨테이너 움직임이 라이벌 리눅스 컨테이너 형식으로 인해 와해될 위험이 있었다.

그러나 같은 해 후반기에 오픈 컨테이너 프로젝트(OCP)라는 계획이 발표되었고 나중에 오픈 컨테이너 계획(OCI)이라는 이름으로 바뀌었다. 리눅스 재단의 후원으로 운영되는 OCI의 목적은 컨테이너 형식의 업계 표준과 모든 플랫폼에 대한 컨테이너 런타임 소프트웨어를 개발하는 것이다. OCP 표준의 시작점은 도커 기술이었다. 도커는 프로젝트가 시작될 수 있도록 코드베이스의 약 5%를 기부했다.

프로젝트의 후원업체로는 도커, 코어OS는 물론 AWS, 구글, IBM, HP, 마이크로소프트, VM웨어, 레드 햇, 오라클, 트위터, HP 등이 있다.

이들 업체들이 오픈 컨테이너 계획(OCI)에 참여하는 이유는 무엇인가?
OCI의 목적은 컨테이너 기술의 기본 구성 요소(예: 컨테이너 형식)를 표준화해서 모든 사람들이 활용할 수 있게 하는 것이다.

즉, 업체들은 경쟁 컨테이너 기술 개발에 자원을 소비하는 대신, 기업 또는 클라우드 환경에서 표준화된 컨테이너를 사용하는 데 필요한 추가 소프트웨어 개발에 집중할 수 있다. 필요한 소프트웨어의 종류에는 컨테이너 편성 및 관리 시스템과 컨테이너 보안 시스템이 있다.

무료 오픈소스 컨테이너 관리 시스템이 있는가?
그렇다. 가장 유명하고 널리 사용되는 무료 오픈 소스 컨테이너 관리 시스템은 아마도 쿠버네티스(Kubernetes)일 것이다. 구글에서 시작된 소프트웨어 프로젝트인 쿠버네티스는 컨테이너화된 응용프로그램을 배치, 유지 관리, 확장할 수 있는 방법을 제공한다.

현재 어떤 상용 컨테이너 관리 솔루션이 있는가?
도커 엔터프라이즈 에디션(Docker Enterprise Edition)이 아마도 가장 유명한 상용 컨테이너 관리 솔루션일 것이다. 기업용 리눅스 또는 윈도우 운영체제와 클라우드 제공자에 실행되는 응용프로그램을 위해 테스트와 인증을 거친 통합 플랫폼을 제공한다.

그러나 다른 것도 많이 있다. 그 중 주목할만한 몇 가지에는 쿠버네티스를 중심으로 구축한 독자 개발 소프트웨어가 있다. 이런 종류의 관리 소프트웨어 제품으로는 다음과 같은 것이 있다.

• 코어OS의 텍토닉(Tectonic)은 구글 스타일 인프라 구축에 필요한 오픈 소스 구성요소 일체가 미리 들어가 있으며, 이와 더불어 관리 콘솔, 기업 SSO 통합, 기업용 컨테이너 레지스트리인 키(Quay)와 같은 상용 기능이 추가된다.

• 레드햇의 오픈 시프트 컨테이너 플랫폼(Open Shift Container Platform)은 사내 개인 플랫폼으로 서비스 제품이다. 도커로 구동되는 핵심 응용프로그램 컨테이너를 중심으로 구축되었다. 쿠버네티스에서 제공하는 편성 및 관리 기능이 있으며 레드햇 엔터프라이즈 리눅스를 기반으로 한다.

• 랜처 랩(Rancher Labs)의 랜처는 어떤 인프라의 생산 환경에서도 컨테이너의 배치 및 관리를 쉽게 해 주는 상용 오픈소스 솔루션이다.

CIO의 프리미엄 콘텐츠입니다. 이 기사를 더 읽으시려면 개인정보 등록이 필요합니다. 이미 등록하신 분은 '본인확인'을 해주십시오.

X