GCP) 빅쿼리 - 예상 비용 산출

GCP) 빅쿼리 - 예상 비용 산출

빅쿼리(BigQuery)는 부분 유료 서비스이기 때문에 사용량에 따라 비용이 발생한다. 이 때문에 사용량에 따른 예상 비용을 산출하는 것이 중요하다. 빅쿼리 비용 산출 방법에 대해 알아보자.


개요

빅쿼리(BigQuery)를 사용하면서 발생하는 비용과 관련해서는 GCP의 빅쿼리 가격 책정 개요 페이지를 참고하면 된다. 하지만 공식문서는 공식문서이고 실직적으로 내가 사용하는 만큼의 비용을 산출하려면 조금 더 시간투자를 해야 한다.

공식문서에는 빅쿼리의 비용에 대해 이렇게 기술하고 있다.

컴퓨팅 가격 책정: SQL 쿼리, 사용자 정의 함수, 스크립트, 특정 데이터 조작 언어 (DML) 문과 데이터 정의 언어 (DDL) 문을 포함한 쿼리 처리 비용입니다.
스토리지 가격: BigQuery에 로드하는 데이터를 저장하는 데 드는 비용입니다.

즉, 컴퓨팅 가격 책정은 쿼리를 실행하여 데이터를 필터링 하거나 요약연산하는 등 데이터를 조작하는 경우 발생하는 비용이다. 그리고 스토리지 가격은 말 그대로 저장되는 데이터에 대해 발생하는 비용이다.

컴퓨팅 가격

컴퓨팅 가격은 추가로 주문형 가격 책정(on demand pricing)과 용량 가격 책정(capacity compute analysis pricing)으로 나뉜다. 컴퓨팅 가격과 관련해서는 공식문서 페이지가 많지만 그 중에서 “비용 예측 및 제어”라는 주제로 별도 공식문서 페이지가 있는데 해당 페이지의 내용이 비용 산정에 있어 많은 도움을 받을 수 있다고 할 수 있겠다.
먼저 주문형 가격 책정 부터 살펴보자.

주문형 가격 책정

공식 문서에는 주문형 가격 책정에 대해 다음과 같이 설명하고 있다.

각 쿼리에서 처리한 바이트 수에 대한 요금이 청구됩니다. 매월 처리되는 쿼리 데이터 중 처음 1TiB는 무료입니다.

1TiB가 무료라고 하는데 1TB는 들어봤어도 1TiB는 생소할 수 있다. 각각의 용량 단위에 대한 정의는 다음과 같다.

  • 테라바이트(TB): 1TB = 10^12 바이트 = 1,000,000,000,000 바이트
  • 테비바이트(TiB): 1TiB = 2^40 바이트 = 1,099,511,627,776 바이트

즉, 1TiB의 경우 약 1.1TB라고 할 수 있겠다.

아무튼 작은 데이터로 적당히 실습을 하는 경우 컴퓨팅 비용에 대한 걱정은 굳이 하지 않아도 된다. 하지만 대용량 데이터를 다루는 경우에는 컴퓨팅 비용에 대한 산출이 필요한데 우선 지역별로 그 요금이 다르기 때문에 공식문서 페이지에서 확인해보는 것을 추천한다.

예시로 서울 지역에서의 컴퓨팅 가격 과금 정책은 다음과 같다.
빅쿼리 컴퓨팅 가격(서울 지역)

그리고 용량 계산은 선택하는 데이터의 크기에 따라 다르지만 그 용량을 줄이고 적은 과금으로 사용하고 싶다면 꼭 필요한 파티션(partition), 클러스터(cluster), 열(column)을 선택하여 쿼리를 작성하는 것이 중요하다. 이는 과금액 뿐만 아니라 쿼리의 성능에도 중요한 영향을 주며 이와 관련한 내용은 관련 공식문서 페이지에서 잘 정리된 그림을 제공하고 있다.
빅쿼리 클러스터링 및 파티셔닝 테이블

주문형 가격 책정과 관련된 보다 상세한 내용은 공식문서 페이지에서 확인하도록 하자.

용량 가격 책정

용량 가격 책정의 경우 슬롯(slot, SQL 쿼리를 실행하기 위해 BigQuery에 사용되는 가상 CPU)을 사용한 만큼만 지불하거나 미리 일정량을 지불하고 사용하는 방식이다.
※ 슬롯(slot)의 공식 문서는 여기에서 확인할 수 있다.

