[SAA] Databases in AWS

Blue·2024년 3월 3일
0

SAA

목록 보기
20/25

Choosing the Right Database

AWS에는 선택할 수 있는 다양한 관리형 데이터베이스가 있다
무엇을 선택지는 어떤 아키텍처를 요구하는지에 따라 다르다:
읽기 중심인지, 쓰기 중심인지, 혹은 균형이 맞는 워크로드인지, 처리량은 얼마나 되는지, 그 처리량이 하루에 얼마나 달라지는지, 확장이 필요한지, 하루에 얼마나 달라지는지?
저장해야 할 데이터의 양은 얼마나 되고 얼마 동안 보관하애 하는지, 데이터는 계속 증가하는지, 평균 객체의 크기는 어떻게 되는지, 데이터 액세스 빈도와 액세스 방법은 무엇인지?
데이터 내구성은 어떤지, 데이터의 공급원은 무엇인지?
지연 시간 요구 사항은 어떻게 되는지, 동시 사용자는 얼마나 되는지?
데이터 모델은 어떻게 되는지, 데이터를 어떻게 쿼리할 것인지, 조인이 필요한지, 정형인지, 반정형인지?
강력한 스키마가 필요한지, 유연성이 필요한지, 데이터베이스 관련 보고가 필요한지, 검색 기능이 필요한지, 관계형 데이터베이스와 NoSQL 중 무엇이 필요한지?
라이센스 비용이 드는지, Aurora와 같은 클라우드 네이티브 데이터베이스로 전환할 계획이 있는지?

Database Types

RDBMS (= SQL / OLTP): RDS, Aurora - Join에 유용
NoSQL database – no joins, no SQL: : DynamoDB (~JSON), ElastiCache (키/값 쌍), Neptune (그래프), DocumentDB (MongoDB용), Keyspaces (Apache Cassandra용)
객체 스토어: S3 (대용량 객체용) / Glacier (백업/아카이브용)
데이터 웨어하우스 (= SQL 분석 / BI): Redshift (OLAP), Athena, EMR
검색: OpenSearch (JSON) - 자유로운 텍스트 입력 및 비정형 데이터 검색
그래프: Amazon Neptune - 데이터 세트 간의 관계 표시
원장: Amazon Quantum Ledger Database
시계열: Amazon Timestream

Amazon RDS

관리형 PostgreSQL / MySQL / Oracle / SQL Server / MariaDB / 사용자 지정 RDS
RDS 인스턴스 크기 및 EBS 볼륨 유형 및 크기를 프로비저닝해야 함
스토리지 오토스케일링 기능
읽기 용량 확장을 위해 읽기 전용 복제본 및 다중 AZ 지원
IAM - RDS 데이터베이스 보안 / 보안 그룹 - 네트워크 보안 / KMS - 저장 데이터 암호화 / SSL & TLS - 전송 데이터 암호화
자동 백업 옵션 (최대 35일까지), 지정 시간 복구 기능
장기 보존 백업을 위한 수동 DB 스냅샷
유지 관리 기능을 예약할 수 있음 (다운타임 발생 - 프로비저닝하거나 AWS가 데이터베이스 엔진을 주기적으로 업데이트하고 기본 EC2 인스턴스에 보안 패치를 실행할 때 발생)
RDS 프록시를 강제하여 RDS에 IAM 인증 추가, Secret Manager와 통합하여 DB 자격 증명
Oracle 및 SQL Server의 기본 인스턴스 액세스 및 사용자 지정을 위한 RDS 사용자 지정 옵션
사용 사례: 관계형 데이터 세트 저장 (RDBMS / OLTP), SQL 쿼리 및 트랜잭션 수행

Amazon Aurora

PostgreSQL / MySQL과 호환되는 API, 컴퓨팅과 스토리지가 분리되어 있음
스토리지: 데이터는 3개의 가용 영역에 걸쳐 6개의 복제본에 저장됨 - 고가용성, 자가 복구 처리, 오토 스케일링 기능
컴퓨팅: 클러스터화된 실제 데이터베이스 인스턴스를 여러 가용 영역에 걸쳐 저장, 읽기 전용 복제본의 오토 스케일링
클러스터: 읽기와 쓰기를 위한 DB 인스턴스에 대한 사용자 지정 엔드 포인트
RDS와 동일한 보안 / 모니터링 / 유지 관리 기능
Aurora의 백업 및 복구 옵션
Aurora Serverless: 예측할 수 없는 / 간헐적인 워크로드에 적합, 용량 계획을 하지 않아도 됨
Aurora Multi-Master: 쓰기 고가용성을 위해 쓰기 장애 조치가 지속해서 필요할 때 사용 - DB 인스턴스 여러 개가 스토리지에 쓰기를 할 수 있도록 설정 가능
Aurora Global: 데이터가 복제된 리전마다 최대 16개의 데이터베이스 읽기 전용 인스턴스 제공, 리전 간 스토리지 복제에 걸리는 시간 1초 미만
Aurora Machine Learning: Aurora에서 SageMaker 및 Comprehend를 사용하여 머신 러닝 수행
Aurora Database Cloning: 스냅샷 복원보다 기존 클러스터에서 새로운 클러스터 생성이 더 빠름
사용 사례: RDS와 동일하지만 더 적은 유지 보수/더 큰 유연성/더 높은 성능/더 많은 기능

