데이터 엔지니어링

GCP 비용 관리 및 최적화: 효과적인 클라우드 비용 관리 방법

들어가며

Google Cloud Platform(GCP)은 강력하고 유연한 클라우드 환경을 제공하지만, 잘못 관리하면 예상치 못한 높은 GCP 비용이 발생할 수 있습니다. 클라우드 환경에서 비용 관리와 최적화는 효율적인 운영의 핵심입니다. 이 글에서는 GCP에서 비용을 절감하고 안전하게 관리하기 위한 구체적인 전략과 팁을 소개하겠습니다.

비용 관리의 기초: 모니터링과 예산 설정

1. Billing Reports를 활용한 모니터링

GCP 콘솔의 Billing Reports는 비용 관리의 출발점입니다. Reports에서 제공하는 대시보드에서는 실시간 지출 상황과 서비스별 비용 비율을 한눈에 확인할 수 있습니다.

GCP 비용 대시보드

GCP Billing Report 로 비용 분석하기

  • Billing Reports 접근
    • GCP 콘솔에 로그인합니다.
    • 왼쪽 사이드바 메뉴에서 Billing을 선택합니다.
    • Reports를 클릭하여 대시보드로 이동합니다.
  • 대시보드 필터 설정
    • 프로젝트(Project): 특정 프로젝트에 대한 비용만 필터링하여 분석할 수 있습니다.
    • 서비스(Service): Compute Engine, BigQuery, Cloud Function 등 서비스별 비용을 확인합니다.
    • SKU: SKU는 서비스의 세부 항목을 나타냅니다. 예를 들어, Compute Engine의 vCPU 시간이나 BigQuery의 쿼리 처리량과 같은 항목을 말합니다.
    • 기간(Date): 원하는 날짜 범위를 설정하여 특정 기간의 비용 추이를 분석할 수 있습니다.
  • 차트 및 세부 데이터 분석
    • 대시보드에서 누적 비용 또는 일일 비용 추이를 확인할 수 있습니다.
    • 특정 기간 동안 급격히 증가한 비용을 찾아보고, 이를 발생시킨 SKU나 서비스를 식별합니다.
    • 각 필터의 값을 조합해 리전 단위, 서비스 단위, 특정 SKU 단위로 데이터를 상세히 분석합니다.

Reports에서는 원하는 프로젝트 서비스, SKU, 날짜 등의 옵션을 선택하여 원하는 단위의 비용을 확인할 수 있습니다. 또한 선택한 옵션 내에서 프로젝트 단위, 서비스 단위, 리전 단위 등으로 비용을 세분화하여 볼 수 있어 특정 서비스나 작업이 과도한 비용을 차지하는지 쉽게 파악할 수 있습니다.

또한, 그림과 같이 Reports는 날짜 단위로 대시보드에 표기됩니다. 따라서 매일 또는 매달 비용 변화 추이를 확인하여 불필요한 리소스 사용을 조기에 발견하고 대처할 수 있습니다.

SKU 단위 비용 분석의 장점

Reports를 SKU 단위로 분석하면 특정 서비스에서 발생하는 비용의 원인을 더 세부적으로 이해할 수 있습니다.

GCP 비용 분석- SKU

예를 들어, GCP의 BigQuery 서비스에는 위 그림과 같이 Active Logical Storage, Analysis, Long Term Logical Storage 라는 주요 SKU 항목이 있습니다.

  • Active Logical Storage (asia-northeast3 / asia-south1)
    • BigQuery 테이블에 저장된 활성 데이터(최근 90일 이내에 사용된 데이터)에 대한 비용입니다.
    • asia-northeast3 리전은 하나의 계정당 한 달에 10 gibibyte까지는 무료이며 초과 시 1 gibibyte당 0.023 USD가 부과됩니다. asia-south1 리전은 동일한 조건 하에 0.02875 USD가 부과됩니다.
  • Analysis (asia-northeast3)
    • BigQuery에서 쿼리를 실행할 때 스캔된 데이터 양에 따라 발생하는 비용입니다.
    • 하나의 계정당 한 달에 1 tebibyte까지 무료로 제공되며, 초과 시 1 tebibyte당 7.50 USD가 부과됩니다.
  • Long Term Logical Storage (asia-northeast3)
    • BigQuery 테이블에 저장된 데이터 중 90일 이상 사용되지 않은 비활성 데이터에 대한 비용입니다.
    • 하나의 계정당 한 달에 10 gibibyte까지는 무료이며 초과 시 1 gibibyte당 0.016 USD가 부과됩니다.

