2018.07.13

서버 가상화의 미래 : 컨테이너 및 서버리스 비교 진단

Neal Weinberg | Network World
서버 가상화는 개념은 간단하지만 기업 데이터센터에 미치는 영향은 큰 기술 중 하나다. 서버당 운영체제 인스턴스 하나와 애플리케이션 하나를 실행하는 대신 여러 운영체제 인스턴스 및 관련 워크로드를 하나의 실제 서버에서 실행할 수 있게 해주는 소프트웨어 계층, 즉 하이퍼바이저를 추가할 수 있다면 어떨까?

이 생각이 서버 가상화의 기원이며 그 유래는 1960년대 IBM 메인프레임 시대까지 거슬러 올라간다. 서버 가상화가 보편화된 것은 2000년대 초반 VM웨어가 x86 서버를 위한 가상화 소프트웨어를 출시하면서부터다. 이후 다른 여러 업체에서도 자체 서버 가상화 플랫폼을 개발했고 업계 전반적으로 가상머신(Virtual Machine) 워크로드의 배포, 이동, 관리를 쉽게 해주는 고급 관리, 자동화 및 오케스트레이션 툴이 탄생했다.

Image Credit : GettyImagesBank

서버 가상화 이전, 기업은 무질서한 서버 증설과 제대로 활용되지 못하는 컴퓨팅 성능, 치솟는 전력 요금에 시달렸으며, 데이터센터 환경에는 수동 프로세스와 전반적인 비효율성, 경직성이 만연했다.

서버 가상화는 이러한 모든 상황을 바꿔 놓았고 광범위하게 도입됐다. 사실 오늘날 대부분의 워크로드를 VM 환경에서 실행하지 않는 기업을 찾기 어려울 정도다.

그러나 모두가 알다시피 그 다음 큰 물결에 밀려나지 않는 기술이란 없다. 서버 가상화의 경우 다음 큰 물결은 소형화다. 서버 가상화는 실제 디바이스를 가상으로 잘게 나눠서 여러 운영체제와 여러 애플리케이션이 기반 컴퓨팅 파워를 끌어 쓸 수 있도록 한다.

컴퓨팅의 다음 변화는 애플리케이션을 가벼운 컨테이너에서 실행되는 더 작은 마이크로서비스로 나누는 것, 그리고 아직 실험 중이지만 서버리스 컴퓨팅(또는 함수 서비스(FaaS)라고도 함)이다.

두 가지 시나리오 모두 VM을 완전히 생략하고 베어 메탈에서 코드를 실행한다.

서버 가상화의 혜택
서버 가상화는 기본적인 서버 통합부터 시작해 많은 혜택을 제공한다. 여러 애플리케이션을 하나의 하드웨어에 결합해서 데이터센터에 필요한 총 서버의 수를 줄인다. 서버가 줄어들면 랙과 네트워킹 장비가 줄어든다. 결과적으로 물리적 공간부터 유지보수, 냉각 비용에 이르기까지 모든 요소에서 비용 절감 효과를 얻게 된다.

서버 가상화는 신규 하드웨어를 위한 자본 지출의 필요성을 줄이고 끊임없는 하드웨어 갱신의 고리에서 벗어나게 해준다. 또한 여분으로 남게 된 서버를 재배포할 수도 있다.

데이터센터 관리자가 수동으로 서버를 프로비저닝했던 때를 기억하는가? 서버 가상화와 함께 자동화도 발전했다. 이제는 몇 초 만에 VM을 가동하고, 변화하는 비즈니스 요구에 따라 복수의 워크로드를 버튼 조작 한 번으로 옮길 수 있게 됐다.

서버 가상화는 고도로 연결된 오늘날의 웹 기반 비즈니스가 요구하는 높은 가용성, 내장애성, 속도, 확장성, 민첩성, 성능, 유연성도 제공한다. 또한 기반 기술로서 클라우드 컴퓨팅 업체가 서비스를 제공하는 밑바탕이기도 하다. 클라우드 서비스 제공업체에 인프라 서비스(IaaS)를 주문하는 고객은 먼저 VM으로 시작하고, 당면한 과제를 해결하기 위해 필요한 관련 스토리지, 관리 및 보안 기능을 추가한다.

서버 가상화의 다양한 유형
서버 가상화 세계에서 실제 서버는 호스트로 불리며 호스트 운영체제를 실행한다. 각 VM은 게스트이며 게스트 운영체제를 실행한다. 게스트는 상호 분할된다.

