728x90
VM (Virtual Machine)
VM은 하드웨어 기반의 여러 게스트 운영 체제로, 하이퍼바이저를 통해 에뮬레이션 된다.
VM은 하이퍼바이저 위에서 필요한 만큼의 자원이 할당된 가상의 컴퓨터로 각각의 VM은 서로간의 존재를 알 수 없으며 커널을 포함한 OS는 독립적으로 실행된다. 모놀리식 워크로드 패키징에 사용되는 기존 방식인 단일 컨테이너보다 훨씬 더 많은 작업을 실행할 수 있다. 하지만 시스템 구조적으로 봤을 때 각각의 OS를 띄워야 하기 때문에 Container와 비교했을 때 더 무거운 편이라고 할 수 있다. 또한 OS, 애플리케이션, 라이브러리에 의존하게 되어 이식성이 크게 저하된다.
VM은 다음 용도에 적합하다.
- 기존, 레거시 및 모놀리식 워크로드 수용
- 위험한 개발 사이클 분리
- 인프라 리소스 프로비저닝
- 다른 OS에서 또 다른 OS 실행
Container
애플리케이션 수준 구성이며 커널 하나를 공유하는 여러 가상 환경을 에뮬레이션한다.
Container는 별도의 격리된 환경에서 프로세스를 실행한다. Host 측에선 다른 프로세스와 다를 것이 없으나 Container 내부에서는 Host나 다른 Container의 존재를 알 수 없으므로 VM처럼 나름의 격리가 이루어진다고 볼 수 있다. 보통 마이크로서비스 단위로 구성되며, 실행에 필요한 모든 것(라이브러리, 파일, 환경변수 등)을 담고 있는 Image로부터 생성된다.
Container은 다음 용도에 적합하다.
- 클라우드 네이티브 애플리케이션 빌드
- 마이크로서비스 패키지
- DevOps 또는 CI/CD Practice 촉진
- 동일한 OS를 공유하는 다양한 IT 설치 공간에서 확장 가능한 IT 프로젝트로 전환
에뮬레이션(Emulation)이란?
하드웨어 리소스의 동작을 소프트웨어로 대신하는 가상화 방식
'DevOps' 카테고리의 다른 글
[Devops] GitOps CI/CD 구축하기(2) - Docker 설치 (0) | 2024.01.04 |
---|---|
[Devops] GitOps CI/CD 구축하기(1) - EC2 인스턴스 생성, 탄력적 IP 주소 할당 (1) | 2024.01.02 |
[Devops] Kubernetes 쿠버네티스란? (2) | 2023.08.23 |