왜 컨테이너 인가? VM vs Container

 

개발을 하다보면 자주 접하게 되는 단어이자 필수가 되어버린 VM과 Container 이 둘은 어떠한 의미를 가지고 있는지 그리고 어떻게 차이가 있는지에 대하여 한번 이야기 해보고자 합니다. 

 

VM(Virtual Machine)

VM 즉, 가상화 머신이라고 불리는 기술은 하나의 컴퓨터 자원을 소프트웨어 기술을 통해 나누는 기술을 의미합니다. VM을 만들고자 하면 각 가상화마다 OS가 필요로 하게 되고, 생성된 VM에 어플리케이션과 환경을 설정하게 됩니다. 이렇게 만들어진 가상화 머신을 이미지화 하여 원하는 만큼 복제를 할 수 있다는 장점을 가지고 있습니다. 이러한 가상화 머신이 가진 장점으로 인해 오랜 시간동안 많은 개발자들의 관심을 받을 수 있었고 지금도 여러 회사에서 해당 기술을 통해 개발을 진행하고 있습니다. 

 

하지만 이러한 기술도 시간이 지나 여러 단점들이 발생하게 되는데요. 그것은 바로 자원의 활용에서 비효율성이 발생한다는 것과 만드는 과정에서 많은 시간을 활용해야 한다는 것입니다. 실제로 VM을 하나 만드려고 하면 해당 VM에 필요한 OS를 다운을 받아야하고 설치하고 어플리케이션을 내포하고 환경설정을 해야됩니다. 이러한 과정으로 보았을 때 OS 라는 자원은 기본적으로 1GB 에서 많게는 3GB 이상을 사용해야 합니다. 더구나 지속적으로 자원을 복제해서 사용하게 되었을 때 똑같은 OS 를 불필요 하게 중복으로 사용해야 하고 이로 인해 기본 설정에 대한 자원을 많이 소모하게 됩니다. 

 

 

Container

컨테이너는 VM에서 가진 단점을 해결하기 위해 개발된 기술로 같은 형식의 기술을 사용하지만 좀 더 라이트한 기술로 같은 아키텍처를 구성하는데 도움을 주고 있습니다. 먼저 구현되어 졌을때 아키텍처의 모양을 보겠습니다. 

VM에서는 Hypervisor라는 기능을 통해 가상화를 구현하였지만 컨테이너에는 Container를 실행할 수 있는 환경프로그램을 실행 시켜 각 서비스를 컨테이너로 제공할 수 있도록 해주고 있습니다. 또한 VM에서 가지고 있는 문제점은 게스트 OS를 통한 자원의 비효율성을 빼고 HostOS 에서 제공해주는 WSL 로 컨테이너를 구성하는 효율성을 보여주고 있습니다. 이러한 차이를 통해 좀 더 많은 자원을 효율적으로 사용할 수 있게 해주고 있는 상황입니다.

 

컨테이너라는 것은 하나의 큰 박스로 우리가 원하는 어플리케이션과 설정들을 박스에 담아두고 원할 때 꺼내서 사용하게 됩니다. 이러한 장점으로 인해 여러 서버에서도 같은 기능을 확장시킨다거나 가로형 서버 확장까지 가능하게 해줍니다. 

 

WSL

Windows Subsystem for Linux(WSL)은 Windows 10에서 네이티브로 Linux 바이너리 실행 파일을 실행할 수 있게 해주는 호환성 계층입니다. 이를 통해 Windows 사용자들은 Linux 환경을 Windows 내에서 직접 사용할 수 있게 되었습니다.

 

주요한 특징으로는 Windows에서 Linux 명령어 사용 가능하게 해주고 Windows와 Linux 파일 시스템 간 통합을 해주며 다양한 Linux 배포판 지원 (Ubuntu, Debian, Fedora 등)한다는 것입니다. 

 

 

Docker는 애플리케이션을 컨테이너화하여 개발, 배포, 실행을 용이하게 하는 플랫폼입니다. WSL은 Docker for Windows와 밀접한 관련이 있으며, 특히 WSL 2의 등장으로 그 관계가 더욱 강화되었습니다. 도커는 WSL을 통해 Linux 개발 환경을 구축하고, 동시에 애플리케이션을 컨테이너화할 수 있습니다. 이는 Windows에서 Linux 기반 개발과 배포를 원활하게 만듭니다.

'Infra > Architecture' 카테고리의 다른 글

3 Tier Layer 와 IDC  (0) 2024.10.11
IT Infra의 기초  (7) 2024.10.09