- 표준 하이퍼바이저 기반 가상화에서 하이퍼바이저 또는 가상머신 모니터(VMM)는 호스트 OS와 기반 하드웨어 계층 사이에 위치하며 게스트 OS에 필요한 리소스를 제공한다.
- 반가상화와 완잔 가상화는 가상 머신에 설치하기에 앞서 게스트 운영체제를 수정한다. 수정된 게스트 운영체제는 하이퍼바이저와 직접 통신하여 에뮬레이션 오버헤드를 제거하므로 성능이 향상된다.
- 하드웨어 지원 가상화는 하이퍼바이저 오버헤드도 낮추지만 그 수단은 소프트웨어 수정이 아닌 하드웨어 확장이다.
- 커널 수준 가상화에서는 하이퍼바이저를 사용하는 대신 개별 버전의 리눅스 커널을 실행한다. 이 경우 단일 호스트에서 여러 가상머신을 쉽게 실행할 수 있으며, 주 리눅스 커널과 가상머신 간의 통신에는 디바이스 드라이버가 사용된다.
- 마지막으로, 시스템 수준 또는 OS 가상화를 통해 여러 개의, 그러나 논리적으로 구분되는 환경을 하나의 운영체제 커널 인스턴스에서 실행할 수 있다. 시스템 수준 가상화에서는 모든 VM이 동일한 운영체제 사본을 공유해야 하며 서버 가상화에서는 여러 VM이 여러 운영체제를 사용하도록 허용된다.

가상머신 vs. 컨테이너
컨테이너화를 이끄는 두 가지 주도적인 힘은 컨테이너 가동에 널리 사용되는 툴인 도커, 그리고 여러 컨테이너를 관리하는 데 도움이 되는 구글 쿠버네티스다. 컨테이너는 호스트 OS의 커널을 공유하는 독립적인 코드 실행 환경이다.

컨테이너는 중복 게스트 OS 및 관련 시작 오버헤드를 건너뛰므로 VM에 비해 더 능률적이고 가볍다. 개발자는 동일한 하드웨어에서 VM에 비해 6~8배 더 많은 컨테이너를 실행할 수 있다.

컨테이너에도 단점은 있다. 비교적 새로운 접근 방법이므로 성숙한 기술에서 흔히 볼 수 있는 풍부한 관리 툴이 없고 따라서 설정과 유지보수 작업이 많이 필요하다. 또한 보안에 대한 우려도 있다.

VM에서는 게스트 이미지를 사용해서 호스트에서 호스트로 손쉽게 워크로드를 옮길 수 있지만 베어 메탈은 업그레이드와 이동이 더 어렵다. 베어 메탈 서버에서는 머신 상태 롤백이 쉽지 않은 일이다.

가상머신 vs. 서버리스 컴퓨팅
전통적인 IaaS 클라우드 환경에서 고객은 먼저 VM, 스토리지, 데이터베이스, 관련 보안 및 관리 툴을 프로비저닝한 다음 VM에 애플리케이션을 로드한다.

서버리스 컴퓨팅에서는 개발자가 코드를 쓰고 클라우드 서비스 제공업체가 나머지 모든 부분을 처리한다. 개발자는 서버, 운영체제, 프로비저닝 또는 관리에 대해 생각할 필요가 없다. 물론 코드를 실행하는 실제 서버가 있지만 이는 클라우드 서비스 제공업체의 책임이다.

모놀리식 애플리케이션 대신 코드는 구체적인 함수로 세분화된다. 그 함수를 트리거하는 이벤트가 발생하면 서버리스 서비스(예를 들어 아마존 람다(Lambda))가 함수를 실행한다. 서버리스 제공업체는 함수별로 고객에게 비용을 청구한다.

마이크로서비스/컨테이너 시나리오와 마찬가지로, 서버리스 컴퓨팅은 가상머신 계층을 건너뛰며 함수는 베어 메탈에서 실행된다. 현재 시점에서 서버리스 컴퓨팅은 비교적 미성숙한 기술이며 사용 사례도 제한적이다.

서버 가상화의 미래
컨테이너가 인기를 얻고 서버리스 컴퓨팅에 대한 관심이 커지고 있지만, 현실은 서버 가상화가 견고한 기술로서 대다수 기업 애플리케이션을 구동하고 있다는 것이다. 일부에서는 VM 포화도를 최대 90%까지 추산하기도 한다.

기업에서는 VM에서 원활하게 실행되고 있는 미션 크리티컬 애플리케이션을 굳이 컨테이너 또는 서버리스 플랫폼으로 옮길 필요가 없다. 컨테이너는 모두 동일한 OS에서 실행해야 하며 리눅스와 윈도우의 혼합이 불가능하므로 이기종 환경의 사용자들은 VM을 계속 사용할 가능성이 높다.

다만 최신 데브옵스 및 애자일 방법론으로 개발되는 새로운 애플리케이션의 경우 개발자들에게 선택권이 있다. 앞으로 개발자들은 새로운 워크로드를 전통적인 VM에서 실행할지, 아니면 컨테이너 또는 서버리스 환경에서 실행할지를 각 사례별로 결정하게 될 것이다.  editor@itworld.co.kr


