Redshift vs BigQuery 비교

English (N/A)

클라우드 데이터 웨어하우스를 선택할 때 가장 많이 비교되는 두 서비스가 AWS의 Redshift와 Google의 BigQuery다. 둘 다 페타바이트 규모의 데이터를 처리할 수 있는 분석용 데이터베이스지만, 아키텍처와 과금 방식에서 근본적인 차이가 있다.

아키텍처 차이

Redshift 는 전통적인 클러스터 기반 아키텍처를 사용한다. 노드를 미리 프로비저닝하고, 해당 노드의 CPU와 스토리지를 사용해서 쿼리를 처리한다. 쉽게 말해 "서버를 빌려서 쓰는" 방식이다.

BigQuery 는 완전한 서버리스 아키텍처다. 스토리지와 컴퓨팅이 완전히 분리되어 있고, 쿼리를 실행할 때 Google이 알아서 필요한 만큼의 컴퓨팅 리소스를 할당해준다. 클러스터 관리 같은 건 신경 쓸 필요가 없다.

이 차이는 운영 방식에 큰 영향을 미친다. Redshift는 클러스터 사이즈를 직접 관리해야 하고, 피크 타임에 대비해서 여유 있게 프로비저닝해야 한다. BigQuery는 그냥 쿼리만 던지면 된다.

과금 모델

여기서 두 서비스의 철학 차이가 명확하게 드러난다.

Redshift 는 시간당 과금이다. 노드 타입과 개수에 따라 시간당 비용이 정해지고, 클러스터가 켜져 있는 동안 계속 과금된다. Reserved Instance를 사용하면 최대 75%까지 할인받을 수 있다.

# Redshift 예시 (서울 리전 기준)
dc2.large: $0.25/hour/node
ra3.xlplus: $1.086/hour/node

BigQuery 는 쿼리당 과금이 기본이다. 스캔한 데이터 양에 따라 비용이 책정된다. 매월 1TB까지는 무료고, 그 이후로는 1TB당 $5 정도다.

# BigQuery 예시
온디맨드: $5/TB 스캔
Capacity pricing: slots 단위 예약 가능

쿼리를 자주 실행하고 데이터가 많다면 Redshift의 고정 비용이 유리할 수 있다. 반대로 간헐적으로만 분석 쿼리를 돌린다면 BigQuery가 훨씬 경제적이다.

성능

쿼리 성능은 상황에 따라 다르지만, 일반적인 특성은 이렇다.

Redshift 는 클러스터 사이즈에 성능이 비례한다. 노드를 늘리면 성능이 올라가고, 줄이면 떨어진다. 예측 가능한 성능이 필요한 경우에 유리하다. 그리고 동일한 데이터에 반복적으로 쿼리를 날릴 때 결과 캐싱이 잘 동작한다.

BigQuery 는 쿼리마다 리소스를 동적으로 할당하기 때문에 일반적으로 대용량 데이터 스캔에서 빠른 편이다. 다만 슬롯 경쟁이 발생하면 성능이 떨어질 수 있어서, 안정적인 성능이 필요하면 Capacity pricing으로 슬롯을 예약하는 게 좋다.

스케일링

Redshift 는 수동 스케일링이 기본이다. Elastic Resize를 사용하면 몇 분 내에 노드 수를 변경할 수 있고, Concurrency Scaling을 활성화하면 순간적인 부하 증가에도 대응할 수 있다. 최근에는 Redshift Serverless도 나왔는데, BigQuery처럼 서버리스로 사용할 수 있다.

BigQuery 는 자동 스케일링이다. 쿼리가 들어오면 알아서 리소스를 할당하고, 끝나면 해제한다. 관리할 게 없다.

SQL 문법 차이

기본적인 SQL은 비슷하지만 세부 문법에서 차이가 있다.

-- 날짜 함수
-- Redshift
SELECT DATEADD(day, 7, current_date);
SELECT DATEDIFF(day, start_date, end_date);

-- BigQuery
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 7 DAY);
SELECT DATE_DIFF(end_date, start_date, DAY);
-- 문자열 합치기
-- Redshift
SELECT first_name || ' ' || last_name AS full_name;

-- BigQuery
SELECT CONCAT(first_name, ' ', last_name) AS full_name;
-- JSON 처리
-- Redshift
SELECT JSON_EXTRACT_PATH_TEXT(json_column, 'key');

-- BigQuery
SELECT JSON_VALUE(json_column, '$.key');

BigQuery는 표준 SQL을 더 충실히 따르는 편이고, Redshift는 PostgreSQL 기반이라 PostgreSQL 문법에 익숙하면 적응이 빠르다.

에코시스템

Redshift 는 AWS 생태계와 자연스럽게 연동된다. S3에서 데이터 로드, Kinesis로 실시간 스트리밍, Glue로 ETL, QuickSight로 시각화 등 AWS 서비스들과 긴밀하게 통합되어 있다. 이미 AWS를 메인으로 쓰고 있다면 연동이 쉽다.

BigQuery 는 GCP 생태계 중심이다. Cloud Storage, Dataflow, Looker 등과 잘 연동된다. 그리고 BigQuery ML이라는 기능으로 SQL만으로 머신러닝 모델을 학습시킬 수 있어서 데이터 분석가들이 편하게 ML을 적용할 수 있다.

어떤 걸 선택할까

결국 선택은 상황에 따라 달라진다.

Redshift가 적합한 경우:

  • 이미 AWS를 주력으로 사용 중일 때
  • 예측 가능한 워크로드가 있고, 비용 예측이 중요할 때
  • PostgreSQL 기반 도구들과 호환성이 필요할 때
  • 데이터가 이미 S3에 많이 쌓여 있을 때

BigQuery가 적합한 경우:

  • 서버리스로 운영 부담을 줄이고 싶을 때
  • 쿼리 빈도가 불규칙하거나 간헐적일 때
  • 빠르게 시작하고 싶을 때 (프로비저닝 없이 바로 사용)
  • BigQuery ML로 SQL 기반 ML을 활용하고 싶을 때

둘 다 충분히 검증된 서비스라서 "어떤 게 더 좋다"고 말하기 어렵다. 현재 사용 중인 클라우드 플랫폼, 팀의 기술 스택, 워크로드 패턴을 고려해서 선택하면 된다.