Amazon ElastiCache

관리형 Redis / Memcached (RDS와 비슷한 기능 제공, 캐싱 작업에 활용)
인메모리 데이터 스토어, 데이터를 읽을 때 1밀리초 미만의 지연 시간 제공
캐시를 위한 EC2 인스턴스 유형을 프로비저닝 해야 함 (ex. cache.mg6.large)
Redis용 클러스터 생성, 다중 AZ, 샤딩을 위한 읽기 전용 복제본 사용 가능
IAM, 보안 그룹, KMS, Redis 인증을 통한 보안
백업, 스냅샷, 지정 시간 복구 기능
관리형 및 예약된 유지 관리 가능
애플리케이션 코드가 ElastiCache를 활용하도록 코드를 수정해야 함
코드 변경이 필요 없는 캐싱 솔루션을 물을 땐 ElastiCache는 정답이 될 수 없음!
사용 사례: 키-값 스토어, 가 높은 읽기, 적은 쓰기, DB 쿼리 결과를 캐싱, 웹 사이트의 세션 데이터 저장, SQL 사용 불가능

DynamoDB

AWS의 독점 기술, 관리형 서버리스 NoSQL 데이터베이스, 밀리초 수준의 지연 시간 제공, SQL 쿼리 사용 불가
용량 모드:
선택형 오토 스케일링이 탑재된 프로비저닝된 용량 모드 - 점진적으로 늘어나거나 점진적으로 줄어드는 이중(double) 워크로드가 있을 때 유용
온디맨드 용량 모드 - 용량 프로비저닝 필요 없음. 오토 스케일링이 실행되므로 워크로드를 예측하기 어려울 때나 데이터베이스의 수요가 급증할 때 유용
ElastiCache 대신 DynamoDB에 키-값을 저장할 수 있음 (ex. 웹사이트 세션 데이터 저장, TTL 기능 사용)
고가용성, 기본적으로 다중 가용 영역에 걸쳐있기 때문, 읽기와 쓰기가 완전히 분리되어 있고 트랜잭션 기능 제공
읽기 캐시용 DAX 클러스터, 마이크로초 읽기 지연 시간
보안, 인증, 권한 부여는 IAM을 통해 처리
이벤트 처리: AWS Lambda 또는 Kinesis Data Streams와 통합하기 위한 DynamoDB Streams
GlobalTable 기능: 어느 리전에서든 읽고 쓸 수 있음, 다중 활성 (active-active)
백업 옵션:
PITR을 사용한 최대 35일까지의 자동 백업 - 새 테이블로 복원
온디맨드 백업
PITR 창 내에서 RCU(읽기 용량 단위)를 사용하지 않고 S3로 내보내기(export), WCU(쓰기 용량 단위)를 사용하지 않고 S3에서 가져오기(import)
스키마를 빠르게 전개할 때 유용
사용 사례: 400KB 미만의 문서를 다루는 작은 서버리스 애플리케이션 개발, 서버리스 캐시 분산

Amazon S3

객체를 키-값으로 저장
큰 객체를 저장할 때는 유용, 여러 개의 작은 객체를 저장할 때는 유용하지 않음
서버리스이며 무한한 확장이 가능. 객체의 최대 크기는 5TB, 버전 관리 기능 제공
계층: S3 Standard, S3 Infrequent Access, S3 Intelligent, S3 Glacier / 계층을 전환하려면 수명 주기 정책 사용
기능: 버저닝, 암호화, 복제, MFA-Delete, 액세스 로그
보안: IAM, 버킷 정책, ACL, 액세스 포인트, S3 Object Lambda를 사용해 객체를 애플리케이션에 전송하기 전에 수정 가능, CORS, Glacier의 객체/볼트 잠금
암호화: SSE-S3, SSE-KMS, SSE-C, 클라이언트 측 암호화, 전송 중 TLS, S3 버킷에 기본 암호화 설정 가능
S3 Batch를 사용한 일괄 작업, S3 인벤토리를 사용한 파일 목록 조회
성능: 멀티파트 업로드, S3 Transfer Acceleration, S3 Select
자동화: S3 Event Notifications (SNS, SQS, Lambda, EventBridge)
사용 사례: 정적 파일, 큰 파일을 위한 키-값 저장소, 웹사이트 호스팅

