AWS DEA-C01 문제로 공부하기 — Day 09
Redshift CALL 문법, Glue 작업 북마크 증분 처리, Redshift 페더레이션 쿼리, Firehose → Splunk 실시간 로그 전송, VPC 흐름 로그 + Parquet + Athena — 5문제 핵심 정리.
Amazon Redshift에서 저장 프로시저(Stored Procedure)를 실행하는 SQL 명령어는 CALL입니다. SELECT·FETCH·SHOW는 저장 프로시저 실행에 사용하지 않습니다.
Amazon Redshift에 Daily_Aggr_SP라는 저장 프로시저(Stored Procedure)가 있습니다. 이 프로시저는 날짜를 입력받아 일별 집계 데이터를 프로덕션 테이블에 삽입합니다. 이 저장 프로시저를 실행하는 올바른 SQL 명령문은 무엇인가요?
-
ACALL Daily_Aggr_SP('2024-01-01')✅ CALL — SQL 표준 저장 프로시저 실행 명령어. Redshift, PostgreSQL, MySQL 모두 동일. 괄호 안에 입력 파라미터를 전달. 저장 프로시저를 호출하는 유일한 올바른 방법.
-
BFETCH Daily_Aggr_SP('2024-01-01')❌ FETCH — 커서(Cursor)에서 행을 가져오는 명령어. 저장 프로시저 실행 명령이 아님.
-
CSHOW PROCEDURE Daily_Aggr_SP('2024-01-01')❌ SHOW — 시스템 설정·객체 정보를 조회하는 명령어. 저장 프로시저를 실행하는 명령이 아님.
-
DSELECT Daily_Aggr_SP('2024-01-01')❌ SELECT — 데이터 조회 명령어. 함수(Function)는 SELECT로 호출하지만 저장 프로시저(Procedure)는 CALL을 사용해야 함. 저장 프로시저와 함수는 다른 객체.
| 객체 유형 | 실행 명령어 | 예시 |
|---|---|---|
| 저장 프로시저(Procedure) | CALL | CALL proc_name(param) |
| 사용자 정의 함수(Function) | SELECT | SELECT func_name(param) |
| 커서(Cursor) | FETCH | FETCH cursor_name |
저장 프로시저 실행 → CALL proc_name(파라미터)
사용자 정의 함수 → SELECT func_name(파라미터)
Procedure ≠ Function → 실행 방법이 다름!AWS Glue 작업 북마크(Job Bookmark)는 마지막으로 처리한 데이터의 체크포인트를 자동으로 관리해 다음 실행 시 새로운 데이터만 처리하는 기능입니다. 코드 변경 없이 구성만으로 증분 처리를 구현할 수 있습니다.
S3에서 데이터를 검증·변환하여 RDS MySQL에 배치로 적재하는 Glue ETL 작업이 있습니다. 현재 매 실행마다 S3의 모든 데이터를 처리하는데, 일별 신규 데이터만 처리하도록 변경하고 싶습니다. 코딩 작업을 최소화하는 방법은 무엇일까요?
-
AS3 파일 상태를 읽고 처리 상태를 DynamoDB에 기록하는 별도 ETL 작업을 만들어 처리된 파일을 추적합니다.❌ 파일 메타데이터 읽기 + DynamoDB 상태 관리 + 메인 ETL에서 상태 확인까지 상당한 코딩 작업 필요. 작업 북마크를 쓰면 코드 없이 해결 가능.
-
BGlue 작업 설정에서 작업 북마크(Job Bookmark)를 활성화하여 이전에 처리된 데이터를 자동으로 추적합니다.✅ AWS Glue 작업 북마크(Job Bookmark) — 마지막 처리 지점(체크포인트)을 자동 기록해 다음 실행 시 새 데이터만 읽는 기능. 소설책에 책갈피를 끼워두면 다음에 이어 읽을 수 있는 것처럼. 코드 변경 없이 Glue 작업 구성에서 활성화만 하면 즉시 증분 처리 동작.
-
CGlue 작업 지표를 사용하여 CloudWatch에서 처리된 객체를 추적합니다.❌ CloudWatch 지표는 모니터링·알람용. 처리된 객체를 추적하거나 증분 처리를 제어하는 기능이 없음. 관측(Observability) 도구와 처리 제어는 다름.
-
D각 실행 후 처리된 S3 객체를 삭제하도록 ETL 작업을 수정합니다.❌ 처리된 데이터 삭제는 데이터 손실 위험이 있고 재처리가 불가능해짐. 삭제 로직 추가 코딩도 필요. 잘못된 접근.
| 방법 | 코딩 필요 | 재처리 가능 | 적합성 |
|---|---|---|---|
| 작업 북마크(Job Bookmark) | 없음 (구성만) | ✓ | ✓ 최적 |
| DynamoDB 상태 추적 | 많음 | ✓ | 복잡도 높음 |
| 처리 후 S3 삭제 | 필요 | ✗ | 위험함 |
| CloudWatch 지표 | 없음 | - | 모니터링용 |
"Glue ETL 증분 처리 + 최소 코딩" → 작업 북마크(Job Bookmark)
코드 변경 없이 구성에서 활성화만 하면 됨
체크포인트 자동 관리 → 다음 실행 시 새 데이터만 처리Redshift 페더레이션 쿼리(Federated Query)는 데이터를 복제하지 않고 Aurora PostgreSQL 등 외부 DB에서 직접 데이터를 쿼리하는 기능입니다. 실시간에 가까운 분석이 필요할 때 가장 적은 운영 오버헤드로 구현 가능합니다.
Amazon Redshift 데이터 웨어하우스에서 과거 분석 데이터를 관리하고, 공급망 앱의 실시간 재고 데이터는 Amazon Aurora PostgreSQL에 있습니다. 분석팀이 재고 데이터를 거의 실시간으로 분석해야 하며 데이터 업데이트도 추적해야 합니다. 운영 오버헤드를 최소화하는 방법은 무엇일까요?
-
AAWS DMS를 사용하여 Aurora와 Redshift 데이터를 지속적으로 동기화하고 Redshift에서 분석합니다.❌ DMS 지속 복제는 설정·모니터링 오버헤드가 있고, Aurora → Redshift 반영 지연이 발생할 수 있어 실시간에 가까운 접근 요건을 보장하기 어려움.
-
BRedshift에서 페더레이션 쿼리를 사용하여 Aurora PostgreSQL 데이터를 직접 쿼리합니다.✅ Redshift 페더레이션 쿼리(Federated Query) — 데이터 복제 없이 Redshift SQL에서 Aurora 데이터를 직접 조회. 마치 원격 도서관 책을 가져오지 않고 그 자리에서 바로 읽는 것. 항상 최신 데이터 접근(실시간) + 설정만으로 구성 가능 + 운영 오버헤드 최소.
-
CAurora 데이터를 S3로 내보내고 Redshift Spectrum으로 쿼리합니다.❌ Aurora → S3 내보내기 작업이 추가되고 내보내기 주기만큼 데이터 지연 발생. 실시간 접근 요건 미충족 + 운영 오버헤드 증가.
-
DGlue ETL로 시간별 Aurora → Redshift 데이터 전송 작업을 구성하고 Redshift에서 분석합니다.❌ 시간별 배치 = 최대 1시간 데이터 지연. 실시간에 가까운 접근 요건 미충족. Glue 작업 관리 오버헤드도 추가.
| 방법 | 실시간성 | 데이터 복제 | 운영 부담 |
|---|---|---|---|
| 페더레이션 쿼리 | 실시간 | 없음 | 최소 |
| DMS 지속 복제 | 준실시간 | 있음 | 중간 |
| Glue ETL (시간별) | 최대 1시간 지연 | 있음 | 중간 |
| Aurora → S3 내보내기 | 지연 있음 | 있음 | 높음 |
"Redshift에서 외부 DB 실시간 쿼리 + 운영 최소화"
→ Redshift 페더레이션 쿼리
데이터 복제 없음 → 항상 최신 데이터
Aurora PostgreSQL, RDS 등 외부 DB를 직접 쿼리Amazon Data Firehose는 Splunk를 네이티브 대상으로 지원하는 완전관리형 스트리밍 서비스입니다. CloudWatch Logs 구독 필터로 로그를 Firehose에 직접 전달하면 Lambda 없이 최소 운영으로 Splunk 연동이 가능합니다.
VPC 흐름 로그를 Amazon CloudWatch Logs에 게시하도록 설정했습니다. 추가 분석을 위해 흐름 로그를 거의 실시간으로 Splunk로 전송해야 합니다. 운영 오버헤드를 최소화하는 방법은 무엇일까요?
-
ASplunk를 대상으로 하는 Kinesis Data Streams를 구성하고, CloudWatch Logs 구독 필터로 Kinesis로 로그를 전송합니다.❌ Kinesis Data Streams는 Splunk를 네이티브 대상으로 지원하지 않음. Splunk로 전달하려면 Firehose가 필요.
-
BSplunk를 대상으로 하는 Amazon Data Firehose 전송 스트림을 생성하고, CloudWatch Logs 구독 필터로 로그를 Firehose에 전송합니다.✅ Amazon Data Firehose — 완전관리형 스트리밍 서비스로 Splunk를 네이티브 대상으로 지원. CloudWatch Logs 구독 필터 — Lambda 없이 로그를 Firehose에 직접 스트리밍. 추가 코드 없이 CloudWatch Logs → Firehose → Splunk 파이프라인 구성 가능.
-
CSplunk를 대상으로 하는 Firehose 전송 스트림을 생성하고, Lambda 함수를 만들어 CloudWatch Logs에서 Firehose로 로그를 전송합니다.❌ Firehose가 Splunk를 지원하는 건 맞지만, Lambda 함수를 추가로 개발·관리해야 함. CloudWatch Logs 구독 필터를 사용하면 Lambda 없이 직접 연결 가능. 불필요한 오버헤드.
-
DSplunk를 대상으로 하는 Kinesis Data Streams를 구성하고, Lambda 함수로 CloudWatch Logs에서 Kinesis로 로그를 전송합니다.❌ Kinesis Data Streams는 Splunk 직접 연동 불가 + Lambda 개발 부담 2가지 문제. 최악의 오버헤드 조합.
| 서비스 | Splunk 네이티브 지원 | CloudWatch Logs 직접 구독 | Lambda 필요? |
|---|---|---|---|
| Amazon Data Firehose | ✓ | ✓ | 불필요 |
| Kinesis Data Streams | ✗ | 구독 가능 | 필요 |
"CloudWatch Logs → Splunk 실시간 전송"
→ 구독 필터 → Firehose → Splunk
Kinesis Data Streams = Splunk 직접 연동 불가
Lambda 추가 = 불필요한 오버헤드VPC 흐름 로그 분석의 가장 비용 효율적인 패턴은 S3에 Parquet 형식으로 저장 + Athena 분석입니다. Parquet은 열 형식(Columnar)으로 압축·인코딩 최적화가 되어 있어 텍스트보다 Athena 스캔 비용이 크게 줄어듭니다.
VPC의 EC2 인스턴스에서 발생하는 네트워크 트래픽을 수집하고 분석하려 합니다. 가장 비용 효율적인 솔루션은 무엇일까요?
-
A흐름 로그를 Amazon CloudWatch Logs에 게시하고, Amazon Athena로 분석합니다.❌ CloudWatch Logs 저장 비용이 S3보다 높음. Athena는 S3를 쿼리하는 서비스라 CloudWatch Logs를 직접 쿼리 불가. 추가 연동 설정이 필요하고 비용도 높음.
-
B흐름 로그를 Amazon CloudWatch Logs에 게시하고, Amazon OpenSearch Service 클러스터로 분석합니다.❌ OpenSearch Service — 클러스터를 항시 운영해야 하므로 시간당 인스턴스 비용이 발생. Athena(서버리스 온디맨드)보다 비용이 훨씬 높음.
-
C흐름 로그를 Amazon S3에 텍스트 형식으로 게시하고, Amazon Athena로 분석합니다.❌ S3 저장은 맞지만 텍스트 형식은 Athena 스캔 비용이 높음. Athena는 스캔한 데이터 바이트 단위로 과금되므로 Parquet 같은 압축 컬럼 형식 대비 비용이 크게 증가.
-
D흐름 로그를 Amazon S3에 Apache Parquet 형식으로 게시하고, Amazon Athena로 분석합니다.✅ Apache Parquet — 열 기반(Columnar) 압축 포맷. 필요한 컬럼만 스캔하므로 Athena 과금 기준인 스캔 데이터량이 크게 감소(텍스트 대비 최대 90% 절감). S3 저장 비용도 압축으로 절약. Athena — 서버리스, 사용한 만큼만 과금. 클러스터 상시 운영 비용 없음.
| 방법 | 스토리지 비용 | 분석 비용 | 서버리스? |
|---|---|---|---|
| S3 Parquet + Athena | 낮음(압축) | 낮음(컬럼 스캔) | ✓ |
| S3 텍스트 + Athena | 낮음 | 높음(전체 스캔) | ✓ |
| CW Logs + Athena | 높음 | 연동 복잡 | ✓ |
| CW Logs + OpenSearch | 높음 | 클러스터 상시 과금 | ✗ |
"로그 분석 + 비용 최적화" → S3 Parquet + Athena
Parquet = 열 형식 압축 → Athena 스캔량 최소화 → 비용↓
텍스트 형식 = 전체 스캔 → 비용↑
OpenSearch = 클러스터 상시 운영 비용 → 비용↑↑