가상머신과 컨테이너, 클라우드의 차이
저는 다음 두 가지 선택지 사이에서 고민했습니다.
로컬에서 Multipass를 이용해 Ubuntu 가상머신을 생성하는 방법
AWS EC2에서 Ubuntu 인스턴스를 사용하는 방법
결론적으로, 혼자 테스트 용도로 사용할 예정이기 때문에 Multipass를 선택했습니다.
가상머신, 컨테이너, 클라우드의 차이는 아래에서 자세히 설명드리겠습니다.
가상머신(Virtual Machine)

가상머신은 쉽게 말해, 내 컴퓨터 안에 또 하나의 컴퓨터를 만드는 기술입니다. 하나의 물리 서버(Host)위에 하이퍼바이저(Hypervisor)라는 소프트웨어를 통해 여러 개의 가상 컴퓨터(Guest)를 만드는 기술입니다. 각 가상머신은 독립된 운영체제를 가지고 있고, CPU, 메모리, 디스크 등 자원을 일정 부분 할당받아 마치 별도의 물리 서버처럼 동작합니다. 가상머신은 내 컴퓨터 안에 또 하나의 컴퓨터를 만드는 것이기 때문에 내 컴퓨터의 자원에 의존합니다. 예를 들어, Multipass를 사용해 우분투 가상머신을 띄우면, 필자의 컴퓨터가 Apple M3 칩을 사용하고 있기 때문에, 생성되는 VM은 aarch64(ARM 64비트) 아키텍처 기반으로 동작합니다.
컨테이너(Container)

가상머신은 강력하지만 무겁습니다. VM마다 운영체제를 따로 올리기 때문에 시작 속도가 느리고, 자원을 많이 사용합니다. 개발자는 “같은 코드인데 내 컴퓨터에서는 되는데 서버에서는 왜 안되지?” 같은 문제에도 자주 부딪히곤 했습니다.
이러한 문제를 해결하기 위해 등장한 것이 컨테이너입니다. 컨테이너는 호스트 운영체제의 커널을 공유하면서, 앱과 라이브러리만 격리된 환경에서 실행됩니다. VM보다 훨씬 가볍고 빠르며, 환경을 코드로 정의한 Dockerfile 하나로 동일한 환경을 어디서든 재현할 수 있습니다.
가상머신은 호스트 운영체제 위에 올라가지만, 독립된 운영체제를 따로 가지고 있으므로 가상머신 내부에는 별도의 커널이 존재합니다. 컨테이너는 별도의 운영체제나 커널을 가지지 않고, 호스트 운영체제의 커널을 공유합니다.
클라우드(Cloud)

기존에는 서버, 가상머신, 컨테이너를 직접 구축하고 관리해야 했습니다. 서버를 사거나, 네트워크를 구성하거나, 데이터센터를 운영하는 것은 중소기업이나 개인 개발자에게는 큰 부담이었습니다. 이런 문제를 해결하기 위해 등장한 것이 바로 클라우드입니다.
클라우드는 AWS, GCP, Azure 같은 업체들이 대신 인프라를 구축해두고, 우리는 필요한 만큼만 자원을 빌려 쓰는 구조입니다. 덕분에 몇 분 만에 가상머신을 띄우고, 저장소를 추가하며, 글로벌 서비스를 운영하는 것도 가능해졌습니다. 클라우드는 단순히 VM을 제공하는 것을 넘어, 데이터베이스, 로드밸런서, 모니터링, 자동 확장 등 다양한 서비스를 종합적으로 제공하는 플랫폼입니다. AWS EC2 같은 경우, 클라우드에 있는 하나의 가상머신입니다. 실행 위치는 로컬이 아니라 AWS 데이터센터입니다.
아래의 내용이 궁금하시다면 봐주세요 🙌🏻

Ref.
![[가상화] 3. 가상머신(VM)과 하이퍼바이저 쉽게 이해하기](https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbV3hZB%2Fbtrbmyx5KX0%2FSsHKYAIxx9YiTAYV35ooVk%2Fimg.png)
