올바른 데이터베이스 선택하기
워크로드에 맞는 데이터베이스 사용해야함
- 쓰기 혹은 읽기, R/W 균형이 맞는 워크로드인지에 따라 다르다
- 처리량이 얼마나 되는지 데이터는 얼마나 저장되고 확장은 가능한지 평균 객체 크기와 액세스 빈도 액세스 방법
- 내구성, 지연시간 요구사항, 사용자 요구사항
- 데이터 모델과 데이터는 어떻게 쿼리할지
- 스키마가 고정적이거나 유연해야하는지, db관련 보고가 필요한지 검색 기능이 필요한지, 관계형 혹은 NoSQL 어떤 것이 필요한지
- 라이센스 비용이 드는지, Cloud Native로 전환할 계획이 있는지
Database Types
- RDBMS( = SQL/OLTP(Online Transaction Processing)) 조인에 유용
- RDS, Aurora
- NoSQL - 조인없고 SQL 쿼리 언어를 사용하지 않는다
- DynamoDB (~JSON), ElastiCache (Key/value 페어), Neptune (그래프), DocumentDB (MongoDB), Keyspaces (Apache Cassandra)
- Object Store
- S3(대용량 오브젝트) / Glacier(백업/아카이브)
- Data Warehouse: SQL 분석/BI
- Redshift(OLAP(Online Analytical Processing)), Athena, EMR
- 검색 - 제한없는 텍스트, 비정형 검색
- OpenSearch(JSON)
- 그래프 - 데이터 세트간의 관계를 표시
- Amazon Neptune
- 원장 → QLDB 원장은 완전하고 변경 불가능한 테이블 변경 기록을 유지하는 일련의 QLDB 테이블 및 저널로 구성됩니다. 원장에는 이름이 지정되며 태그를 지정할 수 있습니다.
- Amazon Quantum Ledger Database
- 시계열
- Amazon Timestream
RDS - summary
- 관리형 PostgreSQL / MySQL / Oracle / SQL Server / MariaDB / 사용자 지정 RDS
- 인스턴스 크기와 EBS 볼륨 유형 및 크기를 프로비저닝해야함
- 오토스케일링 기능이 있어도 프로비저닝이 필요
- 읽기 용량 확장을 위해 읽기 전용 복제본을 지원한다
- 고가용성 목적으로 다중 AZ에 둘 수 있다
- 자동백업 최대 35일 / 35일 이내에는 지정 시간 복구 기능을 지원한다
- 장기 보존 백업이 필요한 경우 수동 DB 스냅샷을 활용
- 유지 관리 기능을 예약할 수 있기 때문에 다운타임이 발생할 수 있다
- AWS가 db엔진을 업데이트하거나 기본 EC2인스턴스에 보안 패치 등
- RDS 프록시를 강제하여 RDS IAM 인증 추가하는 기능이 있다
- Secrets Manager와 통합하여 DB 자격 증명을 관리할 수 있다
- Oracle & SQL Server 유형의 경우 기본 인스턴스에 엑세스하거나 커스텀할 수 있다
- RDS 데이터베이스 보안
- 사용자 이름 + 패스워드 or IAM 인증 등
- 네트워크 보안을 위한 보안 그룹
- 데이터 암호화엔 KMS
- 전송 데이터 암호화에는 SSL/TLS
Aurora - summary
- PostgreSQL / MySQL과 호환되는 API로 컴퓨팅과 스토리지가 분리된 특별한 서비스
- 스토리지의 경우 기본적으로 데이터를 세 가용 영역 여섯 개의 복제본에 저장(기본옵션 변경 불가) - 스토리지 문제 발생시 백그라운드로 자가 동작하여 복구됨
- 오토스케일링이 내장되어 있다
- 컴퓨팅의 경우 클러스터화된 데이터베이스 인스턴스를 여러 가용 영역에 걸쳐 저장 가능
- 읽기 전용 복제본이 있다면 로드가 증가할 때 오토 스케일링을 통한 확장 가능
- 데이터베이스 인스턴스 클러스터가 있으므로 읽기와 쓰기를 위한 R/W엔드포인트가 필요
- RDS와 동일한 보안 모니터링과 유지 관리 기능을 갖는다
- Aurora 백업 및 복구 옵션 https://choiblog.tistory.com/178#3. RDS & Aurora 복구 옵션
- Aurora 추가 기능
- Aurora Serverless: 워크로드 예측 불가
- Aurora Multi-Master: 쓰기 고가용성 /쓰기 장애 조치
- Aurora Global: 글로벌 DB, 리전간 스토리지 복제는 1초 미만이다.
- 기본리전 문제 발생시 다른 리전을 기본리전으로 올릴 수 있다
- Aurora Machine Learning: SageMaker , Comprehend를 통해 수행 가능
- Aurora Database Cloning: 스냅샷을 통해 새 클러스터를 만들 수 있으며 더 빠르다
- 유지 관리할게 적고 유연성, 성능, 기능도 더 많다
ElastiCache - summary
- 관리형 Redis/Memcached RDS와 비슷하지만 캐싱 작업에 활용
- 인 메모리 데이터 스토어로 데이터 읽을 때 1밀리초 미만의 지연시간
- 캐시를 위한 ec2 인스턴스 유형을 프로비저닝해야함
- Redis 클러스터 생성, 다중 AZ, 읽기 복제본(sharding)
- 보안그룹, KMS, Redis 인증
- 백업 및 스냅샷 지정시간 복구 가능
- 관리형 및 예약된 유지 관리가 가능
- RDS가 결합된 데이터베이스에서 캐싱 작업을 수행하려면 애플리케이션 코드가 ElastiCache를 활용하도록 코드를 수정해줘야 한다
- 코드변경이 필요없는 캐싱 솔루션은 엘라스틱캐시가 아님
- 키-값 스토어가 있고 데이터베이스를 자주 읽는다면 데이터베이스 쿼리를 캐싱하는게 좋다
- 웹사이트 유저 세션 데이터에도 사용한다
- SQL 쿼리를 사용할 수 없다
DynamoDB - summary
- AWS 독점기술로 완전 관리형 서버리스 NoSQL 데이터베이스
- 밀리초 수준의 지연시간 제공
- 선택형 오토 스케일링이 탑재된 프로비저닝 용량 모드
- 점진적으로 늘어나거나 줄어드는 워크로드에 적합
- 온디맨드 용량 모드
- 오토 스케일링이 실행되므로 예측 불가능한 워크로드에 적합
- ElastiCache 대신 사용 가능하며 웹사이트의 세션 데이터를 저장하는 좋은 방법 중 하나
- TTL과 결합하여 일정 시간 후 만료 시킴
- 가용성이 매우 높다, 다중 AZ, 읽기 쓰기 완전 분리, 트랜잭션 처리도 가능
- 읽기 캐시 DAX 클러스터 생성 가능, 읽기 지연 시간이 마이크로 초 단위이다
- 보안, 인증 및 권한부여는 IAM
- 이벤트 처리 용량이 있어 DynamoDB Streams로 데이터베이스의 모든 변경 사항을 스트리밍
- Streams와 람다 통합 가능하며 변경이 될 때마다 람다 실행
- Kinesis Data stream으로 전송도 가능하며 이를 통해 Firehose 등 다른 서비스와 통합 가능
- 글로벌 테이블로 다중 활성 복제 가능 → 어느 리전에서나 RW가능
- 백업 옵션
- 자동 백업 - PITR을 활성화하면 최대 35일까지의 자동 백업이 가능하며 새 테이블로 복구
- 온디맨드 백업
- PITR 기간 내에 읽기 용량 단위를 사용하지 않고 S3로 데이터를 보낼 수 있다
- 쓰기 용량 단위를 사용하지 않고 S3로 새 테이블을 불러올 수 있다
- 400KB 미만의 문서를 다루는 작은 서버리스 애플리케이션 개발, 서버리스 분산 캐시
- SQL 쿼리는 사용 불가능
스키마를 빠르게 전개하는 경우와 유연한 데이터베이스 스키마를 선택해야함
S3 - summary
- 객체를 키-값으로 저장
- 큰 객체를 저장하는데 적합하며 작고 많은 객체를 저장하는데 부적합
- 서버리스이므로 확장성이 무한하며 최대 5TB 계속 버저닝 가능
- S3 Standard, S3 Infrequent Access, S3 Intelligent, S3 Glacier
- 라이프사이클 정책을 사용하면 자동적으로 계층을 전환한다
- 버저닝, 암호화, 복제, MFA, 엑세스 로그는 S3의 중요 키워드
- IAM보안, 버킷 정책, ACL, 엑세스 포인트, 람다를 사용해 객체를 애플리케이션에 전송하기 전에 수정 가능, CORS, Object/Vault 잠금
- SSE-S3, SSE-KMS, SSE-C, 클라이언트 암호화, TLS, 기본 암호화
- 배치 작업을 사용 가능 → 비암호화 객체 암호화, 리전 복제
- 멀티파트 업로드(병렬식 업로드), 전송 가속화, S3 Select(필요한 데이터 검색)
- 자동화로 S3 Event Notifications(SNS, SQS, Lambda, EventBridge)
- 정적파일, 키-값스토어 또는 웹사이트 호스팅
DocumentDB
- DocumentDB는 mongoDB용 Aurora
- NoSQLDB로 기반 기술이 mongoDB
- JSON 데이터를 저장, 쿼리, 인덱스하는데 사용
- 완전 관리형 DB로 3 AZ에 걸쳐 복제본이 형성된다
- 초당 수백만 건의 요청이 있는 워크로드로 확장될 수 있도록 설계
- 몽고 DB와 관련된 내용은 DocumentDB / NoSQL과 관련된 DB는 Dynamo와 Document DB
Amazon Neptune
- 완전 관리형 그래프 데이터베이스
- 그래프 데이터셋의 예시는 소셜 네트워크
- 서로 연결되고 그래프 구조를 가진다
- 3 AZ에 걸쳐 최대 15개의 읽기 복제본으로 복제
- 소셜 네트워크처럼 고도로 연결된 데이터 셋을 사용하는 애플리케이션에 적합
- 복잡하고 어려운 쿼리를 실행하는데 최적화
- 그래프 쿼리 지연시간은 밀리초이며 수십억 개의 관계를 저장 가능
- 여러 가용 영역에 걸친 애플리케이션에서도 가용성이 매우 높다
- 위키피디아, 사기탐지,추천엔진,소셜 네트워킹에 적합
Amazon Keyspaces(for Apache Cassandra)
- AWS의 관리형 Apache Cassandra를 보조한다
- Apache Cassandra는 오픈 소스 NoSQL 분산 데이터베이스
- Keyspaces를 사용하면 클라우드에서 AWS가 Cassandra를 직접 관리해준다
- AWS가 완전 관리하는 서버리스 고가용성/확장성
- 트래픽에 따라 테이블 자동 확대/축소
- 여러 AZ에 걸쳐 세 번 복제
- Cassandra Query Language(CQL)을 사용
- 어떤 규모에서도 지연시간이 10밀리초 미만 초당 수천 건 처리
- 온디맨드와 오토 스케일링 되는 프로비저닝 모드 → DynamoDB와 유사
- 보안,백업,PITR - 35일까지 지정시간 복구 가능
- IoT장치 정보, 시계열 데이터 저장
Apache Cassandra가 나오면 Keyspaces를 생각하면 된다
Amazon QLDB (Quantum Ledger Database)
- 원장(Ledger)은 금융 트랜잭션을 기록하는 장부
- QLDB는 금융 트랜잭션 원장을 갖는다
- 완전관리형 서버리스 고가용성, 3개의 가용영역에 걸쳐 복제한다
- 데이터의 시간에 따른 모든 변경 내역을 검토하는데 사용됨
- 데이터베이스에 무언가를 쓰면 삭제 수정이 불가능한 불변성이 있다
- 암호화 서명을 통해 실제로 삭제되지 않았는지 검증하기도 함
- 내부적인 저널 → 수정 시퀀스 → 수정이 일어날 때마다 암호화 해시가 계산됨
- 모든 사람이 확인 가능
- 금융 트랜잭션에 유용 → 트랜잭션이 db에서 사라지게 하는 것을 원하지 않음
- ledger 블록체인 프레임워크보다 2-3배 더 나은 성능을 얻을 수 있다
- QLDB에는 탈중앙화 개념이 없으므로 주의 ⇒ 중앙에 권한을 갖는 구성요소가 있음
- 중앙 데이터베이스에만 저널을 작성할 수 있다
- 많은 금융 규제 정책을 따른다
- SQL 사용 가능
Amazon Timestream
- 시계열 데이터베이스로 완전 관리형 확장 가능한 서버리스 데이터베이스
- 시계열이란 시간 정보를 포함하는 포인트의 모음
- 데이터베이스 용량 자동 확장 축소
- 수조 건의 이벤트를 저장 및 분석
- 시계열 데이터가 있을때는 관계형 DB보다 시계열 DB를 사용하는 것이 훨씬 빠르고 저렴하다
- 쿼리 예약, 다중 척도 레코드도 얻을 수 있다
- SQL과 완벽 호환
- 최신 데이터느 메모리에 저장되며 과거 데이터는 비용 효율적인 스토리지 계층에 저장
- 시계열 분석 기능이 있어 거의 실시간 데이터 분석과 패턴을 찾을 수 있다
- 전송 중 데이터, 저장 데이터 암호화 가능
- IoT 애플리케이션, 운영 애플리케이션, 실시간 분석 등에 사용
'TIL > AWS' 카테고리의 다른 글
AWS 머신러닝 (0) | 2023.06.06 |
---|---|
AWS 데이터 & 분석 (0) | 2023.06.05 |
AWS 서버리스 솔루션 아키텍쳐 (0) | 2023.06.05 |
AWS Serverless (1) | 2023.06.03 |
AWS 컨테이너 ECS, Fargate, ECR과 EKS (1) | 2023.06.03 |