연관토픽
기출문제
회차 | 문제 |
응용119-2 | 6. 클라우드 시스템 구축을 위한 핵심 기술인 가상화 관련 기술 중 가상머신과 컨테이너를 비교하여 설명. |
개념 : PaaS의 핵심기술
- 하나의 호스트 운영체제 위에 여러 개의 격리된 시스템 환경을 구축할 수 있는 운영체제 수준의 가상화 기술 1
- 운영체제를 가상화하여 만들어진 가상화된 운영체제에 어플리케이션을 올려 운영하는 가상화 방식 (프로세스 격리)
- 게스트 운영체제가 설치되지 않고, 프로세스 레벨의 분리가 가능한 컨테이너를 사용하는 가상화 방식은 성능 측면에서 게스트 운영체제로 인한 성능 저하가 발생하지 않기 때문에 경량화 가상화로 분류됨
- 컨테이너는 가상머신과 달리 운영체제를 제외하고 애플리케이션 실행에 필요한 모든 파일을 패키징(packaging)한다는 점에서 'OS레벨 가상화'라고도 함 2
- 애플리케이션 실행 환경 및 필요한 라이브러리 등을 하나의 패키지로 묶어 배포할 수 있도록 하는 소프트웨어 도구
등장배경
- 처음등작은 2000년대 중반부터 리눅스에 내장된 LXC(LinuX Container) 기술로 소개됨
- 등장계기는 개발한 프로그램이 구동환경의 달라짐에 따라 예상하지 못한 각종 오류를 발생시키는 것을 해결하기 위함
- 오류가 발생하는 이유는 구동환경마다 네트워크, 스토리지, 보안 등의 정책이 각각 다르기 때문이며, 결국 SW를 하나의 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 이동하더라도 안정적으로 실행하는 방법을 모색하여 나온 방법
컨테이너의 특징
구분 | 설명 |
경량화 | - 운영체제를 제외하고 애플리케이션 실행에 필요한 모든 파일을 패키징 - 가볍기때문에파생되는속도,이식성등의향상효과 |
적은 시스템 요구사항 |
- 컨테이너 크기가 작아 수십 MB에 불과 - OS가포함되지않아부팅필요없기때문에서비스시작시간짧음 |
자원 배분 용이 | - 컨테이너에서 실행중인 서비스에 더 많은 가용성이 필요하거나 반대로 필요 없을 때, CPU에 대한 사용량이나 사용자가 설정한 임계치에 따라 자동으로 확장 또는 축소 가능 |
구동 방식 간단 | - 특정 클라우드 애플리케이션이 실행되기 위한 모든 라이브러리와 바이너리 파일 등이 패키지화되어 있어서, 그저 기존의 시스템에서 실행하면 됨 |
- 컨테이너 방식은 기존 가상머신 방식보다 시스템이 경량화되어 더 많은 App을 하나의 물리적 서버에서 구동 가능
컨테이너 기반 가상화 구조
- 애플리케이션의 실행에 필요한 라이브러리(Library, Libs), 바이너리(Binary, Bins) 3, 기타 구성파일 등을 패키지로 묶어서 배포하면, 구동환경이 바뀌어도 실행에 필요한 파일이 함께 따라다니기 때문에 오류를 최소화 4
![](https://blog.kakaocdn.net/dn/biNtGM/btqGewMbcNe/Hks3E5BCZhGwQo0j3MQmUK/img.png)
컨테이너 기술 아키텍처
![](https://blog.kakaocdn.net/dn/bh33rg/btqLsa3ALWs/Os2x8CJAAMFVLin7YmDOf1/img.png)
컨테이너 기반 가상화의 구성요소
구성요소 | 설명 | 요소기술 |
Linux Kernel | LXC 구동을 위한 Core OS | LXC지원, Linux Kernel version/build |
Cgroups | 시스템 자원의 세밀한 할당 및 제어 | 자원제어, 우선순의, 계정연동 등 |
Namespaces | 컨테이너별 고립된 View 제공 | PID, Mount, Network, IPC, User 등 |
Container | 실행환경 및 자원, 지원 Lib 패키징 | Runtime 환경, Library 통합 패키지 |
SELinux | 컨테이너간 상호 간섭을 격리하기 위한 역할기반의 접근 제어 보안 기술 | MAC/RBAC, 표준 리눅 스 보안(DAC) |
LXC | 단일 리눅스 호스트에 다중의 독립된 리눅스 컨테이들을 운영하기 위해 운영-시스템-레벨 가상화 기술 | OS레벨 가상화, Cgroups, Namespaces |
다중 컨테이너 관리를 위한 컨테이너 오케스트레이션(Orchestration) 기능
구분 | 설명 |
서비스 디스커버리 (Service Discovery) |
- 서비스 탐색 기능으로 기본적으로는 클라우드 환경에서 컨테이너의 생성과 배치 이동여부를 알 수 없기에 IP, Port 정보 업데이트 및 관 리를 통해 서비스를 지원함 |
스케일링(Scaling) | - 로드 밸런싱(Load balancing) : 생성된 컨테이너의 컴퓨팅자원 사용량의 설정 및 자동배분 - 스케줄링(Scheduling) : 늘어난 컨테이너를 적합한 서버에 나누어 배포하고, 서버가 다운될 경우 실행 중이던 컨테이너를 다른 서버에서 구동시킴 |
클러스터링(Clustering) | - 여러 개의 서버를 묶어 하나의 서버처럼 사용할 수 있도록 지원하거나, 가상네트워크를 이용하여 산재된 서버를 연결시켜줌 |
로깅/모니터링 (Logging/Monitoring) |
- 여러개의서버를동시에관리할경우한곳에서서버상태를모니 터링 하고 로그 관리를 할 수 있도록 함 |
가상머신 방식과 컨테이너 기반 가상화 방식의 차이
![](https://blog.kakaocdn.net/dn/DYAGD/btqysOfJBqj/3NwY4oSJ17WFaCMS6pFH01/img.png)
![](https://blog.kakaocdn.net/dn/RqYZa/btsB6OPC6UE/Lu6CyKW4CGS3LuKFwuBV80/img.jpg)
- 하이퍼바이저와 게스트 OS를 포함하는 가상머신 방식은 상당한 오버헤드가 존재함
구분 | 기존 방식의 가상머신(VM) | 컨테이너 기반의 가상화 |
이식성 |
|
|
효율성 |
|
|
서비스 요청에 따른 신속성 |
|
|
라이센스 비용 |
|
|
안정성 |
|
|
컨테이너와 가상머신의 차이
![](https://blog.kakaocdn.net/dn/bymlJS/btsB5YyrRtu/7VwEsCDER4x07TMv7z5xJ0/img.jpg)
Traditional Deployment vs. Virtualized Deployment vs. Container Deployment
![](https://blog.kakaocdn.net/dn/bfSRUA/btrynizLV4M/lYnrlHKtIvDzXFtfNZk09k/img.png)
Reference
- 컨테이너 기술은 2000년부터 'FreeBSD Jail', 'Unix FreeBSD', '리눅스LXC'의 하위 시스템 분할의 아이디어로 시작되었다 [본문으로]
- OS레벨 가상화 : 운영체제 수준의 가상화, 운영체제의 커널이 여러 개의 격리된 사용자 공간 인스턴스를 갖출 수 있도록 하는 가상화 방식 [본문으로]
- 라이브러리(Library, Libs) : 프로그램 구동 시에 필요하거나 공통으로 사용할 수 있는 특정 기능의 서브프로그램 또는 소스코드 집합. 라이브러리에는 주로 함수(서브루틴), 클래스에 대한 정의, 구성데이터 등 미리 작성된 코드 포함 가능 [본문으로]
- 바이너리(Binary, Bins) : 컴퓨터 저장과 처리 목적을 위해 2진수 형식으로 인코딩된 데이터 파일을 의미하며, 코드의 컴파일(Compile) 또는 압축된 결과물 [본문으로]