AWS redshift 와 GCP bigQuery 차이
시작
클라우드에서 데이터 처리 및 분석하는데 가장 핵심적인 부분은 Data Warehouse 입니다.
각 벤더사에서 AWS, GCP에서 제공하는 Data Warehouse는 redshift 와 bigQuery 가 있습니다.
이 포스팅에서는 두 DW의 차이에 대해 알아보겠습니다.
다른 포스팅에 비해 부족한 내용이겠지만 각각의 서비스에 대한 설명과
가격, 보안, 사용, 성능, 가용성 분류로 차이에 대해 나열해 보겠습니다.
redshift
AWS에서 제공하는 데이터웨어하우스의 역할로 수백 기가 바이트부터 페타바이트 이상까지 데이터를 확장해서 저장할 수 있습니다.
데이터 전송시 최대 100Gbps 대역을 가질 수 있습니다.
redshift을 동작하기 전에 cluster를 구성해야 하는데 프로비저닝 작업을 수행해야 합니다.
일반적으로 redshift를 사용하기 위해서는 cluster 위에 데이터베이스를 구성합니다.
Standard SQL을 지원하고, AWS S3 접근하기 위해서 IAM Role 생성 등 추가적인 작업을 진행하게 됩니다.
bigQuery
Google Cloud Platform에서 제공하는 bigQuery는 SQL 쿼리를 실현하는 페타 바이트 단위의 데이터 웨어하우스 역할을 수행하게 됩니다.
서버리스 구성으로 bigQuery의 내부 구조나 하드웨어 설계 등이 추상화되어 있기 때문에 디스크, 가상 머신과 같은 리소스를 따로 배포할 필요 없이 시작할 수 있습니다. (SDK, console 등)
표준 SQL을 지원하고 암호화, 내구성, 고가용성을 보장합니다.
bigQuery ML을 사용하여 머신러닝 모델을 구현할 수 있습니다.
가격
redshift
AWS에서 redshift로 cluster를 생성할 때 RA3, DC2, DS2 설정을 직접 수행해야 합니다.
RA3 노드 타입이 나오게 되면서 스토리지와 컴퓨팅이 분리되는 아키텍처로 확장할 수 있게 되었습니다.
cluster의 Node에 대한 요금이 각각 부과 됩니다.
작업을 수행하고 있지 않더라도 실행중인 redshift 매지니드 서비스에 대해서 시간당 비용을 지불하게 됩니다.
storage 측면에서 redshift의 경우 한달 기준으로 데이터 단위는 테라바이트로 계산했을 때 약 $306 가 나오게 됩니다.
bigQuery
bigQuery는 Google Cloud Platform 에서 제공하고 있는 서버리스 제품으로 Storage, Query, Streaming Insert에 대해 요금을 부과하게 됩니다.
하기 사진은 서울 기준 입니다. (aisa-northeast3)
쿼리비용
스트리밍 삽입
스토리지 비용
Redshift(AWS) | bigQuery(GCP) | |
비용 | cluster의 node에 대한 요금이 부과 | 스토리지, 쿼리, 스트리밍 요금 부과 |
Storage 비용 | 관리형 Storage 비용이 TeraByte/month 기준 약 261달러 (서울기준) | Storage 비용이 TeraByte/month 기준으로 월 20달러, 처리 비용은 TeraByte당 5달러 |
작업 시간 외 비용 | 작업을 수행하지 않더라도 실행중인 서버에 대해 시간당 비용을 지불 | 유후상태일때 bigQuery는 저장된 GB당 월 $0.02 청구 |
보안
GCP, AWS 각 벤더사 별로 클라우드 리소스에 대해 IAM으로 접근 관리를 수행할 수 있습니다.
GCP의 경우 Google Cloud IAM 이고, AWS의 경우에는 Amazone IAM Role 을 구성하면 됩니다.
추가적으로 데이터 암호화에서도 각 벤더사 별 암호화 하는 방법이 다릅니다.
러프하게 소개하면 왼쪽은 AWS에서 데이터베이스 구성 시 데이터 암호화하는 방법입니다. (KMS, HSM)
오른쪽은 GCP에서 데이터 암호화 하는 방법으로 managed encryption key를 사용하거나 CMEK를 사용하게 됩니다. ( CMEK는 고객이 유실할 경우 데이터 찾기가 어려우므로 신중해야 합니다.)
Redshift(AWS) | bigQuery(GCP) | |
접근 관리 | Identity를 확인하기 위해 Amazon IAM을 사용 | Google Cloud IAM을 사용 |
데이터 암호화 | 클러스터에서 암호화 활성화해서 데이터 암호화 | 기본 데이터 암호화 옵션 제공 (수동으로 선택해서 사용해야 합니다.) |
사용
redshift, bigQuery에 사용자가 접근하여 사용하기 위해서는 관련 IAM 권한이 있어야 합니다.
redshift의 경우에는 AmazonRedshiftQueryEditor, AmazonRedshiftReadOnlyAccess 권한이 있어야 합니다.
bigQUery의 경우에는roles/bigquery.admin 권한이 있어야 합니다.
Redshift(AWS) | bigQuery(GCP) | |
데이터 접근 | S3 접근을 위한 IAM role 생성 | IAM에서 사용자에게 권한 부여 |
데이터셋, 테이블 생성 | Redshift cluster 구성 후 데이터베이스 생성 | bigQuery는 기본 데이터베이스, 구성, 하드웨어 세부 정보를 추상화 콘솔에서 사용 |
데이터 로딩 | 데이터를 S3에 업로드 한 뒤, redshift 편집기에서 S3로부터 데이터 Copy 후 Table 로딩 | bigQuery에서 Source 데이터 선택 후 불러와 table 생성 가능 |
Upsert 지원 및 성능 | 효율적인 업데이트 및 삽입을 위해 table을 새로 생성 후 데이터 로드 하여 target table과 join 하여 삽입 및 업데이트 작업 수행 | full scan을 통해 Update, insert, merge 지원한다. |
구성 방법 | 클러스터 생성 같은 리소스 프로비저닝 작업 수행 | Redshift 보다 비교적 사용하기 쉬움 |
성능
Vacumming 이라는 작업이 있는데 AWS에서는 이전 Update or Delete 작업에서 삭제 표시가 된 행이 점유한 디스크 공간을 회수하는 작업이라고 합니다.
DC는 고밀도 컴퓨팅, DS 고밀도 스토리지를 말합니다.
Redshift(AWS) | bigQuery(GCP) | |
Query 성능 | Redshift 성능은 클러스터 생성시 선택하는 컴퓨팅 CPU (RA3, DC, DS 노드 유형)에 따라 성능이 결정 | bigQuery는 slot 개념을 사용하여 필요한 만큼 리소스를 가져와 처리 |
Index(색인) | 데이터 인덱싱을 수행하여 빠르게 쿼리를 수행 | bigQuery에는 색인이 없고, 작업을 빠르게 수행할 수 있습니다. (주피터 네트워크) |
디스크 공간 회수 | Vacumming 작업 수행 | Vacumming 작업 수행 하지 않습니다. |
Streaming 처리 | 스트리밍 처리 시 노드 유형에 따라 성능 차이 | 스트리밍 처리 시 bigQuery 테이블 당 초당 100,000개의 행을 쉽게 처리 |
가용성
bigQuery는 기본적으로 multi region을 지원합니다.
하지만 redshift의 경우 Multi-Region 구성 시 하기와 같이 구성하게 됩니다. Amazon Kinesis에서 Streaming 수집 후 각 AZ를 Auto scaling group으로 지정하여 다중 AZ를 구성하게 됩니다.
이런 구성에서 redshift는 분석에 사용되는 점에 유의하셔야 합니다. OLTP를 제공하는 RDS 보다 OLAP 용도로 많이 사용합니다.
정리
Amazon redshift는 빠르고 클라우드 데이터웨어 하우스 역할을 수행하게 됩니다.
표준 SQL을 사용하여 데이터웨어 하우스와 데이터 레이크에서 페타 바이트 규모의 정형, 반정형 데이터를 Query 할 수 있습니다.
데이터 양이 많아지면 federate query를 사용하기도 합니다.
RA3의 옵션이 나오게 되면서 컴퓨팅과 스토리지 영역이 분리가 되었습니다. 25~100Gbps 네트워크 대역폭이 형성됩니다.
사실, 페타바이트 네트워크 대역폭을 가지고 bigQuery에 비하면 적은 수치지만 이전보다 좋은 성능을 내고 있음을 확인할 수 있습니다.
bigQuery는 slot이라는 개념을 사용하게 됩니다.
slot은 SQL쿼리를 실행하기 위해 bigQuery에서 사용하는 가상 CPU로 노드의 스펙을 설정하는 AWS보다 추상화되어 사용됩니다.
여기서는 ML에 대한 정보는 다루지 않았지만 bigQuery, redshift 모두 ML로 확장하여 사용할 수 있는 특징이 있습니다.
'GCP' 카테고리의 다른 글
Java로 ETL 수행 (Sample Code) (0) | 2021.11.15 |
---|---|
GCP41 :: 구글 클라우드 플랫폼 입문 (0) | 2020.10.07 |
GCP40 :: 베스천호스트 연결 (0) | 2020.10.02 |
GCP39 :: Media(번역) - BigQuery (0) | 2020.10.02 |
GCP38 :: OS로그인 (0) | 2020.09.28 |
댓글
이 글 공유하기
다른 글
-
Java로 ETL 수행 (Sample Code)
Java로 ETL 수행 (Sample Code)
2021.11.15 -
GCP41 :: 구글 클라우드 플랫폼 입문
GCP41 :: 구글 클라우드 플랫폼 입문
2020.10.07 -
GCP40 :: 베스천호스트 연결
GCP40 :: 베스천호스트 연결
2020.10.02 -
GCP39 :: Media(번역) - BigQuery
GCP39 :: Media(번역) - BigQuery
2020.10.02