좀 더 저렴하게 사용하는 Google Cloud Platform(GCP)

이정운 (Jungwoon Lee)
12 min readMay 12, 2019

--

안녕하세요 이정운 입니다.

Google cloud 를 쓰면서 활용도가 가장 높고 많이 사용되는 서비스 중의 하나는 일반적인 IaaS 개념으로 OS 가 포함된 VM 만 제공되고 자유롭게 해당 OS 위에서 필요한 소프트웨어와 컴포넌트를 설치해서 활용할 수 있는 Google Compute Engine(GCE) 일듯합니다. 이러한 GCE 는 가장 많이 활용되기 때문에 다양한 가격정책을 가지고 있으며 정책의 특성을 고려한 선택을 잘 하게된다면 예상하신 것보다 조금 더 비용을 줄일 수 있습니다. 특히나 GCE 기반의 GKE(Google Kubernetes Engine) 나 Cloud Dataproc(Cloud-native Apache Hadoop & Apache Spark) 도 동일 할인 조건이 적용될 수 있으므로 꼼꼼히 확인해보시기 바라겠습니다.

https://cloud.google.com/pricing/?hl=ko

상단의 링크에 아주 자세히 각각의 가격정책과 이점이 잘 설명되어 있지만 그냥 읽어만 보면 실제 쓰는 사용자 입장에서는 조금 헷갈리는 부분이 있을수 있어서 이번 기회에 조금 더 자세하게 정리해보려고 합니다.

#1) 지속 사용 할인(Sustained Use Discounts)

지속 사용 할인은 말 그대로 별도의 정책을 사용하지 않고도 GCE를 사용하기만 하면 최대 30% 를 할인해주는 Google Cloud 만의 독특하고 간편한 할인 정책입니다. 조금 더 쉽게 말하면, GCE를 생성하고 한 달 간만 사용하면 알아서 자동적으로 30% 를 할인해주는 정책입니다.

https://cloud.google.com/compute/docs/sustained-use-discounts?hl=ko

https://cloud.google.com/pricing/innovation?hl=ko

여기에 덧붙여 Google Cloud 를 사용하다보면 GCE를 하나가 아니라 여러대 사용하게 되고 각 GCE가 저마다 다른 코어를 가지고 있을 수 있으며, 사용 기간도 저마다 달라질 수 있습니다. 이런 환경에서는 한 달 동안 사용되지 않은 GCE가 있거나 중간에 코어를 증가했다면 지속 사용 할인을 받지 못한다고 생각할 수도 있을 텐데 Google 은 친절하게도 이런 상황에서도 지능적으로 알아서 계산하여 할인을 해줍니다.

예를 들어, 한 달을 4주라고 가정하면 4 Core 짜리 GCE 를 2주 쓰다가 다음 2주에는 8 Core 짜리 GCE 를 사용했다면 이를 Google 이 지능적으로 계산해서 4 Core 를 한달간 쓴 것으로 인정하여 4 Core 에 대해서는 30% 할인을 해주고 나머지 4 Core 에 대해서는 2주간 지속 사용에 따른 할인을 해주는 구조입니다.

지속 사용 할인의 가장 큰 장점은 어떤한 사전 계약도 제약도 없이 자유롭게 쓰면 된다는 점입니다. 아무 고민 하지 않아도 Google 이 쓴만큼 알아서 할인해주는 나름 똑똑하고 편한(?) 할인 정책입니다.

#2) 약정 사용 할인(Committed Use Discounts)

여기서 말하는 약정 사용 할인은 관리 콘솔에서 바로 사용량을 1년 또는 3년으로 약정하여 구매하는 대신에 좀 더 큰 할인을 제공받는 프로그램으로 조건에 따라 최대 57% 할인을 받을 수 있는 정책입니다. (메모리가 최적화된 머신 유형의 할인은 최대 70%입니다.)

약정 사용 할인은 사전 정의된 머신 유형과 커스텀 머신 유형을 비롯하여 모든 Compute Engine 내 비공유 코어 머신 유형에 적용됩니다.(단, 약정 사용 할인의 대상이 되면 지속 사용 할인을 받지는 못합니다.)

약정 사용 할인은 다음과 같은 특징이 있습니다.

https://cloud.google.com/compute/docs/instances/signing-up-committed-use-discounts?hl=ko

  • 간단하고 유연함: 할인이 지역 내 vCPU 또는 메모리의 총 수에 적용되므로(리소스 기반) 인스턴스 머신 유형의 변경에 영향을 받지 않음
  • 선불 비용 없음: 약정 사용 할인에는 선불 비용(upfront charge)이 없음. 약정 사용 할인은 매월 청구서에 적용됨

