728x90

도커와 쿠버네티스에 대해서 공부하다보니 가상서버에 대한 개념으로 가상머신기반 혹은 컨테이너 기반의 차이에 대한 언급이 많았다. 도커와 쿠버네티스는 기본적으로 컨테이너 기반의 가상화 플랫폼이다. 

그렇다면 가상머신과 컨테이너 기반의 차이는 무엇일까?

 

출처: https://hwanine.github.io/web/Container-vs-VM/

 

가상머신(virtual machine)

가상머신은 컴퓨터 환경을 가상화하여 소프트웨어로 구현한 것이다. 이러한 가상머신들을 위의 그림과 같이 하이퍼 바이저가 가상화 하여서 guest OS와 함께 컴퓨터 환경이 구성된다.

 

컨테이너(Container)

가상머신보다 더 작은 단위이고 실제로 내부에서 처리하는 일도 더 적기 때문에 보다 간단하고 빠르고 효율적으로 애플리케이션을 실행할 수 있다. 그러나 가상머신처럼 가상의 guest os를 구성하여 여러 os를 사용할 수 있게 해주는 것은 아니므로 가상머신보다 용도는 제한될 수 있다. 

 

대표적으로 도커를 가장 많이 사용한다.(블로그 정리 참고)

 

가령 예를 들어서, 리눅스 6버전에서 개발을 하고 7버전에서 해당 프로그램을 띄우게 되면 버전차이로 문제가 생긴다. 하지만 도커를 사용하게 되면 어떤 os에 있든 도커 내에 이미지로 각 라이브러리를 관리해서 버전이 다르더라도 그 이미지를 가지고와서 사용해주므로 안정적으로 시스템을 구동할 수 있게 되는 것이다.

 

가상머신 컨테이너
하드웨어 수준의 가상화 운영체제 가상화
리소스 사용량이 높음 리소스 사용량이 적음
다양한 어플리케이션 실행가능 동일 커널 기반의 서비스만 구성 가능
제한된 성능 성능 제한 x
가상머신간 완전한 격리로 높은 보안성 프로세스 수준의 격리로 비교적 낮은 보안성

출처 : https://daaa0555.tistory.com/464

가상머신은 각각의 os를 띄워야 하고 컨테이너는 한 os를 공유하고 있는 구조이므로 속도면에서 컨테이너가 빠르다. 

또한 서비스를 만들 때 하나의 언어로 여러 모듈을 사용하는데, A,B 모듈 사용에는 큰 문제가 없는데, C모듈에 문제가 있을 경우 위의 그림처럼 가상머신을 사용할 경우, 새로운 가상머신을 생성해주어야 하지만, 컨테이너는 한 서비스에 모듈별로 쪼개서 각 컨테이너에 이미지로 담아서 관리할 수 있다. 

여기서 쿠버네티스가 활용될 수 있는데, 쿠버네티스는 여러 컨테이너들을 pod라는 배포 단위로 자유롭게 묶어서 관리 및 배포하고 확장할 수 있으므로 시스템을 모듈별로 쪼개서 개발할 때 큰 효과를 발휘한다.

728x90

'DevOps' 카테고리의 다른 글

[AWS] EMR 세팅 실습해보기  (0) 2022.05.17
AWS VS GCP  (0) 2022.03.24
CI/CD란?  (0) 2022.03.01
docker VS kubernetes  (0) 2022.02.25
Deploy- EC2 가상서버에서 서버연동(Nginx+flask)  (0) 2021.01.14

+ Recent posts