학습 목표

파이프라인의 다섯 단계

분석 문항은 서비스 이름을 나열해 놓고 고르게 합니다. 이름을 하나씩 외우는 대신 단계로 환원하면 후보가 즉시 줄어듭니다. 데이터가 흐르는 순서는 언제나 같습니다.

분석 파이프라인의 다섯 단계와 단계별 서비스 데이터가 왼쪽에서 오른쪽으로 흐르는 다섯 칸의 지도입니다. 첫째 칸은 수집입니다. Kinesis Data Streams 와 Amazon MSK 가 스트리밍 데이터를 받고 AWS DataSync 가 대량 파일을 옮깁니다. 둘째 칸은 저장입니다. Amazon S3 가 데이터 레이크가 되어 원본을 가공하지 않은 상태로 보관합니다. 셋째 칸은 카탈로그와 변환입니다. AWS Glue 의 크롤러가 스키마를 알아내 데이터 카탈로그에 등록하고 ETL 작업이 형식을 바꿉니다. 넷째 칸은 조회입니다. Amazon Athena 는 S3 에 있는 데이터를 옮기지 않고 그 자리에서 SQL 로 조회하고, Amazon Redshift 는 데이터를 적재해 두고 웨어하우스로 반복 분석합니다. 다섯째 칸은 시각화이며 Amazon QuickSight 가 대시보드를 만듭니다. 서비스 이름만 죽 나열된 문항은 각 이름이 이 다섯 칸 가운데 어디에 속하는지로 환원해 읽습니다. 데이터가 흐르는 다섯 단계 1 · 수집 Kinesis Data Streams Amazon MSK Kafka 호환 AWS DataSync 대량 파일 이동 2 · 저장 Amazon S3 데이터 레이크 원본을 그대로 모든 단계가 여기를 지납니다 3 · 카탈로그 변환 AWS Glue 크롤러 · 카탈로그 ETL 작업 스키마를 알아내 테이블로 등록 4 · 조회 Amazon Athena S3 를 그 자리에서 Amazon Redshift 적재 후 반복 분석 5 · 시각화 QuickSight 대시보드 조회 결과를 사람이 읽는 형태로 서비스 이름만 나열된 문항은 각 이름이 어느 칸에 속하는지로 환원해 읽습니다 수집 · 저장 · 카탈로그와 변환 · 조회 · 시각화
분석 파이프라인의 다섯 단계와 각 단계의 서비스 — 수집(Kinesis · MSK · DataSync), 저장(Amazon S3 데이터 레이크), 카탈로그와 변환(AWS Glue), 조회(Amazon Athena · Amazon Redshift), 시각화(Amazon QuickSight). 서비스 이름만 나열된 문항을 이 지도로 환원합니다
파이프라인 단계와 담당 서비스
단계 하는 일 주요 서비스
수집 이벤트와 파일을 받아들인다 Amazon Kinesis Data Streams, Amazon Data Firehose, Amazon MSK, AWS DataSync
저장 원본을 값싸게 오래 보관한다 Amazon S3 (데이터 레이크의 기본 저장소)
카탈로그 · 변환 스키마를 파악해 등록하고 형식을 바꾼다 AWS Glue (크롤러 · 데이터 카탈로그 · ETL 작업), AWS Lake Formation
조회 · 처리 질문에 답한다 Amazon Athena, Amazon Redshift, Amazon EMR, Amazon OpenSearch Service
시각화 사람이 보는 화면을 만든다 Amazon QuickSight

Kinesis 제품군 — 스트리밍 수집

Amazon Kinesis Data Streams

Data Streams는 스트리밍 데이터를 실시간으로 처리하기 위한 관리형 서비스입니다. 스트림은 샤드(shard)로 나뉘고, 레코드는 파티션 키의 MD5 해시로 어느 샤드에 들어갈지 결정됩니다. 같은 파티션 키를 가진 레코드는 항상 같은 샤드로 가므로, 파티션 키 단위의 순서가 보장됩니다.

Kinesis Data Streams 샤드 하나의 처리량
방향 한도 설명
쓰기 1,000 레코드/초 · 1 MiB/초 초과하면 ProvisionedThroughputExceededException이 발생합니다
읽기 (공유 처리량) 5 트랜잭션/초 · 2 MiB/초 샤드를 읽는 모든 소비자가 나눠 쓰는 대역입니다
읽기 (확장된 팬아웃) 소비자마다 2 MiB/초 등록된 소비자 수가 늘어도 서로 영향을 주지 않습니다