그리고 슬롯은 크게 Standard, Enterprise, Enterprise Plus 로 등급이 나뉘어지며 각 등급별로 가격과 성능이 다르다. 예를 들어 서울 지역의 Standard 슬롯 가격은 다음과 같다.
빅쿼리 Standard 슬롯 가격(서울 지역)

“Details” 항목에 보면 “No commitment. Billed per second with a 1 minute minimum” 라고 적혀있는데 이는 반드시 선 구매가 이루어져야 하는 것은 아니고, 사용 요청이 발생할 때 마다 슬롯을 사용한 만큼만 내면 되고, 초단위로 측정되지만 최소 1분은 지불해야 한다고 안내하고 있다. 즉, 1초를 사용하더라도 1분에 해당하는 비용이 과금되며 70초라면 70초에 해당하는 비용이 과금된다고 할 수 있다.

용량 가격 기반으로 예상 과금액을 산출하고자 하는 경우 비용 계산기 페이지를 이용할 수 있으며 해당 페이지의 화면은 다음과 같다.
GCP 비용 계산기

해당 화면에서 볼 수 있는 [+ Add to estimate] 버튼을 누르면 비용계산 화면으로 이동하고 다음과 같으며 빅쿼리의 예상 과금액 산출을 위해 “BigQuery” 카드를 선택하자.
GCP 비용 계산기 선택 화면

그리고 빅쿼리의 용량 가격 책정을 위한 화면에는 기본값이 다음과 같이 설정되어있는데 예상 과금액이 6000$가 넘는 어마어마한 금액이니 본인의 조직 또는 상황에 맞게 설정하여 예상 과금액을 산출하자.
GCP 비용 계산기 빅쿼리 기본값

여기서 계산한 내용은 URL을 복사하여 쉽게 공유할 수 있으며 다음의 화면에 해당하는 예상 과금액 산출 결과는 링크를 통해 확인할 수 있다.
GCP 비용 계산기 빅쿼리 예상 과금액

용량 가격 책정과 관련된 보다 상세한 내용은 공식문서 페이지에서 확인하도록 하자.

스토리지 가격

스토리지 가격은 데이터를 저장하는 데 드는 비용으로, 데이터의 크기에 따라 비용이 발생한다. 빅쿼리의 스토리지 가격은 공식문서 페이지에서 확인할 수 있으며 서울 지역의 경우 다음과 같다.
빅쿼리 스토리지 가격(서울 지역)

스토리지 가격은 상기 표와 같이 크게 활성(Active) 스토리지와 장기(Long-term) 스토리지로 나뉜다. 여기서 활성과 장기를 나누는 기준은 90일 기준이며 공식문서의 설명은 다음과 같다.

  • 활성 스토리지: 지난 90일 동안 수정된 모든 테이블 또는 테이블 파티션이 포함
  • 장기 스토리지: 연속으로 90일 동안 수정되지 않은 모든 테이블 또는 테이블 파티션이 포함

그리고 활성 스토리지는 90일이 지나면 자동으로 장기 스토리지로 변환되며 과금액 또한 약 50% 정도 인하된다.

과도한 과금 예방

빅쿼리를 사용하면서 풀스캔(full scan)이라는 용어를 사용하기도 한다. 이는 테이블 전체를 스캔하는 것으로, 테이블의 크기가 크다면 비용이 많이 발생할 수 있다. 이를 사전에 방지하기 위해 쿼리 단위로 조치하는 방법이 있다. 이와 관련해서는 공식문서 페이지 - 청구되는 바이트 수 제한에서 소개하고 있다.

쿼리 편집기 왼쪽 상단에 있는 [더보기] 버튼을 클릭하면 드랍다운 목록이 나오는데 여기 있는 [쿼리 설정] 메뉴를 눌러보자.
빅쿼리 쿼리 설정

왼쪽에서 등장하는 설정 화면에서 아래로 스크롤을 쭈욱 내려보면 [고급 옵션]이 있는데 여기서 “청구 가능한 최대 바이트” 영역에 정수를 입력할 수 있다. 이를 통해 쿼리 실행 시 청구 가능한 최대 바이트 수를 제한할 수 있으며 이를 통해 과도한 과금을 방지할 수 있다.
빅쿼리 쿼리 설정 - 청구 가능한 최대 바이트

기타 과금

빅쿼리를 사용하면서 발생하는 비용은 컴퓨팅 가격과 스토리지 가격 외에도 데이터 전송, 데이터 수집, 데이터 처리 등 다양한 비용이 발생할 수 있다. 이와 관련된 내용은 공식문서 페이지에서 추가로 확인하도록 하자.

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×