이 글은 24년 하반기 AWS Certified Solutions Architect - Associate(이하 AWS SAA-C03) 자격증 취득을 위해서 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.
https://www.udemy.com/course/best-aws-certified-solutions-architect-associate
AWS DB 종류
Database Types
RDBMS(= SQL/OLTP(온라인트랜잭션)) : RDS, Aurora - 조인에 유용함
NoSQL : DynamoDB(JSON), ElastiCache(key-value), Neptune(graphs), DocumentDB(for MongoDB), Keyspaces(for Apache Cassandra)
Object Store : S3(for big objescts) / Glacier(for backups)
Data Warehouse (=SQL 분석 / BI(비지니스 인텔리전스)) : Redshift(OLAP), Athena, EMR
Search : OpenSearch(JSON) - 자유로운 텍스트, 비정형 데이터
Graphs : Neptune - 데이터 간의 관계 표시
Ledger(원장 DB) : Quantum Ledger DB - 트랜잭션 목록과 원장을 기록
Time series(시계열 DB) : Timestream
RDS
- 관리형 PostgreSQL, MySQL, Oracle, SQL Server, DB2, MariaDB, Custom
- RDS 인스턴스 크기와 EBS 볼륨 유형 및 크기 프로비저닝
- 스토리지 계층에 대한 자동 확장 기능
- 읽기 전용 복제본... 분석 시 사용
- Muti AZ.. 고가용성
- IAM으로 보안 관리, SG, KMS, 전송중 암호화 SSL
- 자동 백업 옵션.. 최대 35일(언제든 시점 복원 가능)
- 수동 데이터베이스 스냅샷으로 더 길게 백업
- 예정된 유지보수 작업이 DB에 Downtime을 가져올 수 있음.. 프로비저닝 및 업데이트 작업
- IAM 인증을 지원.. RDS 프록시로 이를 강제 가능
- SM으로 자격 관리 가능
- 사례 : 관계형 데이터베이스 저장, RDBMS, OLTP 등
Aurora
- PostgreSQL, MySQL과 호환
- Aurora는 스토리지와 컴퓨팅이 분리되어있음
- 스토리지 : 3개 AZ에 6개 레플리카에 저장됨, 가용성, 자가복구, 오토스케일링 가능
- 컴퓨팅 : 원한다면 여러개 AZ에도 가능하고 모여있기도 가능, 읽기 전용 복제본 포함 오토스케일링
- 클러스터 : DB에 읽기 쓰기를 하기 위해, 사용자 정의된 엔드포인트 필요(리더, 라이터 엔드포인트 있음)
- RDS와 동일한 엔진을 쓰기에 보안 모니터링 및 유지 기능
- 백업과 복구 옵션
추가 옵션
- Aurora Serverless - 예측할 수 없는, 간헐적인 워크로드가 있을 때 사용, 용량 계획 필요 없음
- Aurora Global - 글로벌 서비스에서 사용, 각 리전에 16개의 DB 읽기 인스턴스 제공.. 스토리지 복제는 1초 미만의 시간에 리전 간에 일어남, 주요 리전에 문제가 있을 때 , 두번째 리전을 새로운 주요 리전으로 승급
- Aurora ML - SageMaker와 Comprehend를 오로라에서 쓸 수 있음
- Aurora DB Cloning - 테스트 DB나 stage DB를 쓰고 싶을 때, 빠르게 새로운 Aurora 클러스터 생성 가능
- 사례 : RDS와 사례는 같지만 보수는 적고 유연성은 높고, 고성능
ElastiCache
- 관리형 Redis / Memcached.. RDS와 비슷하지만 캐싱에 사용
- 데이터 읽을 때 1ms미만
- EC2 인스턴스 타입을 프로비저닝
- 클러스터 생성, 다중 AZ, 샤딩을 위한 읽기 복제본
- SG, IAM, KMS, Redis Auth로 보안 가능
- 백업, 스냅샷, 지정 시간 복구 가능
- 관리된 예약된 유지 관리 가능
`- RDS가 결합된 DB에서 캐싱 작업을 하려면 애플리케이션 코드가 ElastiCache를 활용하도록 코드 수정
- 사례 : 키-값 저장, 자주 읽는 데이터, 웹사이트 세션 데이터 저장, ElastiCache에서는 SQL 사용불가
DynamoDB
- AWS 고유 기술.. ms 단위의 레이턴시 제공, 관리형 서버리스 NoSQL
- 용량 모드
1. 프로비저닝된 용량 : 시간 지나면서 점진적 증가 감소
2. 온디맨드 용량 : 프로비저닝 없이, 자동 스케일링... 워크로드 예측 어렵거나 수요 급상승할 때 사용
- key-value 저장소로 ElastiCache 대체 가능(세션 데이터 저장 좋음, TTL 기능 있음)
- 가용성 높음, 멀티 AZ, 읽기/쓰기가 완전히 분리, DynamoDB 테이블 외에도 트랜잭션 가능
- DAX 클러스터로 DDB와 완벽히 호환되는 읽기 캐시 생성 가능.. ms 단위 읽기 레이턴시
- 보안 인증 모두 IAM 가능
- DDB Stream으로 이벤트 프로세싱 가능
- 글로벌 테이블 : 다수 리전에 걸쳐 active-active 복제 가능
- 백업옵션
1. 자동 옵션 : PITR 활성화, 최장 35일까지 어떤 테이블도 복구 가능
2. 온디맨드 백업 : 백업을 장기간 보관
- PITR 기간 안에 RCU 안쓰고도 S3로 내보내기 가능, S3에서 WCU안쓰고도 새로운 테이블로 복구 가능
- 장점 : 빠르게 스키마 변경
- 사례 : 서버리스 애플리케이션 개발할 때, 각 데이터가 작을 때, 분산형 서버리스 캐시가 필요한 경우
S3
- 키/값 으로 저장.. 객체가 클 때 유용, 여러 작은 객체들에는 별로임
- 서버리스로 확장성 무한함
- 객체 최대 크기는 5TB, 시간에 따라 계속 버저닝
- 스토리지 계층 : 스탠다드, IA, Intelligent, Glacier... 수명 주기 정책 사용
- 기능 : 버저닝, 암호화, 복제, MFA-삭제, 액세스 로그
- 보안 : IAM, 버킷 정책, ACL, 액세스 포인트, 오브젝트 람다, CORS, Object/vault Lock
- 암호화 매커니즘 : SSE-S3, SSE-KMS, SSE-C, 클라이언트 측, 전송중 TLS, 기본 암호화
- 배치 작업 : S3 버킷 암호화, 다른 버킷으로 복제 등 각 객체에 대해 작업할 때
- 성능 : 파일 병렬식 업로드(멀티파트 업로드), 전송 가속화(다른 리전으로 더 빠르게 전송), S3 Select(필요한 데이터만 검색)
- 자동화 : S3 이벤트 알림 (SNS, SQS, Lambda, EventBridge)
- 사례 : 정적파일, 큰 파일의 키-값 저장, 웹사이트 호스팅
DocumentDB
- MongoDB의 Aurora버전... NoSQL DB
- MongoDB는 JSON 데이터를 저장, 쿼리, 인덱스
- Aurora와 비슷한 배포 개념을 가짐
- 완전관리형 DB,유용성 높고 3개 AZ에 나눠서 복제됨
- 자동으로 10GB까지 확장
- 초당 수백만개의 요청을 작업할 수 있도록 확장되도록 설계
Neptune
- 완전 관리형 그래프 DB
- 소셜 네트워크와 같은 그래프 데이터 세트를 다룰 때, 훌륭한 DB 선택이 됨
- 3개의 AZ에 걸쳐 최대 15개의 읽기 전용 복제본 생성
- 고도로 연결된 데이터 세트 애플리케이션
- 복잡하고 어려운 쿼리를 그래프 데이터 세트 위에서 실행하도록 최적화되어 있음
- DB에 수십억 개의 관계를 저장하고 ms 단위의 지연시간으로 그래프를 쿼리할 수 있음
- 지식 그래프를 저장하는데도 적합(위키피디아 DB.. 모든 위키피디아 문서가 서로 연결)
- 사례 : 사기 탐지, 추천 엔진, 소셜 네트워킹
Neptune Stream
- 모든 그래프 데이터 변경에 대해, 실시간을 정렬된 데이터 시퀀스 제공
- 변경사항이 즉시 Neptune 스트림에 반영됨
- 해당 스트림에는 중복이 없고, 변경 사항이 엄격하게 순서대로 정렬
- 스트림 데이터는 HTTP REST API를 통해 액세스 가능
- 사례 : 그래프 데이터에서 일부 변경 사항이 발생할 때 알림을 보냄, 데이터를 다른 데이터 저장소와 동기화할 때 사용, 냅튠 클러스터의 데이터를 여러 지역에 걸쳐 복제할 경우
Keyspaces
- AWS의 관리형 Apache Cassandra를 보조(* Cassandra는 오픈 소스 NoSQL 분산 DB)
- 서버리스, 확장성과 가용성 높고, AWS 완전 관리형
- 애플리케이션 트래픽에 따라 테이블 자동 확장/축소
- 여러 AZ에 걸쳐 세 번 복제됨
- CQL이라는 카산드라 쿼리 언어로 쿼리 가능
- 지연 시간 10ms 미만으로 짧고, 초당 수천 건의 요청 처리
- 용량 모드 : 프로비저닝 모드, 온디멘드 모드 (DynamoDB와 동일)
- 암호화, 백업 기능, PITR 최대 35일
- 사례 : IoT 장치 정보, 시계열 데이터 저장
QLDB
- Quantum Ledger DB(* Ledger(원장) 금융 트랜잭션을 기록하는 장부)
- 완전관리형, 서버리스, 가용성, 3개 AZ에 복제
- 애플리케이션 데이터를 시간에 따라 모든 변경 내역을 검토하는데 사용
- 불변 시스템(쓰면 수정 삭제 불가)
- 내부적으로 저널 존재.. 저널에는 수정 시퀀스가 있음.. 수정될 때마다 암호화 해시가 계산됨
- 사례 : 금융 트랜잭션
- 일반 원장 블록체인 프레임워크보다 2-3배 성능
- SQL로 데이터 관리 가능
- Amazon 관리형 블록체인과 차이점 : QLDB는 탈중앙화의 개념이 없음(중앙 DB에서만 저널작성)
Timestream
- 시계열 DB (* 시계열 : 시간정보를 포함하는 포인트들의 모음)
- 완전관리형, 빠르고, 확장성 있는 서버리스 서비스
- DB의 용량을 자동으로 확장 축소
- 매일 수조건의 데이터 분석/저장 가능
- 시계열 데이터에 대해서 훨씬 빠르고 저렴함
- 쿼리를 예약하고, 다중 척도 레코드도 얻을 수 있음, SQL과 완벽히 호환됨
- 최신 데이터는 메모리에 저장, 과거 데이터는 스토리지 계층에 저장
- 시계열 분석 기능으로 거의 실시간으로 데이터 분석 및 패턴을 찾음
- 전송 중 암호화, 저장 암호화 지원
- 사례 : IoT 애플리케이션, 운영 애플리케이션, 실시간 분석 등
아키텍처
1. AWS IoT(사물인터넷)에서 데이터를받음
2. Kinesis Data Stream의 데이터도 람다를 통해서 받을 수 있음, Prometheus, telegraf도 연결 가능, Kinesis Data Analytics For Apache Flink를 통해서도 전달 가능
3. Timestream은 QuickSight, SageMaker, Grafana 등 표준 JDBC, SQL과 호환 가능한 애플리케이션에 연결 가능
데이터 & 분석
Athena
- S3 버킷에 저장된 데이터 분석에 사용하는 서버리스 쿼리 서비스
- 표준 SQL 언어로 파일을 쿼리해야함(Presto 엔진에 빌드됨)
- S3 버킷에 데이터가 올라가면, 데이터를 옮기지 않고, Athena로 S3에서 데이터를 쿼리하고 분석 가능
- CSV, JSON, ORC, Avro, Parquet 등 다양한 형식을 지원
- 스캔된 데이터 TB당 5$ 고정가격
- Amazon Quicksight와 같이 쓸 일 많음.. 보고서와 대시보드 생성
- 사례 : 임시쿼리수행, BI 분석 및 보고, AWS 서비스에서 발생하는 모든 로그를 쿼리하고 분석 가능( VPC 흐름 로그, LB 로그, CloudTrail 추적 등 해당)
`- 서버리스 SQL 엔진을 사용한 S3 데이터 분석
`성능 향상
- 비용을 지불할 때, 열 기반 데이터를 쓰면 필요한 열만 스캔하기에 비용 절감 가능
- Apache Parquet or ORC가 권장됨... 성능도 향상됨
- Glue를 쓰면 CSV와 Parquet 간의 데이터를 변환하는데 유용함
- 데이터를 압축해 더 적게 검색해야 비용 절감
- 특정 열을 항상 쿼리한다면, 데이터 세트를 파티션하면됨
- *파티션 : S3버킷에 있는 전체 경로를 슬래시로 분할
- 각 슬래시에 다른 열 이름을 붙여, 열별로 특정 값을 저장
- 정확히 어느폴더에서 데이터를 가져올지 알 수 있음.. 폴더 이름을 연/월/일 로 나누는 느낌
- 큰 파일(>128MB)을 사용해서 오버헤드를 최소화하면 성능 향상
연합 쿼리
- Athena는 S3 뿐 아니라 어떤 SQL 쿼리든 사용 가능... 관계/비관계형, 객체, 온프레미스 등
- 데이터 원본 커넥터를 이용하면됨.. 원본 커넥터는 람다 함수로 다른 서비스에서 연합 쿼리 실행
- CloudWatch Logs, DynamoDB, RDS 등에서 실행 가능
- 각 쿼리를 조인할 수도 있음.. 결과를 S3에 저장도 가능
Redshift
- DB인 동시에 분석 엔진임
- PostgreSQL에 기반해있지만, OLTP에는 사용되지 않음
- OLAP(온라인 분석 처리)유형의 DB.. 분석과 데이터 웨어하우징에 사용
- 다른 데이터 웨어하우스보다 10배 좋은 성능, PB의 데이터로 확대가능
- Redshift에 데이터 넣으면 순식간에 무작위화 됨
- 데이터를 열 기반(Columnar) 스토리지로 사용... 행 기반과 달리 병렬 쿼리 엔진이 있음
- Redshift 클러스터에 공급한 인스턴스만큼 비용을 지불
- 쿼리 수행을 위해서 SQL 문장을 곧바로 사용하면됨
- Quicksight나 Tableau 같은 BI 툴은 Redshift와 통합됨
- Athena와 달리 Redshift는 S3로부터 모든 데이터를 로드해야하고, 로드 후에는 쿼리가 더 빠름.. 더 빠른 조인 가능... Redshift에는 인덱스가 있고, 고성능 데이터 웨어하우스를 위해 인덱스를 빌드함
- S3의 ad hoc(즉석) 쿼리라면 Athena가 좋고, 집중적인 데이터 웨어하우징(복잡한 쿼리, 조인 집합)에는 Redshift가 좋음
Redshift 클러스터
리더 노드 : 쿼리 계획과 결과 집합을 시킴
계산 노드 : 쿼리를 수행하고 결과를 리더에게 전송
- 노드 사이즈를 사전에 공급해야하고, 비용 절감을 위해 예약 인스턴스 사용 가능
스냅샷과 DR
- 대부분 클러스터에 대해 싱글 AZ이지만, 특정 클러스터 유형에 대해 멀티-AZ 모드 있음
- 싱글AZ일 때는 피해복구를 위해 스냅샷 사용 권장
- 스냅샷은 S3에 내부적으로 저장되고 증가함(변화만 저장)
- 스냅샷 모드 : 수동 / 자동(8시간 마다 / 5GB 마다)
- 스냅샷을 자동으로 복사하도록 구성 가능(해당 클러스터에서 다른 AWS 리전으로)
데이터 수집 방법
Kinesis Data Firehose : S3에 데이터가 저장되고, Frehose가 자동적으로 S3 복사명령을 내려서 Redshift로 옮김
S3 COPY 명령 : S3에서 바로 IAM 역할을 이용해서 Redshift로 복사(데이터 이동은 인터넷/VPC 둘다 가능)
EC2 인스턴스 JDBC 드라이버 : EC2에서 바로 작성.. 이때는 큰 묶음의 데이터를 작성하는 것이 좋음
Redshift Spectrum
- S3에 데이터가 있을 때, Redshift로 로드하지 않고 분석만 하고 싶을 때 사용
- 더 많은 처리량을 갖고 싶을 때 사용
- 쿼리를 시작할 수 있는 Redshift 클러스터가 이미 있어야함
- 쿼리를 시작하면 쿼리가 S3에 있는 데이터로 쿼리를 수행할 수천개의 Redshift Spectrum 노드로 제출됨
- 쿼리 - Redshift 클러스터 - 리더 노드 - 계산 노드 - Redshift Spectrum - S3 순서로 전달되고, 결과는 다시 병합되어 역순으로 돌아옴... 데이터 로드가 필요없음
OpenSearch(ElasticSearch)
- DynamoDB에서 DB의 기본키나 인덱스만을 이용해서 쿼리를 할 수 있었는데, OpenSearch에서는 어떤 필드로도 찾기를 할 수 있고, 부분 매칭도 가능함
- 애플리케이션에서 검색 기능을 제공하는 방식 널리 사용
- 분석적 쿼리에도 사용 가능
- Kinesis Data Firehose, AWS IoT, CloudWatch Logs 또는 커스텀 빌드 앱 등 다양한 데이터 받기 가능
- 보안 : Cognito, IAM, KMS, TLS 지원
- OpenSearch 대시보드로 데이터 시각화 가능
클러스터 모드
1. 관리형 클러스터 모드 : 실제 물리적인 인스턴스가 프로비저닝
2. 서버리스 클러스터 : 스케일링부터 운영까지 모두 AWS에서 관리
- 자체 쿼리 언어 존재.. 플러그인으로 SQL 호환 활성화 가능
아키텍처 예시 패턴1
1. DynamoDB에 사용자들이 데이터를 CRUD
2. DynamoDB Stream에 전송되고, 람다 함수가 그걸 잡아서 OpenSearch에 삽입
3. 애플리케이션에서 OpenSearch를 이용해서 특정한 항목 검색 가능
4. 항목 ID를 획득하면 그걸 DynamoDB에 호출해서 실제로 그 항목을 가져옴
아키텍처 예시 패턴 2
1. CloudWatch Logs에서 Subscription Filter로 람다 함수 or Kinesis Data Firehose에 전송 후 실시간으로 OpenSearch에 주입
2. 이 과정에서 Firehose를 이용하면 람다를 붙여서 데이터 변환도 가능
EMR
- EMR (Elastic MapReduce) : 빅데이터 작업을 위한 하둡 클러스터 생성에 사용
- 하둡 클러스터는 수백개의 EC2 인스턴스로 프로비저닝
- EMR는 여러 빅데이터 전문가 도구의 프로비저닝과 구성 제공(Apache Spark, HBase, Presto Flink)..
- 전체 클러스터를 오토스케일링, 스팟 인스턴스와도 통합되어 가격 할인 해택 가능
- 사례 : 데이터 처리, ML, 웹 인덱싱, 빅데이터
노드 유형
마스터 노드: 클러스터 관리, 다른 노드의 상태 조정, 장기 실행 필요
코어 노드 : 태스크 실행, 데이터 저장, 장기 실행 필요
태스크 노드 : 태스크만 실행, 보통 스팟 사용
구매 옵션
온디멘드 : 신뢰할 수 있고, 예측 가능한 워크로드
예약 : 비용 절약 가능.. 가능한 경우 자동으로 예약 인스턴스 사용.. 마스터나 코어 노드에 적합
스팟 : 태스크 노드에 사용
EMR에서 배포할 때는 장기 실행 클러스터를 사용해서 예약 인스턴스를 사용하거나, 임시로 사용하고 분석 완료되면 삭제할 수 있음
QuickSight
- 서버리스 ML 기반 BI 서비스.. 대화형 대시보드
- 빠르게 오토스케일링 가능, 웹사이트에 임베드 가능, 세션 당 비용지불
- 사례 : 비즈니스 분석, 시각화, 임시분석, 데이터로 BI 획득
- 다양한 데이터 소스와 연결, salesforce/Jira 등 서드파티 SW와도 통합, teradata와 같은 JDBC 프로토콜 쓰는 타사 DB와도 통합됨, excel, csv, json 과 같은 데이터 소스 가져올 수 있음
- SPICE 엔진 : 인메모리 연산 엔진으로 QuickSight로 데이터를 직접 가져올 때 사용.. 다른 DB에 연결되있을 때는 사용 안함
- 액세스 권한이 없는 사용자에게 특정 열이 표시되지 않게 열 수준 보안(CLS) 지원
대시보드 & 분석
- 사용자 정의(스탠다드 버전), 그룹 정의(엔터프라이즈 버전)... IAM 사용자와 다르고 QuickSight에 한정됨
- 대시보드는 읽기 전용 스냅샷.. 분석을 위해 필터, 매개변수 제어, 정렬 옵션 등이 저장됨
- 특정 사용자 또는 그룹과 대시보드 공유.. 권한에 따라 기본 데이터 볼 수도 있음
Glue
- 추출과 변환, 로드(ETL) 서비스를 관리
- 분석을 위해 데이터를 준비하고 변환하는데 매우 유용함
- 완전 서버리스 서비스
`- 사례1 : S3/RDS에 있는 데이터를 Redshift로 로드할 경우 Glue로 변환해서 로드 가능
`- 사례2 : 데이터를 Parquet(열 기반 데이터) 형식으로 변환.. Athena 등에서 효율적으로 사용하기 위함
Glue Data Catalog
- 데이터 세트의 카탈로그는 Glue 데이터 크롤러를 실행해 S3, RDS, DDB, JDBC 호환 DB에서 데이터 가져옴
- 데이터 크롤러는 모든 메타데이터를 Glue 카탈로그에 기록
- Athena/Redshift Spectrum/EMR에서 데이터와 스키마를 검색할 때, 백그라운드에서 Glue Data Catalog를 활용할 수 있음
기능
`Glue Job Bookmarks : 새 ETL 작업 시작시, 이전 데이터의 재처리를 방지
Glue Elastic View :
- SQL을 사용해 여러 데이터 스토어의 데이터를 결합하고 복제함
- ex) RDS, Aurora, S3에 걸친 뷰(가상테이블)를 생성
- 커스텀 코드 지원 X
- Glue가 원본 데이터의 변경 사항을 모니터링
Glue DataBrew : 사전 정의된 변환을 사용해 데이터 정리 및 정규화
Glue Studio : Glue에서 ETL 작업을 생성, 실행, 모니터링하는 GUI
Glue Streaming ETL :
- Apache Spark Structured Streaming을 위해 빌드
- ETL 작업을 배치 작업이 아닌 스트리밍 작업으로 실행 가능
- Kinesis Data Streaming, Kafka, MSK에서 이걸로 데이터를 읽을 수 있음
Lake Formation
- 데이터 레이크 생성을 도움 (*데이터 레이크 : 데이터 분석을 위해 모든 데이터를 한곳으로 모아주는 중앙 집중식 저장소)
- 완전 관리형 서비스
- 데이터 검색, 정제, 변환, 주입을 도움
- 데이터 수집, 정제, 카탈로깅, 복제 같은 복잡한 수작업을 자동화하고, ML 변환 기능으로 중복제거를 수행
- 정형/비정형 데이터 소스 통합 가능
- 블루프린트 제공(마이그레이션 도와줌) : S3, RDS, 온프레미스 관계형 DB, NoSQL 등
- 애플리케이션에서 행, 열 수준의 세분화된 액세스 제어 가능
- Lake Formation은 AWS Glue 위에 빌드되는 계층
- Lake Formation 내에는 '소스 크롤러', 'ETL 및 데이터 준비 도구', '데이터 카탈로깅' 도구 포함
- Athena, Redshift, EMR, Apache Spark 등에서 분석 가능
`- 장점 : 중앙화된 권한을 가짐.. 데이터 소스와 분석도구 사이에서 '액세스 제어 기능'과 '열 및 행 수준 보안'을 제공하기에 읽기 권한 제어 가능
Kinesis Data Analytics
SQL 애플리케이션용 - 레거시로 KDF 읽을 때 사용
- Kinesis Data Streams/Firehose에서 데이터를 읽어온다음 SQL 문을 적용하여 실시간 분석 가능
- 위 과정에서 S3 참조 데이터를 조인할 수도 있음
- 결과를 KDF로 보내면 S3, Redshift, OpenSearch 에 보낼 수 있음
- 결과를 KDS에 보내면 EC2 애플리케이션이나 람다로 보내서 실시간 처리 가능
- 사례 : 시계열 분석, 실시간 대시보드, 실시간 지표
Apache Flink용 - 권장
- Flink에서는 Java, scala, SQL로 스트리밍 데이터를 처리, 분석할 수 있음
- Flink는 코드로 작성해야하는 애플리케이션임
- KDS나 MSK로부터 데이터를 받을 수 있음
- 완전 관리형 클러스터로 Apache Flink 애플리케이션 실행 가능.. 자동 프로비저닝, 병렬연산, 오토스케일링
- 체크포인트와 스냅샷 백업 가능
- 사례 : 표준 SQL보다 강력해서 고급 쿼리 능력이 필요하거나, 스트리밍 데이터를 읽어야할 때 사용
- 단, KDF 데이터를 읽지 못함
MSK
- Amazon Managed Streaming for Apache Kafka.. Kafka는 Amazon Kinesis의 대안.. 데이터를 스트리밍
- 완전 관리형 카프카 클러스터... 그때그때 클러스터를 생성, 업데이트, 삭제
- MFK는 클러스터 내 브로커 노드와 Zookeeper 브로커 노드를 생성하고 관리
- 고가용성을 위해 VPC의 클러스터를 최대 3개의 멀티-AZ로 배포
- 일반 카프카 장애를 자동 복구
- EBS 볼륨에 데이터 저장 가능
MSK 서버리스
- 서버 프로비저닝이나 용량 관리 필요없음
Apache Kafka란?
- 데이터를 스트리밍하는 방식
- Kafka 클러스터는 여러 브로커로 구성되고, 데이터를 생산하는 생산자(Kinesis, IoT, RDS 등)는 데이터를 클러스터에 주입함... Kafka 주제로 데이터를 전송하면, 해당 데이터는 다른 브로커로 완전 복제됨
- Kafka 주제는 데이터를 스트리밍하고, 소비자는 데이터를 소비하기 위해 주제를 폴링함
- 데이터는 EMR, S3, SageMaker, Kinesis, RDS 등으로 보내짐
Kinesis과의 차이점
Kinesis Data Streams
- 1MB 메시지 크기 제한
- 샤드로 데이터를 스트리밍
- 용량을 확장하려면 샤드 분할.. 축소하려면 샤드 병합을 함
- TLS 전송 중 암호화.. KMS 저장데이터 암호화
Amazon MSK
- 1MB가 기본값, 더 큰 메시지 보존을 위해 늘릴 수 있음
- 파티션을 이용한 Kafka 주제를 사용
- 파티션 추가로 주제 확장만 가능.. 제거는 불가능
- 평문과 TLS 전송 중 암호화.. KMS 저장데이터 암호화