확장된 팬아웃(enhanced fan-out)은 소비자를 스트림에 등록한 뒤 HTTP/2 연결로 레코드를 밀어 주는 방식입니다. 소비자가 여럿이고 각자 빠르게 읽어야 할 때, 공유 대역을 나눠 쓰다 서로 굶는 상황을 없앱니다. 구독은 유지되는 동안 계속 이벤트를 받고, 일정 시간이 지나면 다시 구독해야 합니다.

Kinesis Data Streams의 보존 기간과 용량 모드
항목 값 의미
기본 보존 24시간 이 기간 안에는 같은 레코드를 몇 번이든 다시 읽을 수 있습니다
최소 보존 24시간 줄이면 그보다 오래된 데이터에 접근할 수 없게 됩니다
최대 보존 8,760시간 (365일) IncreaseStreamRetentionPeriod로 늘립니다
용량 모드 PROVISIONED / ON_DEMAND 프로비저닝 모드는 샤드 수를 직접 정하고, 온디맨드 모드는 자동으로 조정됩니다

프로비저닝 모드에서 용량을 바꾸는 방법은 SplitShard(분할) · MergeShards(병합) · UpdateShardCount(목표 개수 지정) 세 가지이며, 이 API들은 프로비저닝 모드에서만 동작합니다. 온디맨드 모드에서는 샤드를 직접 다루지 않습니다.

create-stream.sh — 온디맨드 스트림을 만들고 보존 기간을 7일로 늘립니다
aws kinesis create-stream \
  --stream-name clickstream \
  --stream-mode-details StreamMode=ON_DEMAND

# 보존 기간은 시간 단위입니다. 24시간이 기본이고 최대 8760시간입니다.
aws kinesis increase-stream-retention-period \
  --stream-name clickstream \
  --retention-period-hours 168

Amazon Data Firehose

Firehose는 스트리밍 데이터를 목적지에 적재하는 완전관리형 서비스입니다. 샤드도, 소비자 애플리케이션도, 체크포인트도 없습니다. 스트림을 만들고 목적지를 지정하면 버퍼에 모았다가 배달합니다.

Amazon Data Firehose의 소스와 버퍼링
항목 값 설명
소스 유형 DirectPut / KinesisStreamAsSource / MSKAsSource 애플리케이션이 직접 넣거나, Data Streams 또는 MSK를 소스로 붙일 수 있습니다
버퍼 크기 기본값 5 MiB (1~128 MiB) 이만큼 모이면 배달합니다
버퍼 간격 기본값 300초 (0~900초) 크기가 안 차도 이 시간이 지나면 배달합니다

목적지는 Amazon S3, Amazon Redshift, Amazon OpenSearch Service, OpenSearch Serverless, Splunk, 임의의 HTTP 엔드포인트, Snowflake, Apache Iceberg 테이블입니다. 배달 전에 AWS Lambda 함수로 레코드를 변환할 수 있고, S3로 보낼 때는 형식 변환도 구성할 수 있습니다.

여기서 시험이 노리는 성질이 나옵니다. Firehose는 버퍼링이 있으므로 완전한 실시간이 아니고, 데이터를 보관하지 않으므로 재생(replay)할 수 없습니다. 배달이 끝나면 Firehose 안에 남는 것은 없습니다.

Data Streams와 Firehose의 선택 기준

