가상화(VM)와 컨테이너(Container)의 차이점
필드에서 자주 듣던 VM, 컨테이너, 도커, 쿠버네티스, 클라우드에 대한 이해가 없어서 적는 글
VM
- vm은 일반적으로 크기가 기가바이트 단위이다.
- vm은 자체 OS를 포함하고 있어 리소스 집약적인 기능 여러 개를 동시에 수행할 수 있다.
- vm에서 사용할 수 있는 리소스가 늘어남에 따라 전체 서버, OS, 데스크톱, 데이터베이스, 네트워크를 추상화, 분할, 복제, 에뮬레이션할 수 있다.
Container
- 컨테이너는 일반적으로 크기가 메가바이트 단위이다.
- 앱보다 크거나 실행하는 데 필수적인 모든 파일이 컨테이너에 패키징되는 것은 아니다.
- 특정 작업을 수행하는 단일 기능(마이크로서비스)이 컨테이너에 패키징 된다.
- 컨테이너는 경량화 속성과 공유 운영체제(OS)로 인해 여러 환경 간에 매우 쉽게 이동할 수 있다.
기존 IT 아키텍처 (모놀리식 및 레거시)
- 기존 IT 모놀리식 및 레거시는 워크로드의 모든 측면을 하나의 큰 파일형식으로 분할할 수 없기 때문에 주로 VM 과 같은 대규모 환경 내에서 전체 유닛으로 패키징해야 한다.
- 과거에는 VM내에서 전체 애플리케이션을 빌드하고 실행하는 것이 일반적이다.
- 그러나 이 경우 모든 코드와 종속성이 한 곳에 배치되므로 VM의 크기가 커지고 업데이트를 푸시할 때 연속적인 장애와 다운 타임이 발생하였다.
새로운 IT 프랙티스 (클라우드 네이티브 개발, CI/CD, DevOps)
- 새로운 IT는 워크로드를 일반적으로 기능 또는 마이크로서비스라고 하는 서비스 가능한 최소 유닛으로 분할하여 사용한다.
- 이 작은 유닛들은 컨테이너에 최적으로 패키징 된다.
- 따라서 여러 팀이 다른 컨테이너에 패키징된 코드를 방해하거나 위협하지 않고 애플리케이션 또는 서비스의 개별 부분에서 작업 할 수 있다.
출처