DocumentDB

Aurora는 PostgreSQL / MySQL의 "AWS 구현"인 것처럼 DocumentDB는 NoSQL 데이터베이스인 MongoDB(NoSQL)에 대한 "AWS 구현"
MongoDB는 JSON 데이터를 저장, 쿼리 및 인덱싱하는 데 사용
Aurora와 유사한 "배포 개념"을 가지고 있음
완전히 관리되며, 3개의 가용 영역 간 복제로 높은 가용성을 제공
DocumentDB 스토리지는 자동으로 10GB 단위로 증가하여 최대 64TB까지 확장
초당 수백만건의 요청이 있는 워크로드로 확장될 수 있도록 설계됨

Amazon Neptune

완전 관리형 그래프 데이터베이스
소셜 네트워크는 우리가 아는 가장 일반적인 그래프 데이터세트이다.
사용자는 친구가 있음
게시글에는 댓글이 있음
댓글에는 좋아요가 있음
사용자는 게시글을 공유하고 좋아요를 누름
3개의 가용 영역에서 최대 15개의 읽기 복제본을 사용하여 높은 가용성을 제공함
복잡하고 어려운 쿼리에 최적화된, 높은 연결성을 가진 데이터 세트를 사용하여 애플리케이션을 빌드하고 실행할 수 있음
수십억 개의 관계를 저장하고 밀리초 지연 시간으로 그래프를 쿼리할 수 있음
여러 가용 영역에 복제하여 높은 가용성을 제공
지식 그래프 (위키피디아), 사기 탐지, 추천 엔진, 소셜 네트워킹에 적합

Keyspaces(for Apache Cassandra)

Apache Cassandra는 오픈 소스 NoSQL 분산 데이터베이스이고 Keyspaces는 AWS의 관리형 Apache Cassandra를 보조한다.

Apache Cassandra 호환 데이터베이스 서비스
서버리스 서비스, 확장성과 가용성이 높으며 AWS 완전 관리형
애플리케이션의 트래픽에 기반하여 테이블을 자동으로 확장 / 축소 함
테이블은 여러 가용 영역에 걸쳐 3번 복제됨
Cassandra Query Language (CQL) 사용
어떤 규모에서도 지연 시간이 10밀리초 미만으로 짧고 초당 수천 건의 요청을 처리함
용량: 온디맨드 모드 또는 오토 스케일링이 있는 프로비저닝 모드 (DynamoDB와 같음)
암호화, 백업, 최대 35일까지의 시점 복구 (PITR)를 지원
사용 사례: IoT 디바이스 정보, 시계열 데이터 등을 저장

Amazon QLDB

QLDB: Quantum Ledger Database
원장(ledger)은 금융 트랜잭션(거래)을 기록하는 장부이다.
완전 관리형, 서버리스, 고가용성, 3개의 가용 영역에 걸쳐 데이터 복제
시간에 따라 애플리케이션 데이터에 대한 변경 내역을 모두 검토하는 데 사용됨
변경 내역은 수정 또는 제거할 수 없으며, 암호화를 통해 검증할 수 있는 불변(Immutable) 시스템

일반적인 원장 블록체인 프레임워크보다 2~3배 더 좋은 성능을 가지며, SQL을 사용하여 데이터를 관리할 수 있음
Amazon Managed Blockchain과의 차이점: 탈중앙화 개념이 없으며, 금융 규정에 따라 운영됨

Amazon Timestream

완전 관리형, 확장성이 있는 서버리스 방식의 시계열 (time series) 데이터베이스
용량을 조정하기 위해 자동으로 확장/축소
하루의 수조 건의 이벤트를 저장하고 분석할 수 있음
관계형 데이터베이스 대비 1000배 빠르며 비용은 1/10
예약된 쿼리, 다중 척도 레코드, SQL 호환성
데이터 저장 계층: 최근 데이터는 메모리에 저장, 과거 데이터는 비용 효율적인 스토리지 계층에 저장
내장된 시계열 분석 기능을 제공하여 데이터의 패턴을 거의 실시간으로 식별할 수 있음
전송 중 데이터와 저장 데이터의 암오화 지원
사용 사례: IoT 애플리케이션, 운영 애플리케이션, 실시간 분석 등

profile
할수있다가 아닌 해야한다!!

0개의 댓글