Kinesis Data Streams 와 Amazon Data Firehose 의 데이터 흐름 대비 위쪽 레인은 Kinesis Data Streams 입니다. 생산자가 보낸 레코드가 샤드에 들어가고 샤드 안에서는 순서가 보장됩니다. 레코드는 보존 기간 동안 샤드에 남아 있으므로 여러 소비자가 같은 데이터를 각자의 속도로 읽을 수 있고, 필요하면 되감아 다시 처리할 수도 있습니다. 실시간 경고를 보내는 소비자, 집계해 저장하는 소비자, 재처리하는 소비자가 동시에 붙는 그림입니다. 아래쪽 레인은 Amazon Data Firehose 입니다. 생산자가 보낸 데이터는 버퍼에 모이고, 버퍼 크기나 대기 시간 조건이 차면 목적지로 전송됩니다. 가는 길에 Lambda 함수로 변환할 수 있지만 이는 선택 사항입니다. 목적지는 Amazon S3, Amazon Redshift, Amazon OpenSearch Service 같은 적재 대상이며 배달이 끝나면 소비자가 직접 읽을 스트림이 남지 않습니다. 버퍼링 때문에 구조적으로 약간의 지연이 생깁니다. 그래서 실시간이라는 조건이나 여러 소비자가 각자 읽어야 한다는 조건은 Data Firehose 가 아니라 Data Streams 를 지목합니다. Kinesis Data Streams — 샤드에 담아 두고 여러 소비자가 각자 읽습니다 생산자 PutRecord 샤드 (Shard) 샤드 1 — 순서 보장 샤드 2 — 순서 보장 보존 기간 동안 남음 소비자 A — 실시간 경고 소비자 B — 집계 후 저장 소비자 C — 되감아 재처리 Amazon Data Firehose — 버퍼에 모았다가 목적지로 배달하고 끝냅니다 생산자 PutRecord 버퍼 크기 또는 대기 시간 조건이 차면 전송 Lambda 변환 선택 사항 목적지에 적재 Amazon S3 Amazon Redshift OpenSearch Service 소비자가 직접 읽을 스트림이 남지 않고, 버퍼링 때문에 구조적으로 지연이 생깁니다 real-time 이나 여러 소비자가 각자 읽는다는 조건은 Data Streams 를 지목합니다 S3 나 Redshift 로 적재만 하고 관리 부담을 줄이려면 Data Firehose 입니다
Data Streams와 Amazon Data Firehose의 데이터 흐름 대비 — 한쪽은 샤드에 보관하며 여러 소비자가 각자의 속도로 읽고, 다른 쪽은 버퍼에 모았다가 목적지로 배달하고 끝냅니다
Kinesis Data Streams와 Amazon Data Firehose 비교
항목 Kinesis Data Streams Amazon Data Firehose
역할 스트림에 보관하고 여러 소비자에게 제공 목적지에 적재
데이터 보존 24시간~365일 보존하지 않음 — 배달하면 끝
재생(replay) 가능 — 보존 기간 안에서 다시 읽습니다 불가
지연 소비자가 읽는 즉시 버퍼 크기 또는 간격만큼 지연
소비자 Lambda, Managed Service for Apache Flink, 직접 만든 애플리케이션 등 여러 개 구성한 목적지 하나
운영 부담 샤드(프로비저닝 모드)와 소비자 관리 샤드 개념 없음 — 완전관리형
순서 보장 파티션 키 단위로 보장 보장하지 않음

판단 규칙은 두 문장입니다. 여러 소비자가 각자의 로직으로 처리해야 하거나, 나중에 다시 읽어야 하면 Data Streams입니다. 받아서 S3나 OpenSearch에 넣기만 하면 끝이고 운영 부담을 줄이고 싶으면 Firehose입니다. 둘을 이어 붙이는 구성도 흔합니다 — Data Streams로 받아 실시간 처리를 하면서, 같은 스트림을 소스로 하는 Firehose가 원본을 S3에 적재하는 형태입니다.

Amazon MSK — 언제 Kinesis 대신인가

Amazon MSK는 Apache Kafka를 관리형으로 제공합니다. 클러스터 유형은 PROVISIONED와 SERVERLESS 두 가지입니다. 기능만 보면 Data Streams와 겹치는 부분이 많지만, 선택 기준은 기능이 아닙니다.

반대로 새로 만드는 파이프라인이고 애플리케이션 코드를 자유롭게 쓸 수 있다면 Kinesis 쪽이 운영 부담이 적습니다. 문제에 "기존(existing)"이라는 단어와 "Kafka"가 함께 나오면 MSK를 고르는 것이 거의 항상 맞습니다.

"실시간"이라는 한정어 SAA 빈출

분석 문항에서 가장 강력한 신호는 real-time 또는 near-real-time이라는 단어입니다. 이 단어가 보이면 배치 도구는 전부 소거됩니다. AWS Glue 작업, Amazon EMR 배치 잡, 예약 실행되는 Lambda, S3에 쌓아 두고 나중에 도는 파이프라인은 답이 아닙니다.

한정어가 지목하는 수집 도구
문제의 표현 지목되는 도구 소거되는 것
real-time (실시간) Kinesis Data Streams, Amazon MSK Glue ETL 작업, EMR 배치, 예약 실행
near-real-time (준실시간) Amazon Data Firehose (버퍼 간격을 짧게) 일 단위 배치
nightly / hourly / batch AWS Glue, Amazon EMR 스트리밍 서비스 (과잉 설계)
ad-hoc query (임시 조회) Amazon Athena 상시 가동 클러스터
operational dashboard on logs Amazon OpenSearch Service 데이터 웨어하우스

