728x90
반응형
컨테이너와 VM의 차이, 그리고 컨테이너가 가진 장점은?
개발자라면 한 번쯤은 들어봤을 VM(가상 머신)과 컨테이너(Container). 두 기술 모두 애플리케이션을 격리된 환경에서 실행할 수 있게 해주지만, 구조와 목적은 꽤 다릅니다. 이번 글에서는 이 둘의 차이를 알아보고, 왜 최근 개발과 배포 환경에서 컨테이너가 더 각광받고 있는지 정리해보았습니다.
컨테이너와 VM의 구조 차이
항목 | 컨테이너 | 가상 머신 (VM) |
---|---|---|
가상화 방식 | OS 수준 가상화 (lightweight) | 하드웨어 수준 가상화 (heavyweight) |
실행 기반 | 호스트 OS 위 | 하이퍼바이저 위 (별도 게스트 OS 포함) |
구성 | 앱 + 라이브러리 | 앱 + 게스트 OS + 라이브러리 |
이미지 크기 | 작음 (수 MB~수백 MB) | 큼 (수 GB 이상) |
시작 속도 | 매우 빠름 (거의 즉시) | 느림 (수십 초 이상) |
컨테이너가 VM보다 뛰어난 점
- 가볍고 빠르다
게스트 OS가 없어 용량이 작고, 실행 속도가 빠릅니다. - 자원 효율성이 높다
호스트 OS를 공유하므로, 메모리와 CPU 자원을 효율적으로 사용합니다. - 개발과 운영 환경이 동일
"로컬에서는 되는데 서버에서는 안 돼요" 문제를 줄여줍니다. - 배포 및 관리가 쉬움
이미지 기반으로 관리되므로 CI/CD 파이프라인과 잘 어울립니다.
비유로 이해하는 VM vs 컨테이너
- VM = 집 한 채를 짓는 것
전기, 수도, 벽, 지붕까지 전부 따로 구성해야 합니다. - 컨테이너 = 아파트에서 방 하나 쓰는 것
기반 인프라는 공유하지만, 내부는 내가 자유롭게 꾸밀 수 있죠.
그렇다면 컨테이너의 단점은 없을까?
- 보안 측면에서는 VM보다 약할 수 있음
호스트 커널을 공유하므로, 하나의 취약점이 전체에 영향을 줄 수 있습니다. - OS 호환성에 제약
리눅스 기반 컨테이너에서는 윈도우 앱을 실행할 수 없습니다. (반대도 마찬가지)
결론
컨테이너는 가볍고 빠르며, 배포와 확장이 쉬운 장점 덕분에 클라우드, DevOps, 마이크로서비스에 매우 잘 어울리는 기술입니다.
Docker와 Kubernetes는 이 생태계의 중심에 있는 도구들이죠.
다음 글에서는 Docker의 기본 개념이나 Kubernetes로 컨테이너를 어떻게 운영하는지도 소개해보겠습니다.
728x90
반응형
'Skills > DevOps' 카테고리의 다른 글
#4(최종) AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - 설정 파일 작동 원리 (0) | 2023.05.23 |
---|---|
#3 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - deploy.yml (0) | 2023.05.23 |
#0 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - 배포 프로세스 (0) | 2023.05.22 |
#2 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - Procfile, .ebextensions (1) | 2023.05.22 |
가상화, 가상머신(Virtual Machine)과 컨테이너(Container) 비교 (0) | 2023.05.16 |