가상머신(Virtual Machine)과 컨테이너(Container)
🏷️ 개요
컨테이너와 가상 머신은 컴퓨팅 환경을 패키징하는 두 가지 접근 방식으로서 이러한 접근 방식에서는 다양한 IT 구성 요소를 결합하여 시스템의 나머지 부분으로부터 격리합니다. 두 접근 방식의 가장 큰 차이점은 격리되는 구성 요소로, 이는 각 접근 방식의 규모와 이식성에 영향을 줄 수 있습니다.
🏷️ 가상머신(Virtual Machine)
실재하는 컴퓨터 상에 소프트웨어로 논리적으로 만들어낸 컴퓨터입니다. 하나의 물리 자원(컴퓨터) 위에 하나의 환경(OS)만 있는 것을 효율화하고자 가상화층을 만들고 그 위에 OS를 새로 설치하는 기법입니다.
🏷️ 컨테이너(Container)
정확하게 말하자면 운영체제에서 실행되는 프로세스를 격리(Isolation)하여 별도의 실행 환경을 제공해주며, 해당 프로세스는 운영체제 상에서 실행되는 유일한 프로세스인 것처럼 작동하는 기술입니다. 즉, 운영체제에서 실행되는 여러 프로세스는 컨테이너라는 개념으로 격리되어 별도의 운영 환경을 제공해주는 기술입니다.
🏷️ 차이점
✅ 시스템 성능
가상 머신 | 가상 머신을 사용한 기존 가상화에서는 각 가상 머신마다 전용 운영 체제가 있기 때문에 가상 머신에 구축된 애플리케이션을 실행할 때 메모리 사용량이 필요 이상으로 많아져 가상 머신이 호스트에 필요한 리소스를 모두 사용할 수 있습니다. |
컨테이너 | 기존 가상화와 달리 컨테이너화된 애플리케이션은 완전한 가상 머신보다 리소스를 더 적게 사용하고 호스트 메모리에 가해지는 부담을 줄일 수 있도록 운영 체제 환경(커널)을 공유합니다. |
✅ 디스크 공간
가상 머신 | 기존의 가상 머신은 디스크 공간을 많이 차지할 수 있습니다. VM이 호스트하는 애플리케이션과 함께 전체 운영 체제와 관련 도구도 포함하기 때문입니다. |
컨테이너 | 컨테이너는 상대적으로 가볍습니다. 컨테이너화된 애플리케이션을 실행하는 데 필요한 라이브러리와 도구만 포함하기 때문에 가상 머신보다 더 작고 더 빨리 시작됩니다. |
✅ 유지관리와 업데이트
가상 머신 | 운영 체제를 업데이트하거나 패치할 경우 기존 컴퓨터를 하나씩 업데이트해야 하고 각 게스트 OS를 개별적으로 패치해야 합니다. |
컨테이너 | 컨테이너의 경우 컨테이너 호스트(컨테이너를 호스트하는 컴퓨터)의 운영 체제만 업데이트하면 됩니다. 따라서 유지관리가 매우 간소화됩니다. |
🏷️ 사용 용도
✅ 가상머신(Virtual Machine)
- 클라우드 네이티브 애플리케이션 빌드
- 마이크로서비스 패키징
- DevOps 또는 CI/CD 사례로 애플리케이션 통합
- 확장 가능한 IT 프로젝트를 다양한 IT 풋프린트 전반으로 이동
✅ 컨테이너(Container)
- 기존, 레거시 및 모놀리식 워크로드 수용
- 위험한 개발 사이클 분리
- 인프라 리소스(예: 네트워크, 서버, 데이터) 프로비저닝
- 별도의 OS에서 다른 종류의 OS 실행(예: Linux에서 Unix 실행)
📖 Reference
'코딩 공부 > Cloud' 카테고리의 다른 글
[Oracle Cloud] 생성한 DB 연결 오류 문제 해결 (0) | 2024.08.11 |
---|---|
[Cloud] 프로비저닝(Provisioning) (0) | 2024.04.29 |
[AWS] ECS(Elastic Container Service) (0) | 2024.04.27 |
[AWS] EBS(Elastic Block Storage) (0) | 2024.04.24 |
[AWS] AWS 구조 (1) | 2024.04.22 |