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% 절감 가능.
3. 핵심 개념
Redshift의 아키텍처는 리더 노드(쿼리 코디네이터)와 컴퓨트 노드(데이터 처리)로 구성됩니다. 클러스터 단위로 관리되며, 노드 타입( dc2, ra3 등)에 따라 성능/비용 조정.
주요 개념
- 클러스터: 리더 1 + 컴퓨트 N 노드. Multi-AZ로 HA 지원.
- 노드 타입: dc2.s(소규모), ra3.16xlarge(대규모, S3 분리 스토리지).
- DISTKEY/SORTKEY: 데이터 분산/정렬 키로 쿼리 최적화.
- Spectrum: S3 데이터 직접 쿼리.
- Concurrency Scaling: 동시 쿼리 자동 스케일링.
+-------------------+ +-------------------+
| 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);