ABOUT ME

Today
Yesterday
Total
  • 컨테이너 대 가상머신
    TECH 2023. 11. 23. 16:30

    VMs vs container

    가상화는 어떻게 동작하는가

    가상화는 컴퓨터 하드웨어 위에 한 컴퓨터의 하드웨어 요소를 여러 가상 컴퓨터로 나누도록 해주는 추상 레이어를 생성하기 위해 소프트웨어를 사용하는 절차이다.

    이 소프트웨어를 하이퍼바이저라고 한다. 하이퍼바이저는 작은 레이어로 여러 운영체제 여러개가 함께 실행되도록 해주고, 동일한 컴퓨팅 자원을 공유할 수 있게 해준다. 하이퍼바이저가 물리 컴퓨터 혹은 데이터 센터 내의 서버에서 사용되면 (aka bare metal server), 물리 컴퓨터가 운영체제와 애플리케이션을 하드웨어에서 나눌 수 있도록 해준다. 그러면 여러개의 독립된 virtual machine으로 나뉘게된다.

    가상 머신이란 무엇인가?

    • 가상 머신은 가상화 된 컴퓨팅 환경을 만드는 기술이다.
    • 간단히 말해서, 물리 컴퓨터의 에뮬레이션이다.
    • VM은 여러 장비, 여러 운영체제로 보이는 팀 들을 하나의 컴퓨터에서 실행할 수 있게 해준다.
    • VM은 하이퍼바이저라고 불리는 경량의 소프트웨어 레이어를 이용하여 물리 컴퓨터와 통신한다.
    • 하이퍼바이저는 VM을 서로 분리하고 프로세서, 메모리, 그리고 저장 공간을 각각에 할당할 수 있습니다.
    • VM은 가상 서버, 가상 서버 인스턴스, 가상 프라이빗 서버로 불리기도 한다.

    컨테이너란 무엇인가

    컨테이너는 더 경량이고, 가상화를 다루는 더 애자일한 방식이다. 왜냐면 하이퍼바이저를 사용하지 않기 때문이다. 따라서 더 빠른 리소스 프로비저닝과 더 빠른 애플리케이션의 가용성을 누릴 수 있다.

    전체 가상 머신을 생성하는 대신, 컨테이너화는 단일 애플리케이션이나 마이크로서비스를 실행하기 위해 필요한 모든 것(실행에 필요한 런타임 라이브러리와 함께)을 패키징한다. 컨테이너는 모든 코드, 의존성 그리고 운영체제 그 자체를 포함한다. 이는 애플리케이션이 거의 모든 곳 - 데스크탑 컴퓨터, 전통적인 IT 인프라 혹은 클라우드

    컨테이너는 OS 가상화의 형태를 사용한다. 간단히 말하자면, 프로세스를 격리하고 프로세스의 CPU, 메모리, 디스크 스페이스에 대한 접근을 제어하기 위해 호스트 운영 체제의 기능을 활용한다.

    Container vs VMs : 차이점은?

    전통적인 가상화에서 하이퍼바이저는 물리 하드웨어를 가상화했다. 이 결과로 인해 각 가상 머신은 게스트 운영체제, 운영체제가 실행되기 위해 필요한 가상 하드웨어의 복사본, 그리고 응용 프로그램 및 관련된 라이브러리와 종속성을 포함하게 된다. 다른 운영체제를 갖는 VM은 동일한 물리 서버에서 실행될 수 있다. 예를 들어, VMware VM은 Linux VM, Microsoft VM과 함께 실행될 수 있다.

    기반 하드웨어를 가상화하는 대신 컨테이너는 운영체제를 가상화하여 개별 컨테이너가 오직 애플리케이션과 애플리케이션의 라이브러리, 의존성만 포함할 수 있도록 한다. 컨테이너는 작고, 빠르고, 이식성이 높다. 왜냐면, 가상 머신과 달리 컨테이너는 게스트 OS를 모든 인스턴스에 포함할 필요가 없기 때문이다. 대신, host os의 기능과 리소스를 활용한다.

    왜 컨테이너일까?

    여전히 VM을 사용하는 많은 이유가 있지만, 컨테이너는 멀티클라우드 환경에 완벽한 유연성과 이식성을 제공한다. 개발자가 새로운 애플리케이션을 만들 때, 그들은 어느 곳에 배포될지 신경쓸 필요가 없다. 오늘날 어떤 기관은 애플리케이션을 프라이빗 클라우드에 배포하다 갑자기 다른 프로바이더의 퍼블릭 클라우드에 배포할 수 도 있다. 애플리케이션을 컨테이너화 하는 것은 팀에 유연성을 준다.

    멀티 클라우드에서 컨테이너 관리하기

    큰 엔터프라이즈 애플리케이션은 수많은 컨테이너를 포함할 수 있고, 컨테이너 관리는 팀에게 굉장히 중요한 문제가 된다. 어떤 컨테이너가 어디서 실행되는지 가시성을 어떻게 확보할 수 있을까? 보안과 컴플라이언스와 같은 중요한 문제는 어떻게 처리할까? 애플리케이션을 어떻게 일관되게 관리할 수 있을까?

    대부분의 기업은 k8s와 같은 오픈소스 솔루션으로 향하고 있고, k8s는 이미 대다수의 기관에서 사용 중이다.

     

    https://www.ibm.com/blog/containers-vs-vms/

Designed by Tistory.