이처럼 SKU 단위로 비용을 분석하면 BigQuery에서 비용이 증가한 이유가 쿼리 실행(Analysis)때문인지, 데이터 저장(Active Logical Storage) 때문인지 구체적으로 알 수 있습니다. 즉, SKU 단위로 비용을 분석하면 특정 서비스에서 발생한 비용 증가의 원인을 더 쉽고 정확하게 판별할 수 있습니다. 이는 불필요한 지출을 줄이고, 리소스를 효율적으로 관리하는 데 중요한 역할을 합니다.

2. Budget & Alert 활용한 예산 관리

GCP 콘솔에서는 효율적인 예산 관리를 지원하기 위해 예산을 설정하고 이를 초과하면 알림을 보내주는 Budget & Alert 기능을 제공합니다. 이를 활용하면 서비스 운영을 예산 범위 내에서 효과적으로 관리할 수 있습니다.

GCP 콘솔의 Billing > Budget & alerts >CREATE BUDGET 로 접근하여 새로운 예산을 생성할 수 있습니다. 예산을 설정하는 과정은 다음과 같습니다.

예산을 설정할 기간, GCP 폴더, 프로젝트, 서비스를 선택합니다.

GCP 비용 예산 설정 1

프로젝트에 투입할 예산을 기입하고

GCP 비용 예산 설정 2

예산 알림을 실행할 기준을 설정합니다.

GCP 비용 예산 설정 3

마지막으로 예산 한도 초과시 알림을 보낼 방식과 채널을 지정합니다.

GCP 비용 예산 설정 4

이렇게 하면 예산 범위 초과 시 선택된 알림 채널로 예산 초과 알림이 발송됩니다. 이를 통해 프로젝트 예산 초과시 즉각 조치가 가능하며, 예산에 맞춰 효과적으로 운영할 수 있게 됩니다.

비용 절감을 위한 실질적 전략

1. 불필요한 리소스 줄이기

클라우드 환경에서는 사용하지 않는 리소스도 비용을 차지합니다. 따라서 미사용 리소스를 방치하지 않고 정기적으로 점검하고 제거하는 노력이 필요합니다. 또한, 과도하게 설정된 리소스로 인한 비용 낭비를 예방하는 것도 중요합니다.

미사용 리소스 식별 및 삭제

실행중이지만 사용되지 않는 가상 머신, 디스크 공간, 고정 IP 주소 등을 삭제하지 않고 두는 경우 지속적으로 고정 비용이 발생합니다. 따라서 이런 리소스를 식별하고 제거하는 작업은 비용 절감을 위해 필수적인 요소입니다.

리소스 크기 조정

애플리케이션의 실제 요구 사항보다 큰 리소스 설정 사용하는 경우 실제 사용한 리소스보다 많은 요금을 지불하게 됩니다. 이런 상황을 방지하기 위해 Cloud Monitoring에서 VM의 CPU 및 메모리 사용량을 확인하고, 적절한 크기로 변경해야합니다.

예를 들어, 기존에 메모리를 2GB로 설정한 cloud function의 실제 메모리 사용량이 약 300-400MB 정도가 사용되고 있다고 가정해보겠습니다. 이런 경우 기존 설정된 메모리 용량이 과도한 것이므로, 이를 512MB로 적절히 조절하여 비용을 절감할 수 있습니다.

2. 할인 프로그램 활용

GCP에서 제공되는 할인 프로그램을 활용하면 GCP 비용을 효율적으로 절감할 수 있습니다.

약정 사용 할인(CUD)

약정 사용 할인은 GCP에서 1년 또는 3년 동안 특정 리소스 사용량이나 최소 지출 금액을 약정하는 대가로 할인된 가격을 제공하는 프로그램입니다.

CUD의 주요 유형으로는 리소스 기반 CUD와 가변형 CUD가 있습니다. 리소스 기반 CUD는 특정 리소스를 예측 가능하고 안정적으로 사용할 경우 적합한 약정입니다. 이 방식은 특정 리전 및 프로젝트 내 리소스에만 적용 가능하다는 특징이 있습니다. 반면, 가변형 CUD는 사용량이 변동되는 환경에 적합한 약정으로, 특정 리전과 프로젝트에 국한되지 않고 GCP의 계정 내의 모든 적격 리소스에 분산 적용됩니다.

지속 사용 할인 (SUD) 

