본문 바로가기

CS/운영체제

가상화란? (VM, 컨테이너, 도커, 쿠버네티스)

애플리케이션의 서비스를 저렴한 비용으로 안정적이고 빠르게 제공하기 위한 인프라이다. 물리적인 컴퓨팅 자원(CPU, Disk, Network )을 가상화하여 여러 개의 실행환경(테넌트)이 공유하여 자원을 효율적으로 사용할 수 있게 해주는 것이다. 물리적인 컴퓨팅 자원을 가상화한다는 것은 각 테넌트들이 서로의 존재를 모르도록 격리되어야 함을 의미한다.

1) 호스트 가상화

- Base가 되는 Host OS위에 Guest OS가 구동되는 방식

장점

- 가상의 하드웨어를 에뮬레이팅하기 때문에 호스트 운영체제에 크게 제약사항이 없음

- 논리적으로 분리되어 있어서 한 VM에 오류가 발생해도 다른 VM으로 확산되지 않음

단점

- OS위에 OS가 얹히는 방식이기 때문에 오버헤드가 클 수 있음

종류 : VM Workstation, VMware Server, VMware Player, MS Virtual Sever, Virtual PC, Virtual Box

2) 하이퍼바이저 가상화

- Host OS없이 하드웨어에 하이퍼바이저를 설치하여 사용하는 방식

- 다시 전가상화(Full-Virtualization or Hardware Virtual Machine)  와 반가상화(Para-Virtualization)로 분류

장점

- 별도의 Host OS 없기 때문에 오버헤드가 적고, 하드웨어를 직접 제어하기 때문에 효율적으로 리소스를 사용할 수 있음

단점

- 자체적으로 머신에 대한 관리 기능이 없기 때문에 관리를 위한 컴퓨터나 콘솔이 필요함, 여러 하드웨어 드라이버를 세팅해야 하므로 설치가 어렵다

종류 : Xen, MS hyper-V, KVM

전가상화(Full-Virtualization)

- 하드웨어를 완전히 가상화 하는 방식으로 Hardware Virtual Machine 이라고도 불림
- 하이퍼바이저를 구동하면 DOM0라고 하는 관리용 가상 머신이 실행되며, 모든 가상머신들의 하드웨어 접근이 DOM0을 통해서 이루어짐

- 하이퍼바이저는 명령어 번역 역할 뿐만 아니라 가상화된 OS들에게 자원을 할당해주는 역할도 담당

장점

- 하드웨어를 완전히 가상화하기 때문에 Guest OS 운영체제의 별다른 수정이 필요 없음

단점

하이퍼바이저가 모든 명령을 중재하기 때문에 CPURAM처럼 I/O가 잦은 자원을 컨트롤 하기에는 성능이 떨어짐

반가상화(Para-Virtualization)

- 게스트 OS를 일부 수정하여 필요한 하드웨어 자원을 직접 요구할 수 있음

- 성능저하의 문제를 해결하기 위해 하이퍼콜(Hyper Call)이라는 인터페이스를 통해 하이퍼바이저에게 직접 요청을 날릴 수 있음

- 가상화된 각 OS들이 각각 다른 번역기를 갖고 있는 것, 하이퍼바이저의 번역 역할을 대체

장점 

- 전가상화에 비해 성능이 빠름

단점

- Hyper Call 요청을 할 수 있도록 각 OS의 커널을 수정해야하며 오픈소스 OS가 아니면 반가상화를 이용하기가 쉽지 않음

3) 컨테이너 가상화

- 호스트OS위에 컨테이너 관리 소프트웨어를 설치하여, 논리적으로 컨테이너를 나누어 사용
- 컨테이너는 어플리케이션 동작을 위한 라이브러리와 어플리케이션 등으로 구성되어 각각 개별 서버처럼 사용 가능

- 일반적으로 수십 MB 크기, 운영체제 부팅이 필요없어 시작하는 시간이 짧음

- 실행 패키지인 이미지를 통해 배포함으로 복제와 배포가 쉬움

장점

- 컨테이너 가상화는 오버헤드가 적어 가볍고 빠른 장점이 있음

도커(Docker)

컨테이너 = 도커 X

컨테이너 > 도커 O

 

가상화(VM)Vmware가 아니듯 컨테이너도 도커뿐만 아니라 다양한 종류의 컨테이너 기술이 존재한다. 도커는 컨테이너 기술 중 하나이다. 초기 도커 기술은 LXC 기술을 기반으로 구축되었으나 현재는 종속 관계를 벗어났다. 다른 컨테이너 기술에는 Java 컨테이너, Unikenerls, LXD, OpenVZ, Rkt, Windows Server Containers 등이 있다.

기존 Linux ContainerDocker 비교

LXC는 경량의 가상화 방법으로 탄생하였지만 사용자에게 큰 반응을 얻지 못했다. 그에 비해, 도커 기술은 컨테이너를 생성 및 구축, 이미지 전송, 이미지 버전 관리 방법에 있어 많은 사용자 호응을 얻었다.

