오픈소스 SW개발 (9) Virtualization

2022. 5. 13. 11:09강의 내용 정리/오픈소스SW개발

728x90
반응형

Virtualization

1. Virtualization

1) Virtualization란?

물리적인 컴퓨터는 한 대지만 여러 대의 컴퓨터가 독립적으로 동작할 수 있게끔 도와주는 것


(1) Virtualization의 수준

- 하드웨어에 가까울수록 저수준, 어플리케이션과 가까울수록 고수준이다. 이는 좋고 나쁘고의 의미가 아니라 하드웨어에 얼마나 가까운지에 대해 수준을 나눈 것이다.

- 라이브러리는 호환성을 지켜주기 위한 것이 크다.

 

(2) 특징

- 앞으로 하드웨어 레벨, OS 레벨 가상화에 대한 내용을 많이 사용할 것이다.

 

 

2) ISA

- 이해하기 쉬운 용어를 작성하면 컴파일을 통해 ISA로 번역한다.

- 게임은 하드웨어에 맞게 가상화를 해야한다. 이를 게임 에뮬레이터라고 하기도 한다.

 

3) Run-time library

 

4) User-Application level

- JVM은 중간코드를 해석해서 하드웨어가 해석할 수 있게끔 바꿔준다.

- 원래는 각기 다른 운영체제, CPU에 맞춰 작성해야하지만 JVM이 통일된 내용을 작성해도 동작하게끔 도와준다. 이는 컴파일뿐만 아니라 메모리 관리 등 여러 역할을 하는 하나의 컴퓨터이기에 가상화라고 한다.

 


2. Hardware Virtualization

1) Hardware Virtualization

독립적인 OS를 설치해서 돌릴 수 있게끔 도와준다.


(1) Hardware Virtualization의 장점

- 물리적인 컴퓨터 위에 가상 머신을 올릴 수 있다.

 

(2) Virtualization 이전/이후

- 독립적인 OS는 guest OS로 받아서 권한을 조금 낮게 하여 사용할 수 있다.

- VIrtualization Layer: 가상화를 제공해주는 계층으로 그 위에는 진짜 가상화된 하드웨어가 제공된다.

 

(3) Hypervisor

- 가상화를 제공해주는 소프트웨어로 Hypervisor는 가상화의 모든 권한을 가지고 있다.

- 일반적인 OS를 슈퍼바이저라고 한다. 

- 가상머신을 생성하고, 가상머신에서 동작하는 조건을 설정한다.

- OS는 평소와 똑같이 동작하기에 OS와 어플리케이션은 그대로 사용할 수 있다.

- 중간중간에 가로채서 동작한다.

- guest OS인 경우에는 권한이 없기에 Hypervisor가 대신 이를 수행해준다. 

 

2) Hardware Virtualization

(1) Native VM

 

- 일반적으로 배포할 때는 위와 같이 사용한다.

 

(2) Host Virtual Machine

- Device driver를 확보해서 가상머신을 제공해주는 것이다. 개인적으로 사용하는 경우에는 이를 많이 사용한다.

 


3. OS-level Virtualization (container)

1) OS-level Virtualization

- 동일한 컨테이너 내에서 여러 개를 돌릴 수 있도록 한다.

- 시작과 중지 시간이 정말 빠르고 리소스 낭비도 거의 없다. Scalability도 높다.

- 하나의 컨테이너에서 동일한 계열의 어플리케이션만 지원한다.

 

 

2) Docker

(1) Docker란?

- 리눅스 계열에서 널리 활용되고 docker images를 만들어서 우리가 만드는 컨테이너에 탑재된다.

- 우리가 필요한 어플리케이션이나 라이브러리를 끌어와서 사용할 수 있다.

- 여러 오픈소스를 조합해서 사용할 수 있다.

 

 

(2) VM vs Docker

- 하드웨어 가상화는 용량을 매우 많이 사용한다. 하지만 Docker는 디스크 사용량을 줄일 수 있다.

- 최근에는 Docker 환경으로 많이 넘어왔다.

- 어플리케이션을 빠르게 배포할 때는 container가 유리하다.

- 도커는 Guest OS가 없다.

- 오른쪽과 같이 share된 형태로 사용할 수도 있다.

 

(3) Docker Architecture

도커 허브로부터 Base Image를 가지고 오는 것으로부터 시작한다. 다시말해 From 키워드를 Dockerfile에 작성해 사용할 언어에 대한 Base Image를 가져와서 이에 대해 이미지를 만들 수 있다.

 

(4) Docker Keyword

728x90
반응형