
이 블로그 게시물에서는 첫 번째 질문인 VM(가상 머신)이 컨테이너와 어떻게 다른지 살펴보겠습니다. 가상 머신(VM)이란 무엇인가요? 과거에는 서버 처리 능력과 용량이 증가함에 따라 베어 메탈 애플리케이션은 새로운 리소스를 활용할 수 없었습니다. 따라서 특정 하드웨어 시스템을 에뮬레이션하기 위해 물리적 서버 위에서 소프트웨어를 실행하도록 설계된 VM이 탄생했습니다. 하이퍼바이저, 즉 가상 머신 모니터는 VM을 만들고 실행하는 소프트웨어, 펌웨어 또는 하드웨어입니다. 하이퍼바이저는 하드웨어와 가상 머신 사이에 위치하며 서버를 가상화하는 데 필요합니다.
각 가상 머신 내에서는 고유한 게스트 운영 체제가 실행됩니다. 서로 다른 운영 체제를 사용하는 VM이 같은 물리적 서버에서 실행될 수 있습니다. 예를 들어, UNIX VM이 Linux VM과 나란히 배치될 수 있습니다. 각 VM에는 자체 바이너리, 라이브러리 및 애플리케이션이 있으며, VM의 크기는 수 기가바이트에 달할 수 있습니다.

서버 가상화는 다양한 이점을 제공했는데, 그중 가장 큰 이점은 단일 시스템에 애플리케이션을 통합할 수 있다는 점입니다. 단일 서버에서 단일 애플리케이션을 실행하는 시대는 지났습니다. 더 이상 DR 사이트 하드웨어가 기본 데이터 센터를 미러링할 필요가 없기 때문에 가상화는 설치 공간 감소, 서버 프로비저닝 속도 향상 및 DR(재해 복구) 개선을 통해 비용을 절감할 수 있게 해주었습니다.
더 크고 빠른 서버의 활용도가 높아짐에 따라 사용하지 않는 서버를 확보하여 QA, 개발 또는 실험실 장비로 용도를 변경할 수 있기 때문에 개발 팀도 이러한 물리적 통합의 이점을 누릴 수 있었습니다. 하지만 이 접근 방식에는 단점도 있었습니다. 각 VM에는 별도의 운영 체제 이미지가 포함되어 있어 메모리와 스토리지 공간에 오버헤드가 추가됩니다. 이 문제는 개발 및 테스트에서 운영 및 재해 복구까지 소프트웨어 개발 라이프사이클의 모든 단계에 복잡성을 가중시킵니다. 또한, 이 접근 방식은 퍼블릭 클라우드, 프라이빗 클라우드, 기존 데이터 센터 간의 애플리케이션 이동성을 심각하게 제한합니다. 컨테이너란 무엇일까요? 운영 체제(OS) 가상화는 한 서버 환경에서 다른 서버 환경으로 이동할 때 소프트웨어가 예측 가능하고 원활하게 실행되도록 하기 위해 지난 10년 동안 널리 사용되었습니다. 하지만 컨테이너는 이러한 격리된 시스템을 단일 서버 또는 호스트 OS에서 실행할 수 있는 방법을 제공합니다.
컨테이너는 물리적 서버와 해당 호스트 OS(예: Linux 또는 Windows) 위에 위치합니다. 각 컨테이너는 호스트 OS 커널을 공유하며, 일반적으로 바이너리와 라이브러리도 공유합니다. 공유 구성 요소는 읽기 전용입니다. 따라서 컨테이너는 크기가 메가바이트에 불과하고 시작하는 데 몇 초밖에 걸리지 않습니다. 반면 VM은 크기가 기가바이트에 달하고 시작되는 데 몇 분씩 걸립니다.
또한, 컨테이너는 관리 오버헤드도 줄여줍니다. 공통된 운영 체제를 공유하기 때문에 버그 수정, 패치 등을 위해 단일 운영 체제만 집중적으로 관리하면 됩니다. 이 개념은 하이퍼바이저 호스트에서 경험하는 것과 비슷합니다. 즉, 관리 지점은 더 적지만 장애 영역은 약간 더 많습니다. 컨테이너는 VM보다 가볍고 휴대성이 뛰어납니다. 결론적으로, 가상 머신과 컨테이너는 여러 가지 면에서 다르지만, 가장 큰 차이점은 컨테이너가 OS를 가상화하여 단일 OS 인스턴스에서 여러 워크로드를 실행할 수 있는 방법을 제공한다는 점입니다. VM을 사용하면 하드웨어를 가상화하여 여러 OS 인스턴스를 실행할 수 있습니다. 컨테이너의 속도, 민첩성, 휴대성은 소프트웨어 개발을 간소화하는 데 도움이 되는 또 다른 도구입니다.
NetApp®은 컨테이너 기술을 믿고 있으며, 소프트웨어 개발의 속도와 민첩성을 더욱 향상할 수 있는 혁신을 제공하기 위해 노력하고 있습니다. NetApp은 영구 스토리지를 자동화하고 원활하게 만들기 위해 Trident를 개발했습니다. GitHub에서 Trident의 최신 릴리즈를 확인하십시오. 컨테이너 솔루션 페이지에서도 확인할 수 있습니다. 자세한 내용이나 궁금한 사항이 있는 경우netapp.io에서 thePub을 참조하십시오.