Amazon Redshift 실무 스터디 가이드

데이터 엔지니어 · 데이터 사이언티스트를 위한 핵심 요약

data-warehouse aws mpp

1. Amazon Redshift란?

Amazon Redshift는 AWS의 완전 관리형, 페타바이트 규모의 클라우드 데이터 웨어하우스 서비스입니다. MPP(Massively Parallel Processing) 아키텍처를 기반으로 하며, 대규모 데이터 분석 쿼리를 초고속으로 처리합니다. PostgreSQL 호환 SQL을 지원해 기존 BI 도구와 쉽게 연동됩니다.

Petabyte-scale Data Warehousing

수 페타바이트 규모의 데이터를 저장하고 분석. 자동 스케일링으로 비용 효율적 확장.

Columnar Storage & Compression

컬럼 지향 저장으로 쿼리 성능 10배 향상. 고압축률로 저장 비용 절감.

Massively Parallel Processing (MPP)

수백 개 노드에서 병렬 처리. 리더-컴퓨트 노드 분리로 고가용성 보장.

📊 핵심 지표

Redshift는 TPC-DS 벤치마크에서 경쟁 제품 대비 3~5배 빠른 쿼리 성능을 보입니다. RA3 노드 타입으로 분리형 스토리지 사용 시 비용 75% 절감 가능.

2. 왜 써야 하는가?

전통 RDBMS나 오픈소스 DW 대비 Redshift의 강점은 클라우드 네이티브 확장성과 비용 효율성입니다. 아래 표에서 주요 대안을 비교합니다.

기능 Redshift Snowflake BigQuery PostgreSQL (온프렘)
아키텍처 MPP, Columnar MPP, Multi-Cloud Serverless MPP Row-based
스토리지 분리 RA3 지원 기본 지원 기본 지원 없음
쿼리 성능 (TPC-DS) 최상위 상위 상위 저하
비용 모델 예약/온디맨드 크레딧 기반 스토리지+쿼리 하드웨어 비용
AWS 통합 최적 일반 없음 없음

⚠️ 주의

Redshift는 워크로드 최적화가 필수. SORTKEY/DISTKEY 미설정 시 쿼리 지연 발생.

3. 핵심 개념

Redshift의 아키텍처는 리더 노드(쿼리 코디네이터)와 컴퓨트 노드(데이터 처리)로 구성됩니다. 클러스터 단위로 관리되며, 노드 타입( dc2, ra3 등)에 따라 성능/비용 조정.

주요 개념

+-------------------+ +-------------------+ | Leader Node | | Compute Nodes | | - Query Planning |<-------->| - Data Storage | | - Coordination | JDBC | - Query Execution | | - Results Merge | ODBC | (Slices) | +-------------------+ +-------------------+ | ^ | | v | +----------+ +----------+ | Clients | | S3 | | BI Tools | | (RA3) | +----------+ +----------+

위 ASCII 다이어그램은 Redshift 클러스터의 기본 흐름을 보여줍니다. 리더 노드가 쿼리를 컴퓨트 노드로 분배하고 결과를 집계합니다.

4. 퀵스타트

Step 1: AWS CLI 설치 & 설정

pip install awscli
aws configure
# Access Key, Secret Key, Region(us-east-1) 입력

Step 2: 클러스터 생성 (CLI)

aws redshift create-cluster \
  --cluster-identifier my-redshift-cluster \
  --node-type dc2.large \
  --number-of-nodes 2 \
  --master-username admin \
  --master-user-password MyPassword123 \
  --publicly-accessible \
  --region us-east-1

클러스터 생성 후 Endpoint 확인: aws redshift describe-clusters --cluster-identifier my-redshift-cluster

Step 3: Python 연결 (psycopg2 + boto3)

pip install psycopg2-binary boto3

import psycopg2
import boto3

# 클러스터 엔드포인트 (콘솔 또는 CLI로 확인)
conn = psycopg2.connect(
    host='my-redshift-cluster.xxxxx.us-east-1.redshift.amazonaws.com',
    port=5439,
    database='dev',
    user='admin',
    password='MyPassword123'
)

cur = conn.cursor()
cur.execute("CREATE TABLE users (id INT, name VARCHAR(50));")
cur.execute("INSERT INTO users VALUES (1, 'Alice'), (2, 'Bob');")
cur.execute("SELECT * FROM users;")
print(cur.fetchall())

cur.close()
conn.close()

Step 4: 첫 쿼리 테스트

psql -h my-redshift-cluster.xxxxx.us-east-1.redshift.amazonaws.com -p 5439 -U admin -d dev
> SELECT COUNT(*) FROM stl_query;

✅ 성공 팁

보안 그룹에서 클라이언트 IP 허용 필수. VPC 내 클러스터 시 peering 설정.

5. 핵심 설정 레퍼런스

클러스터 파라미터 그룹과 테이블 설계 키 설정.

설정 옵션 권장값 설명
Node Type dc2.large, ra3.4xlarge ra3.16xlarge (대규모) RA3: S3 스토리지 분리
DISTSTYLE EVEN, KEY, ALL KEY (고카디널리티 컬럼) 데이터 분산 균형
SORTKEY COMPOUND, INTERLEAVED INTERLEAVED (다중) Zone Map 압축
WLM Queues Auto, Manual Concurrency Scaling ON 동시 쿼리 처리
Maintenance Window Weekly 비피크 시간 자동 백업/업데이트
-- 테이블 생성 예시
CREATE TABLE sales (
    sale_id INT,
    date DATE,
    amount DECIMAL
)
DISTKEY(sale_id)
SORTKEY(date);

6. 실무 팁 & 트러블슈팅

실무 팁

자주 겪는 문제 & 해결

문제 증상 해결책
쿼리 슬로우 High CPU/Disk DIST/SORTKEY 재설계, VACUUM
연결 실패 Timeout Security Group, Subnet 확인
Out of Memory OOM 에러 NODE 업그레이드, WLM 조정
스큐 (Skew) 불균형 로드 DISTKEY 변경, UNLOAD/RELOAD

🚨 치명적 실수

DISTSTYLE ALL 과용 시 스토리지 폭증. 고빈도 업데이트 테이블 피함.

7. 참고 자료

추가 학습: AWS Well-Architected Framework - Analytics Lens.