이를 조금 더 자세히 설명 드리자면, 약정 사용 할인은 하단과 같이 GCP 관리 콘솔의 “Compute Engine > 약정 사용 할인” 메뉴에서 바로 약정을 구매 가능합니다.

여기서 잘 보시면 아실 수 있듯이, Google Cloud 의 약정 할인은 구매할 머신 모델 타입을 선택하는 것이 아니라 CPU 코어와 메모리 수와 같은 자원을 선택한다는 것이며 리전(region) 단위로 구매할 수 있다는 것 입니다. 다시 말해, 특정 모델 타입을 지정하는 것이 아니라 보다 유연하게 내가 선택한 CPU 코어와 메모리같은 리소스 단위를 대상으로 1년 또는 3년 약정 사용 할인 정책을 적용받게 됩니다.

이해를 돕기 위하여 공식 메뉴얼에 나와있는 하나의 예를 들어보도록 하겠습니다.

  • 10 custom machine type vCPUs
  • 30 GB of custom machine type memory
  • 2 n1-standard-4 predefined machine types

여기서 약정 사용을 위해 vCPU 코어 15개와 13.5GB 메모리를 구매 했다고 가정하면, 약정 사용 할인은 먼저 custom machine type 에 적용되고, 나머지 할인이 pre-defined machine type 에 적용됩니다.

이 경우 커스텀 머신 유형의 vCPU 10개 모두 약정 사용 가격으로 청구되며, 커스텀 머신 유형 메모리 13.5GB도 약정 사용 가격으로 청구됩니다. 약정 사용의 나머지 vCPU 5개는 n1-standard-4 머신 유형 2개에서 임의의 vCPU 5개에 적용됩니다. 뿐만 아니라, 약정 사용이 적용되지 않는 리소스는 기 언급한 지속 사용 할인(SUD)을 적용 받게 됩니다.

결국은 매달 GCE 에 대한 요구 사항이 변경되고 (예 : 영역, 시스템 유형, 운영 체제), 타입 및 위치(동일 region 내 zone)가 변경되더라도, 연간 총 소비량은 변동이 없다면 약정 사용 할인 정책을 적용할 경우 사용 패턴이 다르다 할지라도 모두 동일한 할인을 받을 수 있게 됩니다.

https://cloud.google.com/blog/products/gcp/committed-use-discounts-for-google-compute-engine-now-generally-available

#3) 커스텀 머신 타입(Custom Machine Types)

커스텀 머신 타입은 클라우드 서비스 제공자가 지정한 표준 VM 타입을 선택하는 것이 아닌, 사용자가 원하는 대로 코어와 메모리 사양을 자유롭게 선택하여 사용할 수 있는 GCE 의 VM 모델입니다.

이것을 왜 할인 정책 범주에 포함했는지 의문이 있으실 분도 있을텐데, 일반적으로 코어와 메모리 사양이 지정된 표준 VM 타입의 경우 실제로 필요한 사양보다 높은 타입을 사용해야 하는 경우가 대부분입니다. 1 vCore 또는 1 GB 와 같은 사양으로 자유로운 선택이 되지않기 때문에 메모리가 많이 필요한 경우 더 높은 코어를 가지고 있는 VM 타입을 선택해야만해서 필요없는 자원을 낭비하게 되는 상황에 놓여지게 됩니다.

예를 들어, 최소 CPU 4 코어에 16GB 의 메모리가 필요하다면 n1-standard-4 가 4 코어에 메모리 15GB 를 제공하므로 이 타입으로 요구사항 충족이 안되므로 이보다 큰 n1-standard-8 타입을(8 코어에 메모리 30GB) 고려할 수 밖에 없는데 Google cloud 는 커스텀 타입이 있으므로 낭비없이 VM 에 그냥 CPU 4 코어에 16GB 의 메모리를 선택해서 활용할 수 있습니다.

커스텀 머신 타입을 통해 요구사항에 따라 맞춤화된 머신 유형을 손쉽게 생성할 수 있으며, 통계적으로 보면 최대 50%의 가격 할인 효과를 볼 수 있습니다 최소 1개 ~ 최대 64개의 범위에서 짝수의 vCPU를 갖춘 머신 유형을 자유롭게 생성이 가능하며, 메모리의 경우 vCPU당 최대 6.5GB의 RAM을 구성할 수 있습니다.

https://cloud.google.com/custom-machine-types/?hl=ko

#4) 선점형 VM 인스턴스(Preemptible VM Instances)