지속 사용 할인은 말 그대로 별도의 정책을 사용하지 않고도 GCE를 사용하기만 하면 최대 30%를 할인해주는 Google Cloud만의 간편한 할인 정책입니다.

예를 들어, GCE 리소스를 월의 50%에 해당하는 시간 동안 사용하는 경우 10%, 월의 75%를 사용할 경우 20%, 월의 100%에 해당하는 시간, 즉 한달 내내 사용하는 경우 30% 할인을 받을 수 있습니다.

GCP 비용 할인 정책 - SUD

단, CUD와 같은 다른 할인이 적용되는 리소스의 경우 SUD가 적용되지 않습니다. 또한, SUD는 매월 초에 재설정됩니다. 따라서 리소스에 최대한 많은 SUD를 받으려면 월의 첫 번째 날에 VM 인스턴스를 만드는 것이 유리합니다.

3. 서버리스 솔루션 도입

서버리스 서비스를 적절히 활용하는 것 또한 GCP 비용을 효율적으로 절감하는 방법입니다.

서버리스 솔루션의 비용 절감 원리는 다음과 같이 정리해볼 수 있습니다.

바로 리소스를 사용한 만큼만 지불한다는 점입니다. GCE같은 VM 인스턴스는 항상 활성화 상태로 유지되어 사용하지 않을 때에도 비용이 발생하지만, Cloud Function같은 서버리스 서비스는 요청 시에만 활성화되어 사용한 시간과 리소스 용량에 따라 비용이 발생합니다.

따라서 특정 시간에만 트리거되어 실행되는 데이터 처리 및 ETL 파이프라인, REST API 백엔드 서비스 등 항상 활성화되어있을 필요가 없는 서비스의 경우 서버리스 솔루션을 도입하여 비용을 절감할 수 있습니다.

4. BigQuery 비용 관리

몇 가지 최적화 전략을 적용한다면 BigQuery 사용량과 관련된 비용도 줄일 수 있습니다. 이러한 전략은 데이터 처리 속도를 높이고, 저장 공간을 절약하며, 전반적인 성능을 향상시켜 전체적인 GCP 비용을 절약하는데 기여할 수 있습니다.

Bigquery

쿼리문 최적화

퀴리문의 구조와 사용된 함수를 최적화하면 처리 시간을 단축하고 리소스 사용량을 줄일 수 있습니다. 예를 들어, 불필요한 컬럼을 제거하고, WHEHE 절을 사용하여 필요한 데이터만 검색하며, Join 연산을 효율적으로 사용하도록 쿼리문을 수정할 수 있습니다.

파티션 사용

파티션은 관련 데이터를 논리적으로 구분하여 저장하고 관리하는 기능힙니다. 파티션을 사용하면 쿼리의 처리 범위를 줄이고, 데이터를 더 빠르게 액세스하며, 처리 비용을 줄일 수 있습니다. 예를 들어, 날짜별로 파티션을 만들면 특정 기간의 데이터만 빠르고 비용 효율적으로 쿼리할 수 있습니다.

불필요한 데이터 정리

시간이 지나면서 더 이상 필요하지 않는 또는 중복된 데이터가 누적될 수 있습니다. 저장된 데이터의 양에 따른 빅쿼리 비용이 존재하므로 테이블에 만료 시간을 설정하거나 불필요한 데이터를 정기적으로 정리하여 이 비용을 절약할 수 있습니다.

결론

GCP에서 비용을 최적화하고 안전하게 관리하려면 지속적인 모니터링과 최적화하려는 노력이 필요합니다. 불필요한 리소스를 정리하고, 할인 프로그램과 서버리스 솔루션을 적극 활용하며, 각 서비스별 리소스를 최적화하여 효율적으로 관리할 수 있습니다.

 

reference:

https://osoma.kr/blog/bigquery-monitoring/

https://tech.inflab.com/20240227-finops-for-startup/

https://medium.com/@jwlee98/%EC%A2%80-%EB%8D%94-%EC%A0%80%EB%A0%B4%ED%95%98%EA%B2%8C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-google-cloud-platform-gcp-456cd71379f8

https://cloud.google.com/billing/docs/how-to/budgets?hl=ko

https://srivastavayushmaan1347.medium.com/unveiling-the-power-of-gcp-cloud-functions-a-comprehensive-guide-d72c07adc870
https://cloud.google.com/skus/?currency=KRW&filter=Active%20Logical%20Storage%20(asia-northeast3&hl=ko
https://cloud.google.com/bigquery/pricing?hl=ko

Share this post

About the author

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다