AWS Glue — 카탈로그와 ETL

Glue는 두 가지 일을 합니다. 메타데이터를 관리하는 일과 변환 작업을 실행하는 일입니다. 시험에서는 앞쪽이 더 자주 나옵니다.

AWS Glue의 구성 요소
구성 요소 하는 일
크롤러(crawler) 데이터 소스를 검사하고 분류자(classifier)로 스키마를 추론한 뒤, 결과를 Glue 데이터 카탈로그에 기록합니다. 대상은 Amazon S3 경로, JDBC 데이터 소스, Amazon DynamoDB 테이블이며 일정 실행이 가능합니다
데이터 카탈로그(Data Catalog) 데이터베이스와 테이블 정의를 담는 중앙 메타데이터 저장소입니다. Athena · EMR · Redshift Spectrum이 같은 카탈로그를 참조합니다
작업(job) 추출 · 변환 · 적재(ETL) 코드를 서버리스로 실행합니다. 워커 유형(G.1X 등)으로 크기를 정합니다

데이터 카탈로그가 왜 중요한가가 이 절의 핵심입니다. S3에 있는 파일은 그 자체로는 "어떤 컬럼이 있는지"를 모릅니다. 크롤러가 스키마를 추론해 카탈로그에 등록해야 Athena가 SQL로 조회할 수 있습니다. Athena가 답인 문제에서 Glue 크롤러가 함께 정답에 들어가는 이유가 이것입니다.

조회와 처리 — Athena, Redshift, EMR, OpenSearch Service

Amazon Athena

Athena는 API 문서 표현 그대로 "표준 SQL로 Amazon S3의 데이터를 직접 분석하는 대화형 쿼리 서비스"입니다. 서버리스라서 인프라를 준비할 것이 없고, 실행한 쿼리에 대해서만 비용을 냅니다. 쿼리는 병렬로 실행되며, 워크그룹으로 사용량과 권한을 분리합니다.

성능과 비용을 좌우하는 것은 S3에 데이터를 어떻게 두었는가입니다. 열 지향 형식(Parquet 등)으로 저장하고, 접두사로 파티션을 나누고, 파일을 지나치게 잘게 쪼개지 않는 것이 표준 권고입니다. Athena는 스캔한 데이터에 따라 요금이 정해지므로, 스캔량을 줄이는 설계가 곧 비용 최적화입니다.

athena-query.sh — 파티션 컬럼으로 스캔 범위를 좁혀 실행합니다. 버킷 이름과 날짜는 예시입니다
aws athena start-query-execution \
  --query-string "SELECT status_code, COUNT(*) AS hits \
    FROM cloudfront_logs \
    WHERE year='2026' AND month='07' AND day='29' \
    GROUP BY status_code ORDER BY hits DESC" \
  --work-group primary \
  --result-configuration OutputLocation=s3://example-athena-results/

Amazon Redshift

Redshift는 데이터 웨어하우스입니다. 여러 소스에서 모은 정형 데이터를 클러스터에 적재해 두고 복잡한 조인과 집계를 반복 실행하는 용도입니다. Athena와의 경계는 반복성과 데이터 양에 있습니다.

가끔 임시로 조회한다면 Athena가 맞습니다. 상시 가동 클러스터가 필요 없기 때문입니다. 고정된 BI 대시보드가 하루 종일 무거운 쿼리를 돌린다면 Redshift가 맞습니다. Redshift Spectrum을 쓰면 클러스터에 적재하지 않은 S3 데이터까지 함께 조회할 수 있습니다. Redshift 자체는 11장에서 데이터베이스 관점으로 다룹니다.

Amazon EMR

EMR은 Hadoop 기반 처리를 관리형으로 제공합니다. Apache Spark, Hive 같은 오픈 소스 프레임워크를 클러스터에서 실행하며, 머신러닝 · 과학 시뮬레이션 · 대규모 로그 처리처럼 SQL 한 줄로 표현되지 않는 처리가 대상입니다.

시험에서 EMR이 정답이 되는 신호는 명확합니다 — Spark, Hadoop, Hive, HBase 같은 프레임워크 이름이 문제에 직접 등장하거나, 기존 Hadoop 워크로드를 옮긴다는 맥락입니다. 그런 신호가 없는데 EMR을 고르면 운영 부담 한정어에 걸립니다.

