티스토리 뷰

Cloud

클라우드 가상화 비율

naleejang 2021. 6. 3. 23:52

요 근래에 고객사에서 프로젝트를 하면서 클라우드 가상화 비율에 대해 고민을 한 적이 있다. 요즘에는 클라우드 하면 가상머신과 컨테이너 기반의 오픈스택이나 쿠버네티스와 같은 환경을 클라우드 서비스라고 한다. 가상머신 서비스(*가상머신 서비스를 컴퓨트 서비스라 부르기도 함)를 제공하는 오픈스택과 컨테이너 서비스를 하는 쿠버네티스는 비슷하면서 성격이 매우 다르다고 볼 수 있다. 

가상머신(컴퓨트) 서비스  - 오픈스택

가상머신을 제공하는 컴퓨트 서비스인 오픈스택은 일반적으로 모든 클라우드 자원을 사용하지 않는다는 특성이 있다. 예를 들어 특정 컴퓨트 노드에 10개의 가상 머신을 생성했다면 여기서 실제로 호스트 노드의 자원을 사용하는 가상머신은 10개 중 5개라고 가정을 하는것이다. 따라서, 효율적으로 가상자원을 사용하기 위해 CPU와 같은 자원을 하이퍼쓰레딩하고 가상화비율을 많이 높여 사용한다.

컨테이너 서비스  - 쿠버네티스

컨테이너 서비스인 쿠버네티스는 구글 클라우드 서비스를 제공하는 구글에서 만들어진 오픈소스이다. 컨테이너는 가상머신과는 다르게 호스트 노드의 커널을 이용하여 어플리케이션을 띄우기 때문에 상당히 가볍고 이식성이 뛰어나다. 한마디로 말해 베어메탈이든, 가상머신이든 가리지 않고 리눅스 운영체제만 있으면 어디서든지 사용할 수 있다. 그래서, 컨테이너는 가상화를 고려하지 않는다. 그냥 호스트에서 제공하는 자원을 사용한다. 

클라우드 서비스의 가상화 비율

그럼, 여기서 이런 의문이 들기 시작한다. 클라우드 서비스인 오픈스택은 가상화 비율을 적용하여 자원을 좀 더 효율적으로 사용할 수 있다고 한다. 그러면 어떻게 하면 자원을 효율적으로 사용할 수 있을까? 그러기 위해서 가상화 비율은 어떻게 적용하는게 가장 좋을까? 우선 클라우드 서비스를 어떤 목적으로 사용할지를 알아야 한다고 생각한다. 클라우드 서비스에서 제공하는 가상머신 위에 쿠버네티스 서비스가 올라가는지  아니면 일반적인 웹 서비스가 올라가는지 또는 매우 복잡한 통계나 비지니스 로직이 포함된 어플리케이션이 올라가는지에 따라 요구되는 가상머신의 성능과 자원이 달라진다. 그럼, 일반적인 어플리케이션이 올라가는 클라우드 서비스라고 가정을 하고, 클라우드 서비스의 가장 효율적인 가상화 비율을 한번 찾아 보도록 하겠다. 이건 지극히 개인적인 아이디어에서 나온 방법이므로 더 좋은 방법이 있다면 그 방법으로 클라우드 서비스를 사용하면 된다.

효율적인 가상화 비율을 찾기 위해 필요한 요소들

효율적인 가상화 비율을 찾기 위해서는 가상머신을 만들기 위한 Flavor(가상머신 사양) 종류와 하드웨어 스팩이 필요하다. 예를 들어 아래와 같이 일반적으로 많이 사용하는 표준 Flavor들과 메모리를 많이 사용하는 경우의 메모리 최적화용 Flavor가 있다고 가정하자.

그리고, 아래와 같은 스팩을 가진 하드웨어가 있다고 가정하자.

  • 컴퓨트 1 - CPU 16 Cores, 512 GB
  • 컴퓨트 2 - CPU 40 Cores, 576 GB

일반적으로 클라우드 서비스를 사용할 경우에는 호스트 자원의 70% 이하를 사용한다.  그리고, 여기에 CPU 가상화율을 하이퍼쓰레드 적용부터 4:1까지를 계산해보면 아래와 같이 계산이 된다.

효율적인 가상화 비율 찾기

자 이제 이 두가지 요소를 가지고 효율적으로 사용할 수 있는 가상화 비율을 찾아보도록 하자~!! 먼저 Compute1 과 같은 사양의 하드웨어로 구성이 되어 있을 경우를 먼저 계산해 보면 일반 표준 Flavor를 사용할 경우 메모리를 가장 효율적으로 사용하기 위해서는  xlarge(CPU 4, Memory 16) 스팩의 가상머신을 22개 만들 수 있는 CPU 가상화율 4:1을 사용하는것이 가장 효율적이다. 그런데, High Memory용 Flavor를 사용하면 CPU 가상화율을 2:1로 했을경우 메모리를 가장 효율적으로 사용할 수 있다.

그래서, 이와 같은 하드웨어 스팩(CPU - 16 cores, Memory - 512 GB) 을 사용할 경우에는 메모리를 많이 사용하는 인스턴스를 배치하여 사용하는 것이 좋다는 결론이 나온다. 그리고, 가상화 비율을 2:1을 사용하는 것이 좋다는 것도 알 수 있다. 

이번에는 Compute2와 같은 하드웨어 스팩(CPU - 40 cores, Memory - 576 GB)을 표준 Flavor와 High Memory Flavor를 사용하는 경우를 살펴보자. 이 같은 경우에는 표준 Flavor를 사용할 경우에는 xlarge(CPU 4, Memory 16) 를 사용하는 가상 머신을 50개 생성할 수 있는 CPU 가상화 2:1을 사용하는 것이 메모리를 가장 효율적으로 사용하는 방법이며, High Memory Flavor를 사용할 경우에는 단순히 하이퍼쓰레드만 적용해도 메모리를 효율적으로 사용할 수 있음을 알 수 있다. 

결론

클라우드 서비스에서 가장 효율적인 가상화율을 찾기 위해서는 가상머신 위에 어떤 서비스가 올라가는지를 반드시 알아야 하며, 가상 자원은 호스트 서버 자원의 70%를 넘지 말아야 한다. 그리고, CPU와 메모리 비율에 따라 어떤 Flavor 정책을 가져갈 것인지 아니면 주로 사용하는 Flavor를 조사해 어떻게 가상화 비율을 가져가면 메모리를 가장 효율적으로 사용할 수 있는지를 계산해 보는것이 가장 좋은 클라우드 자원 사용 방법이 아닐까? 라는 생각을 해 본다. 물론 고성능을 원한다면 가상화를 안쓰는것이 가장 좋은 방법이지 않을까?

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함