선점형 VM 인스턴스는 최대 24시간 밖에 유지될 수 없다는 단점이 있지만 일반 인스턴스보다 최대 80% 저렴한 가격으로 만들고 실행할 수 있는 인스턴스 입니다. 아마도 A사의 Spot 인스턴스와 유사한 개념이라고 생각하면 금방 이해하실 듯 합니다. 다만, 타사와 다르게 Google 의 선점형 VM 인스턴스는 경매 방식이 아니라 가격이 정해져 있는 형태로 가격 예측 가능성이 더 높은 형태로 구성되어 있습니다.

https://cloud.google.com/preemptible-vms/

사용자의 애플리케이션에 내결함성이 적용되어 잠재적인 인스턴스 선점(종료)을 견딜 수 있다면 선점형 VM 인스턴스를 통해 GCE 비용을 크게 절감할 수 있습니다. 예를 들어 일괄 처리 작업을 선점형 인스턴스에서 실행할 수 있는데 처리 과정에서 일부 선점형 인스턴스가 종료되어도 작업이 느려지긴 하겠지만 완전히 중단되지는 않습니다.

또는, GKE 의 cluster 구성에서 GCE 일반 인스턴스로 구성된 node pool 과 선점형 VM 인스턴스로 구성된 node pool 을 적절히 분배해서 사용하면 훨씬 저렴한 예산으로 더 높은 컴퓨팅 파워를 활용할 수 있습니다.

https://medium.com/pixboost/save-cash-by-running-kubernetes-services-on-preemptible-vms-in-google-cloud-cca02809ae09

선점형 VM 인스턴스는 필요한 경우 선점형 GPU 나 선점형 TPU 를 추가할 수도 있습니다.

  • GCE 는 언제나 선점형 인스턴스를 24시간 동안 실행한 후에 종료합니다. (특정 작업은 이 24시간 카운터를 재설정)
  • GCE 는 시스템 이벤트가 발생하면 언제든 선점형 인스턴스를 종료할 수 있습니다. (종료전에 알림을 받을 수 있음)
  • 종료 스크립트를 사용해 알림을 처리하고 인스턴스가 중지되기 전에 정리 작업을 완료할 수 있습니다.
  • 인스턴스가 30초 후에 중지되지 않으면 GCE 는 시그널을 운영체제에 전송하여 TERMINATE 합니다.

#5) 대량 약정 구매

GCE 를 포함하여 Google Cloud Platform의 사용량이 많을 것으로 예상된다면, Google Cloud 영업팀과 직접 협의하여 기존에 언급된 약정 할인과는 다르게 대량 구매를 위해서 오프라인으로 연간 단위의 약정을 맺을 수 있습니다. 대량 약정 구매의 가장 큰 장점은 Google Cloud 내 모든 상품을 특정 제약 없이 약정된 금액 & 할인율 내에서 자유롭게 사용할 수 있도록 되어있다는 것입니다.

예를 들어 약정이 되어 있는 금액만 맞추면 되는 조건이며 그안에서 GCE 를 써고 되고 Cloud SQL 이나 ML API 를 써도 되는등 자유도를 가지고 있다는 것입니다. 이러한 유연성을 가지고 있으면서도 정책적으로 약정된 금액에 따라 더 큰 할인을 받을 수 있습니다. 특히, 이것도 역시 선불 계약이 아니라 사용한 만큼 다음달에 청구되는 구조로 되어 있습니다.

여기까지해서 현재 Google cloud 에서 GCE 사용시 좀 더 저렴하게 사용할 수 있는 다양한 가격정책을 확인해봤으며 각 정책에 대한 예시를 통해서 좀 더 명확하게 이해할 수 있는 시간을 가져봤습니다. 기 언급했지만 GCE 기반의 GKE 나 Cloud Dataproc 도 같은 조건을 적용받을수 있으며 적절히 잘 활용되면 조금더 경제적으로 Google Cloud Platform 을 사용할 수 있지 않을까 합니다. 그럼 도움이 되었기를 바라며 이만 줄이도록 하겠습니다. 휘리릭~~~

추신 #1) 2019년 5월부터 GCE 뿐만 아니라 GPUs, local SSDs 에 대해서도 CUD 를 받을수 있는 기능이 추가되었습니다. 좀 더 자세한 사항이 궁금하신 분은 하단의 링크를 참고하세요.

* Disclaimer: 본 글의 작성자는 Google 직원이지만 Google cloud 를 공부하는 한 개인으로서 작성된 글입니다. 본 글의 내용, 입장은 Google 을 대변하지 않으며 Google 이 해당 콘텐츠를 보장하지 않습니다.

--

--

이정운 (Jungwoon Lee)

Technical engineer who dreams better future. (These thoughts are my own personal opinions, and do not reflect or represent Google’s opinions or plans.)