Amazon OpenSearch Service

OpenSearch Service는 로그와 문서를 색인해 검색하고 시각화합니다. Firehose의 배달 목적지 중 하나이기도 합니다. "로그를 검색해야 한다", "운영 대시보드에서 전문 검색이 필요하다", "이상 징후를 로그에서 찾아야 한다"가 신호입니다. 같은 로그라도 SQL 집계가 목적이면 Athena, 검색이 목적이면 OpenSearch Service입니다.

AWS Lake Formation

Lake Formation은 데이터 레이크의 권한 관리 계층입니다. S3 경로를 데이터 카탈로그가 관리하는 리소스로 등록하고, 데이터베이스 · 테이블 · 컬럼 단위로 권한을 부여합니다. S3 버킷 정책과 IAM 정책만으로는 표현하기 번거로운 "이 팀에는 이 테이블의 이 컬럼만"을 중앙에서 처리하는 것이 핵심 가치입니다.

문제에 "여러 팀이 같은 데이터 레이크를 쓰는데 세분화된 접근 제어가 필요하다"가 나오면 Lake Formation입니다.

Amazon QuickSight

QuickSight는 서버리스 비즈니스 인텔리전스(BI) 서비스입니다. Athena · Redshift · RDS · S3 등을 데이터 소스로 붙여 대시보드를 만듭니다. 파이프라인의 마지막 칸이며, 데이터를 처리하는 도구가 아니라 사람에게 보여 주는 도구입니다.

배치와 스트리밍 — 무엇으로 갈리는가

배치와 스트리밍의 차이는 기술이 아니라 요구사항의 시간 축입니다. "결과가 언제 필요한가"에 대한 답이 분 단위 이하면 스트리밍이고, 시간 단위 이상이면 배치입니다.

배치 처리와 스트리밍 처리의 판단 기준
기준 배치 스트리밍
결과가 필요한 시점 시간 · 일 단위 초 · 분 단위
데이터 단위 파일 묶음, 기간별 파티션 이벤트 하나하나
대표 서비스 AWS Glue, Amazon EMR, Amazon Athena Kinesis Data Streams, Amazon MSK, Amazon Data Firehose
비용 성향 모아서 처리하므로 단위 비용이 낮습니다 상시 수집 경로를 유지해야 합니다
전형적인 문제 문장 "매일 밤 집계", "월별 리포트", "과거 데이터 재처리" "실시간 이상 탐지", "즉시 알림", "라이브 대시보드"

실무 파이프라인은 대개 둘을 함께 씁니다. Data Streams로 받은 이벤트를 즉시 처리해 경보를 내면서, 같은 데이터를 Firehose로 S3에 적재해 두었다가 Glue와 Athena로 나중에 분석하는 형태입니다. 시험 문항은 이 중 한쪽 요구만 제시하므로, 문장에서 시간 축을 찾는 것이 먼저입니다.

이름이 바뀐 서비스 정리

이 장에서 다루는 서비스는 최근 몇 년 사이에 이름이 바뀐 것이 많습니다. 옛 이름으로 된 자료를 읽을 때 같은 서비스임을 알아보지 못하면 그대로 오답으로 이어집니다.

분석 영역에서 이름이 바뀐 서비스
옛 이름 현재 이름 비고
Amazon Kinesis Data Firehose Amazon Data Firehose 2024년 2월 변경. API 접두사는 firehose 그대로입니다
Amazon Elasticsearch Service Amazon OpenSearch Service 2021년 9월 변경
Amazon Kinesis Data Analytics for Apache Flink Amazon Managed Service for Apache Flink 아래 주의 상자를 참고합니다

흔한 오해

시험 포인트 정리

확인 문제

이 장의 핵심을 확인하는 10문항입니다. 키보드만으로 완주할 수 있습니다 — 숫자키 1~5로 선택지를 고르고 Enter로 제출합니다.

학습용 유형 연결형과 순서 배열 문항이 섞여 있을 수 있습니다. 이 두 유형은 암기 확인에 효율이 좋아서 기본개념 확인 문제에만 넣었으며, 실제 SAA-C03 시험에는 출제되지 않습니다.

이어서 볼 곳

공식 문서 출처

이 장의 개념 서술과 API 동작은 모두 아래 문서에서 확인했습니다.