2018.07.13

서버 가상화의 미래 : 컨테이너 및 서버리스 비교 진단

Neal Weinberg | Network World
서버 가상화는 개념은 간단하지만 기업 데이터센터에 미치는 영향은 큰 기술 중 하나다. 서버당 운영체제 인스턴스 하나와 애플리케이션 하나를 실행하는 대신 여러 운영체제 인스턴스 및 관련 워크로드를 하나의 실제 서버에서 실행할 수 있게 해주는 소프트웨어 계층, 즉 하이퍼바이저를 추가할 수 있다면 어떨까?

이 생각이 서버 가상화의 기원이며 그 유래는 1960년대 IBM 메인프레임 시대까지 거슬러 올라간다. 서버 가상화가 보편화된 것은 2000년대 초반 VM웨어가 x86 서버를 위한 가상화 소프트웨어를 출시하면서부터다. 이후 다른 여러 업체에서도 자체 서버 가상화 플랫폼을 개발했고 업계 전반적으로 가상머신(Virtual Machine) 워크로드의 배포, 이동, 관리를 쉽게 해주는 고급 관리, 자동화 및 오케스트레이션 툴이 탄생했다.

Image Credit : GettyImagesBank

서버 가상화 이전, 기업은 무질서한 서버 증설과 제대로 활용되지 못하는 컴퓨팅 성능, 치솟는 전력 요금에 시달렸으며, 데이터센터 환경에는 수동 프로세스와 전반적인 비효율성, 경직성이 만연했다.

서버 가상화는 이러한 모든 상황을 바꿔 놓았고 광범위하게 도입됐다. 사실 오늘날 대부분의 워크로드를 VM 환경에서 실행하지 않는 기업을 찾기 어려울 정도다.

그러나 모두가 알다시피 그 다음 큰 물결에 밀려나지 않는 기술이란 없다. 서버 가상화의 경우 다음 큰 물결은 소형화다. 서버 가상화는 실제 디바이스를 가상으로 잘게 나눠서 여러 운영체제와 여러 애플리케이션이 기반 컴퓨팅 파워를 끌어 쓸 수 있도록 한다.

컴퓨팅의 다음 변화는 애플리케이션을 가벼운 컨테이너에서 실행되는 더 작은 마이크로서비스로 나누는 것, 그리고 아직 실험 중이지만 서버리스 컴퓨팅(또는 함수 서비스(FaaS)라고도 함)이다.

두 가지 시나리오 모두 VM을 완전히 생략하고 베어 메탈에서 코드를 실행한다.

서버 가상화의 혜택
서버 가상화는 기본적인 서버 통합부터 시작해 많은 혜택을 제공한다. 여러 애플리케이션을 하나의 하드웨어에 결합해서 데이터센터에 필요한 총 서버의 수를 줄인다. 서버가 줄어들면 랙과 네트워킹 장비가 줄어든다. 결과적으로 물리적 공간부터 유지보수, 냉각 비용에 이르기까지 모든 요소에서 비용 절감 효과를 얻게 된다.

서버 가상화는 신규 하드웨어를 위한 자본 지출의 필요성을 줄이고 끊임없는 하드웨어 갱신의 고리에서 벗어나게 해준다. 또한 여분으로 남게 된 서버를 재배포할 수도 있다.

데이터센터 관리자가 수동으로 서버를 프로비저닝했던 때를 기억하는가? 서버 가상화와 함께 자동화도 발전했다. 이제는 몇 초 만에 VM을 가동하고, 변화하는 비즈니스 요구에 따라 복수의 워크로드를 버튼 조작 한 번으로 옮길 수 있게 됐다.

서버 가상화는 고도로 연결된 오늘날의 웹 기반 비즈니스가 요구하는 높은 가용성, 내장애성, 속도, 확장성, 민첩성, 성능, 유연성도 제공한다. 또한 기반 기술로서 클라우드 컴퓨팅 업체가 서비스를 제공하는 밑바탕이기도 하다. 클라우드 서비스 제공업체에 인프라 서비스(IaaS)를 주문하는 고객은 먼저 VM으로 시작하고, 당면한 과제를 해결하기 위해 필요한 관련 스토리지, 관리 및 보안 기능을 추가한다.

서버 가상화의 다양한 유형
서버 가상화 세계에서 실제 서버는 호스트로 불리며 호스트 운영체제를 실행한다. 각 VM은 게스트이며 게스트 운영체제를 실행한다. 게스트는 상호 분할된다.