LXC 는 다중 프로세스를 관리할 수 있는 init 시스템을 사용하며, 전체 애플리케이션을 하나로 실행할 수 있다. 도커는 애플리케이션이 개별 프로세스로 세분화되도록 하며 이를 수행할 수 있도록 제공한다. 이 세분화된 접근 방식에는 이점이 있다.

도커 이미지 파일은 각각 계층으로 이루어져 단일 이미지로 결합된다. 만약 이미지가 변경되면 계층이 생성되고, 사용자가 실행, 복사 명령을 지정할 때마다 새 계층이 생성된다. 새로운 도커 컨테이너를 구축할 때 이전 계층을 재사용하여 구축이 빠르게 진행된다. 중간 변경 사항이 있다면 변경 내용이 공유되며 개선된다. 버전 관리는 계층화와 관련이 있어 변경 사항이 새롭게 발생할 때마다 내장 변경 로그가 기본적으로 적용된다. 

장점

- 이미지 파일을 계층화하여 속도와 관리 측면에서 상당한 이점

- 롤백이 간단해졌으며 지속적인 통합 및 연속배포(CI/CD)를 수행하는 데 편리해짐

- 도커 기술의 효용성은 세분화된 마이크로서비스 아키텍쳐와 잘 어울림

단점   

- 단일 컨테이너 관리에 적합하도록 설계되어 세분화된 컨테이너와 컨테이너화된 앱이 늘어날수록 관리 포인트가 늘어나 운영에 어려움

 

  세분화된 컨테이너를 그룹화하여 네트워킹, 보안에 적합하도록 구성하면서 신속한 배포가 장점인 도커 기술을 극대화할 수 있는 컨테이너 자동 확장 기능을 가진 오케스트레이션 툴이 필요하게 되었고 그 툴이 Kubernetes 이다.

* 오케스트레이션이란? 컨테이너를 스케줄링/ 클러스터링/ 서비스 디스커버리/ 로깅 및 모니터링 하는 것

쿠버네티스(Kubernetes)

쿠버네티스란? 여러 컨테이너를 관리/예약하는 도구

도커란? 여러 컨테이너를 관리/예약하는 플랫폼

 

도커는 '기술적인 개념이자 도구'이고 쿠버네티스는 '도커를 관리하는 툴'이다. 이미지를 컨테이너에 띄우고 실행하는 기술이 도커, 이런 도커를 기반으로 컨테이너를 관리하는 서비스가 쿠버네티스이며 도커는 '한 개의 컨테이너'를 관리하는 데 최적, 쿠버네티스는 '여러 개의 컨테이너'를 서비스 단위로 관리하는 데 최적화되어있다.

다른 컨테이너 오케스트레이션 툴로는 도커 스웜, ECS, Nomad 등이 있다.

특징

점진적 업데이트 제공 -> 서비스 중단 없이 업데이트 가능

특정 컨테이너가 죽었다면 즉각 그 컨테이너를 복제 생성해서 서비스를 유지한다. (= self healing)

보안관제에서의 가상화 이용

1) 인터넷망 가상화

특징

- 업무는 사용자 컴퓨터에서 직접 수행

- 인터넷은 컴퓨터에 설치된 서버접속용 프로그램으로 인터넷망 가상화 서버에 접속하여 사용

장점

- 가상화 서버환경에 사용자 통제 및 관리정책 일괄적용 가능

- 가상화된 인터넷 환경 제공으로 인한 악성코드 감염 최소화

- 인터넷 환경이 악성코드에 감염 되거나 해킹을 당해도 업무 환경은 안전하게 유지 가능

단점

- 가상화 서버 구축을 위한 비용발생

- 가상화 서버를 다수의 사용자가 동시에 사용함에 따라 컴퓨터와 가상화 서버간 네트워크 트래픽 증가로 인터넷망 트래픽 증가 및 속도 지연 가능

- 가상화 서버 환경에서 실행되는 보안프로그램(인터넷 뱅킹 등)에 호환성 검토 필요

2) 업무망 가상화

특징

- 인터넷은 사용자 컴퓨터에서 직접 사용

- 업무는 컴퓨터에 설치된 서버접속용 프로그램으로 업무용 가상화 서버에 접속하여 수행

장점

- 가상화 서버 환경에 업무정보가 저장됨에 따라 업무 데이터에 중앙관리 및 백업 용이, 내부정보 유출방지 효과 증가

- 사용자 통제 및 관리 정책 일괄적용 가능

단점

- 가상화 서버 구축을 위한 비용발생

- 가상화 서버 성능 및 용량이 충분 하지 못할 때 속도 저하, 업무 지연 등 발생

- 가상화 서버 장애 발생 시 업무 중단

- 가상화 서버 환경에서 실행되는 업무 프로그램, 보안프로그램 등에 호환성 검토 필요

- 사용자 컴퓨터(로컬영역)가 악성코드에 감염되거나 해킹당한 때, 업무망으로의 악성코드 유입 및 불법적인 침해 발생 가능

'CS > 운영체제' 카테고리의 다른 글

교착상태(Deadlock)  (0) 2021.03.03
동기화  (0) 2021.03.03
캐시(Cache)  (0) 2021.02.27
멀티 프로세스  (0) 2021.02.24