- 표준 하이퍼바이저 기반 가상화에서 하이퍼바이저 또는 가상머신 모니터(VMM)는 호스트 OS와 기반 하드웨어 계층 사이에 위치하며 게스트 OS에 필요한 리소스를 제공한다.
- 반가상화와 완잔 가상화는 가상 머신에 설치하기에 앞서 게스트 운영체제를 수정한다. 수정된 게스트 운영체제는 하이퍼바이저와 직접 통신하여 에뮬레이션 오버헤드를 제거하므로 성능이 향상된다.
- 하드웨어 지원 가상화는 하이퍼바이저 오버헤드도 낮추지만 그 수단은 소프트웨어 수정이 아닌 하드웨어 확장이다.
- 커널 수준 가상화에서는 하이퍼바이저를 사용하는 대신 개별 버전의 리눅스 커널을 실행한다. 이 경우 단일 호스트에서 여러 가상머신을 쉽게 실행할 수 있으며, 주 리눅스 커널과 가상머신 간의 통신에는 디바이스 드라이버가 사용된다.
- 마지막으로, 시스템 수준 또는 OS 가상화를 통해 여러 개의, 그러나 논리적으로 구분되는 환경을 하나의 운영체제 커널 인스턴스에서 실행할 수 있다. 시스템 수준 가상화에서는 모든 VM이 동일한 운영체제 사본을 공유해야 하며 서버 가상화에서는 여러 VM이 여러 운영체제를 사용하도록 허용된다.

가상머신 vs. 컨테이너
컨테이너화를 이끄는 두 가지 주도적인 힘은 컨테이너 가동에 널리 사용되는 툴인 도커, 그리고 여러 컨테이너를 관리하는 데 도움이 되는 구글 쿠버네티스다. 컨테이너는 호스트 OS의 커널을 공유하는 독립적인 코드 실행 환경이다.

컨테이너는 중복 게스트 OS 및 관련 시작 오버헤드를 건너뛰므로 VM에 비해 더 능률적이고 가볍다. 개발자는 동일한 하드웨어에서 VM에 비해 6~8배 더 많은 컨테이너를 실행할 수 있다.

컨테이너에도 단점은 있다. 비교적 새로운 접근 방법이므로 성숙한 기술에서 흔히 볼 수 있는 풍부한 관리 툴이 없고 따라서 설정과 유지보수 작업이 많이 필요하다. 또한 보안에 대한 우려도 있다.

VM에서는 게스트 이미지를 사용해서 호스트에서 호스트로 손쉽게 워크로드를 옮길 수 있지만 베어 메탈은 업그레이드와 이동이 더 어렵다. 베어 메탈 서버에서는 머신 상태 롤백이 쉽지 않은 일이다.

가상머신 vs. 서버리스 컴퓨팅
전통적인 IaaS 클라우드 환경에서 고객은 먼저 VM, 스토리지, 데이터베이스, 관련 보안 및 관리 툴을 프로비저닝한 다음 VM에 애플리케이션을 로드한다.

서버리스 컴퓨팅에서는 개발자가 코드를 쓰고 클라우드 서비스 제공업체가 나머지 모든 부분을 처리한다. 개발자는 서버, 운영체제, 프로비저닝 또는 관리에 대해 생각할 필요가 없다. 물론 코드를 실행하는 실제 서버가 있지만 이는 클라우드 서비스 제공업체의 책임이다.

모놀리식 애플리케이션 대신 코드는 구체적인 함수로 세분화된다. 그 함수를 트리거하는 이벤트가 발생하면 서버리스 서비스(예를 들어 아마존 람다(Lambda))가 함수를 실행한다. 서버리스 제공업체는 함수별로 고객에게 비용을 청구한다.

마이크로서비스/컨테이너 시나리오와 마찬가지로, 서버리스 컴퓨팅은 가상머신 계층을 건너뛰며 함수는 베어 메탈에서 실행된다. 현재 시점에서 서버리스 컴퓨팅은 비교적 미성숙한 기술이며 사용 사례도 제한적이다.

서버 가상화의 미래
컨테이너가 인기를 얻고 서버리스 컴퓨팅에 대한 관심이 커지고 있지만, 현실은 서버 가상화가 견고한 기술로서 대다수 기업 애플리케이션을 구동하고 있다는 것이다. 일부에서는 VM 포화도를 최대 90%까지 추산하기도 한다.

기업에서는 VM에서 원활하게 실행되고 있는 미션 크리티컬 애플리케이션을 굳이 컨테이너 또는 서버리스 플랫폼으로 옮길 필요가 없다. 컨테이너는 모두 동일한 OS에서 실행해야 하며 리눅스와 윈도우의 혼합이 불가능하므로 이기종 환경의 사용자들은 VM을 계속 사용할 가능성이 높다.

다만 최신 데브옵스 및 애자일 방법론으로 개발되는 새로운 애플리케이션의 경우 개발자들에게 선택권이 있다. 앞으로 개발자들은 새로운 워크로드를 전통적인 VM에서 실행할지, 아니면 컨테이너 또는 서버리스 환경에서 실행할지를 각 사례별로 결정하게 될 것이다.  editor@itworld.co.kr


X