[AWS SAA-C03] AWS의 데이터베이스

이재민·2024년 6월 18일
0

AWS SAA-C03

목록 보기
16/22

RDS

관리형 PostgreSQL, MySQL Oracle, SQL 서버 MariaDB용 및 사용자 지정 RDS가 있다.
Amazon RDS를 사용할 때는 RDS 인스턴스 크기와 EBS 볼륨 유형 및 크기를 프로비저닝해야 한다.
스토리지 계층에 오토 스케일링 기능이 있어도 프로비저닝해야 한다.
읽기 용량 확장을 위해 읽기 전용 복제본을 지원한다.
고가용성 목적으로 대기 데이터베이스를 다중 AZ에 둘 수 있다.
대기 데이터베이스는 재해 발생 대비용이며 쿼리를 수행할 수는 없다.
RDS 데이터베이스 보안은 IAM을 통해 설정할 수 있다.
사용자 이름과 비밀번호로 DB에 연결할 수 있게 하거나 일부 사용자에게 IAM 인증을 부여할 수 있다.
네트워크 보안을 위해 Amazon RDS DB에 보안 그룹을 설정할 수 있다.
저장 데이터 암호화에는 KMS를 전송 데이터 암호화에는 SSL과 TLS를 사용할 수 있다.
자동 백업 옵션도 있습니다 최대 35일까지 지원된다.
최근 35일 내에는 지정 시간 복구 기능을 지원하고 복구 시 새 데이터베이스가 생성된다.
장기 보존 백업이 필요한 경우에는 수동 DB 스냅샷을 사용하면 된다.
유지 관리 기능을 예약할 수 있기 때문에 데이터베이스 다운타임이 발생할 수 있다.
프로비저닝하거나 AWS가 데이터베이스 엔진을 주기적으로 업데이트하고 기본 EC2 인스턴스에 보안 패치를 실행할 때 발생할 수 있다.
RDS 프록시를 강제하여 RDS에 IAM 인증을 추가하는 기능이 있다.
Secrets Manager와 통합하여 DB 자격 증명을 관리할 수도 있다.
기본 인스턴스에 액세스하고 사용자 지정하려면 RDS 사용자 지정 옵션을 사용할 수 있다.
Oracle, SQL 서버 유형의 데이터베이스에서 지원된다.

Aurora

Aurora는 데이터베이스 엔진인 PostgreSQL, MySQL과 호환되는 API다.
컴퓨팅과 스토리지가 분리된 특별한 서비스다.
스토리지의 경우 기본적으로 데이터를 세 가용 영역에 걸쳐 여섯 개의 복제본에 저장한다. 이 설정은 바꿀 수 없다. (고가용성)
스토리지에 문제가 발생하면 백그라운드에서 자가 복구 처리가 이뤄진다.
오토 스케일링이 기능이 내장돼 있어 스토리지 확장도 문제없다.
컴퓨팅의 경우 클러스터화된 실제 데이터베이스 인스턴스를 여러 가용 영역에 걸쳐 저장할 수도 있다.
읽기 전용 복제본이 있다면 로드가 증가할 때 오토 스케일링을 통해 용량을 늘릴 수 있다.
데이터베이스 인스턴스 클러스터가 있으므로 읽기와 쓰기를 위한 사용자 지정 엔드 포인트, 즉 라이터(writer) 엔드 포인트와 리더(reader) 엔드 포인트가 필요하다.
Aurora는 RDS와 동일한 보안 모니터링, 유지 관리 기능을 갖는다.
Aurora Serverless는 워크로드가 간헐적이거나 예측할 수 없는 경우 용량 계획을 하지 않아도 되므로 매우 유용하다.
쓰기 고가용성을 위해 쓰기 장애 조치가 지속해서 필요할 때 Aurora Multi-Master를 사용하면 DB 인스턴스 여러 개가 스토리지에 쓰기를 할 수 있도록 설정할 수 있다.
글로벌 데이터베이스를 원할 땐 Aurora Global을 사용하면 된다. 데이터베이스가 복제된 리전마다 최대 16개의 데이터베이스 읽기 전용 인스턴스를 제공하고 리전 간 스토리지 복제에 걸리는 시간은 일반적으로 1초 미만다.
기본 리전에 문제가 발생하면 보조 리전을 새 기본 리전으로 승격할 수 있다.
Aurora Machine Learning 모듈을 사용하면 SageMaker와 Comprehend를 사용해 Aurora에서 머신 러닝을 수행할 수 있다.
프로덕션 데이터베이스로부터 테스트 데이터베이스나 스테이징 데이터베이스를 만들려면 Aurora Database Cloning 기능을 사용해기존 클러스터에서 새 Aurora 클러스터를 만들면 된다. 스냅샷을 사용해서 복구하는 것보다 훨씬 빠르다.
Aurora의 사용 사례는 RDS와 같지만 Aurora는 유지 관리할 게 적고 유연성은 높으며 성능도 더 좋을 뿐만 아니라 내장된 기능도 더 많다.

ElasticCache

Amazon ElastiCache는 관리형 Redis/Memcached로 RDS와 비슷한 기능을 제공하지만 주로 캐싱 작업에 활용된다.
ElastiCache는 인 메모리 데이터 스토어로 데이터를 읽을 때 1밀리초 미만의 지연 시간을 제공한다.
캐시를 위한 EC2 인스턴스 유형을 프로비저닝해야 계속 진행할 수 있다.
Redis용에서는 클러스터 생성, 다중 AZ와 샤딩을 위한 읽기 전용 복제본을 사용할 수 있다.
IAM을 통해 프로비저닝한 보안과 보안 그룹을 사용할 수 있고 저장 데이터 암호화를 위한 KMS와 Redis 인증을 사용할 수 있다.
RDS처럼 백업 및 스냅샷 지정 시간 복구 같은 기능을 사용할 수 있다.
관리형 및 예약된 유지 관리가 가능하다.
Amazon ElastiCache를 사용해 RDS가 결합된 데이터베이스에서 캐싱 작업을 수행하려면 애플리케이션 코드가 ElastiCache를 활용하도록 코드를 수정해 줘야 한다. (중요)
시험에서 코드 변경이 필요 없는 캐싱 솔루션을 물어본다면 ElastiCache는 선택하면 안 된다.
ElastiCache의 사용 사례에는 키-값 스토어가 있고 데이터베이스를 자주 읽는다면 데이터베이스 쿼리를 캐싱하는 게 좋다.
웹사이트 사용자를 위해 세션 데이터를 저장할 수도 있다.
참고로 ElastiCache에선 SQL을 사용할 수 없다.

DynamoDB

DynamoDB는 AWS의 독점 기술로 관리형 서버리스 NoSQL 데이터베이스이나 밀리초 수준의 지연 시간을 제공한다.
선택형 오토 스케일링이 탑재된 프로비저닝된 용량 모드로 점진적으로 늘어나거나 점진적으로 줄어드는 이중(double) 워크로드가 있을 때 유용하다.
온디맨드 용량 모드에서는 용량을 프로비저닝하지 않아도 된다.
하지만 오토 스케일링이 실행되므로 워크로드를 예측하기 어려울 때나 데이터베이스의 수요가 급증할 때 유용한 모드다.
ElastiCache 대신 DynamoDB에 키-값을 저장할 수 있는데, 웹사이트의 세션 데이터를 저장하는 좋은 방법이다.
TTL 기능과 결합하면 일정 시간 후에 행이 만료되게 설정할 수 있다.
DynamoDB는 가용성이 아주 높다. 기본적으로 다중 가용 영역에 걸쳐 있기 때문이다.
읽기와 쓰기가 완전히 분리되어 있고 DynamoDB 테이블에서 트랜잭션을 처리할 수 있다.
DynamoDB와 호환되는 읽기 캐시 즉, DAX 클러스터를 생성할 수 있다.
DAX는 DynamoDB Accelerator를 의미하고, DAX 클러스터의 특징은 읽기 지연 시간이 백만분의 1초라는 점이다.(중요)
보안, 인증, 권한 부여는 IAM을 통해 처리된다.
DynamoDB에는 이벤트 처리 용량이 있어 DynamoDB Streams로 데이터베이스의 모든 변경 사항을 스트리밍할 수 있다.
DyanmoDB Streams를 AWS Lambda와 통합할 수도 있다.
그러면 DynamoDB 테이블에서 변경이 발생할 때마다 Lambda가 실행된다.
DynamoDB Streams 대신 Kinesis Data Streams로 데이터를 전송할 수도 있다.
Kinesis Data Firehose와 같은 다른 통합의 기능을 사용할 수 있다는 이점이 있다.
가령 Kinesis Data Streams에서 보유 기간을 1년까지 설정할 수 있다.
DynamoDB에는 글로벌 테이블 기능도 있다. 여러 리전 간에 다중 활성 복제를 할 수 있다.
어느 리전에서든 읽고 쓸 수 있으므로 다중 활성(active-active)이라고 부르는 것
백업 옵션은 두 가지다.
먼저 자동 백업이다. 지정 시간 복구를 활성화하면 새 DynamoDB 테이블에 테이블을 복구할 수 있다. 35일까지 가능
백업 보유 기간을 더 길게 설정하려면 온디맨드 백업을 활성화해서 새 테이블을 복구하면 된다.
지정 시간 복구 기간 내에 읽기 용량 단위를 사용하지 않고 DynamoDB 테이블을 Amazon S3로 내보낼 수 있다.
(35일 이내에 S3로 내보내는 기능을 사용하면서)
쓰기 용량 단위를 사용하지 않고 S3에서 새 테이블로 불러올 수도 있다.
시험에서 스키마를 빠르게 전개해야 하는 경우가 나온다면 DynamoDB를 떠올리자.
DynamoDB의 사용 사례로는 400KB 미만의 문서를 다루는 작은 서버리스 애플리케이션 개발 서버리스 캐시 분산이 있다.
참고로 DynamoDB는 SQL 쿼리 언어를 사용할 수 없다.

S3

S3는 객체를 키-값으로 저장하므로 큰 객체를 저장할 때는 유용하지만 여러 개의 작은 객체를 저장할 때는 유용하지 않다.
Amazon S3는 서버리스이므로 확장성이 무한하다.
객체의 최대 크기는 5TB이며 시간 경과에 따라 계속 버저닝한다.
스토리지 계층으로는 S3 Standard, Infrequent Access Intelligent와 Glacier가 있으며 계층을 전환하려면 수명 주기 정책을 사용해야 한다.
꼭 알아야 할 중요한 기능으로는 버저닝, 암호화, 복제 멀티 팩터 인증(MFA) 삭제와 액세스 로그가 있다.
보안 기능에는 IAM 보안이 있다.
S3 버킷에 버킷 정책을 생성할 수도 있고 ACL 기능도 있다.
Amazon S3에 액세스 포인트를 생성할 수도 있다.
S3 Object Lambda를 사용해 객체를 애플리케이션에 전송하기 전에 수정할 수도 있다.
CORS 정책도 있다.
Glacier의 객체 잠금 또는 볼트 잠금 개념을 활용할 수도 있다. (중요)
SSE-S3, 자체 KMS 키를 가져올 수 있는 SSE-KMS, SSE-C, 클라이언트 측 암호화 전송 중 TLS 암호화가 있다.
S3 버킷에 기본 암호화 체계를 설정할 수도 있다.
Amazon S3 버킷에 있는 모든 파일을 한 번에 작업하려면 S3 Batch를 사용해 배치 작업을 하면 유용하다.
파일 목록은 S3 인벤토리를 사용해 생성할 수 있다.
Amazon S3의 향상된 성능에는 파일을 병렬식으로 업로드할 수 있는 멀티파트 업로드가 있다.
S3 전송 가속화를 통해 S3 파일을 한 리전에서 다른 리전으로 더 빠르게 전송할 수 있다.
S3 Select로 Amazon S3에서 필요한 데이터만 검색할 수도 있다.
자동화 관련해서는 S3 Event Notifications가 있다.
SNS, SQS, Lambda EventBridge 등을 사용해서 Amazon S3 버킷에서 새로운 객체가 생성되는 이벤트에 반응할 수 있다.
Amazon S3의 사용 사례에는 정적 파일 큰 파일의 키-값 스토어 또는 웹사이트 호스팅이 있다.

Document DB

DocumentDB는 몽고DB용 Aurora. 몽고 DB 기술을 기반으로 한다.
즉, DocumentDB는 NoSQL 데이터베이스다. 몽고DB와 호환된다.
몽고DB는 JSON 데이터를 저장, 쿼리, 인덱스하는 데 사용됩니다, DocumentDB에도 Aurora와 같은 배포 개념이 있다.
즉, 완전 관리형 데이터베이스다. 고가용성
데이터는 3개의 가용 영역에 복제된다. 스토리지는 자동으로 10GB 단위로 최대 64TB까지 증가한다.
이렇게 DocumentDB는 초당 수백만 건의 요청이 있는 워크로드로 확장될 수 있도록 설계되었다.

Neptune

Neptune은 완전 관리형 그래프 데이터베이스다.
그래프 데이터 셋의 예는 소셜 네트워크다.
그래프 데이터 셋에서는 Neptune을 데이터베이스로 선택하는 게 좋다.
Neptune은 3 AZ에 걸쳐 최대 15개의 읽기 전용 복제본으로 복제한다.
Neptune은 소셜 네트워크처럼 고도로 연결된 데이터 셋을 사용하는 애플리케이션을 구축하고 실행하는 데 사용된다.
Neptune은 그래프 데이터 셋에서 복잡하고 어려운 쿼리를 실행하기에 최적화되어 있다.
데이터베이스에 최대 수십억 개의 관계를 저장할 수 있고, 그래프를 쿼리할 때 지연시간은 밀리초다.
여러 가용 영역에 걸친 애플리케이션에서도 매우 가용성이 높으며 지식 그래프를 저장하는 데도 뛰어나다.
예를 들어 모든 위키피디아 기사들은 서로 연결되어 있으니까 위키피디아 데이터베이스는 지식 그래프, 사기 탐지, 추천 엔진, 소셜 네트워킹도 마찬가지

Keyspaces

Keyspaces는 AWS의 관리형 Apache Cassandra(오픈 소스 NoSQL 분산 데이터베이스)를 보조한다.
Keyspaces를 사용하면 클라우드에서 AWS가 Cassandra를 직접 관리해 준다.
서버리스 서비스이며 확장성과 가용성이 높으며 AWS 완전 관리형이다.
애플리케이션 트래픽에 따라 테이블을 자동으로 확장/축소하며, 테이블 데이터는 여러 AZ에 걸쳐 세 번 복제됩니다
Keyspaces에서 쿼리를 수행하려면 Cassandra 쿼리 언어(CQL)을 사용하면 된다.
어떤 규모에서도 지연 시간이 10밀리초 미만으로 짧고 초당 수천 건의 요청을 처리한다.
DynamoDB처럼 두 가지 용량 모드가 있다.
온디맨드 모드와 크기가 자동 조정되는 프로비저닝 모드다.
DaynamoDB의 모드와 동일하다.
암호화와 백업 기능을 제공하고 최대 35일까지 지정 시간 복구가 가능하다.
사용 사례로는 IoT 장치 정보와 시계열 데이터 저장 등이 있다.

QLDB

퀀텀 레저 데이터베이스의 약자
원장(Ledger)은 금융 트랜잭션을 기록하는 장부다. 따라서 QLDB는 금융 트랜잭션 원장을 갖게 된다.
완전 관리형 데이터베이스이며, 서버리스고, 고가용성이다. 3개의 가용 영역에 걸쳐 데이터를 복제할 수 있다.
또한 애플리케이션 데이터의 시간에 따른 모든 변경 내역을 검토하는 데 사용된다.
불변 시스템이다. 즉, 데이터베이스에 무언가를 쓰면, 삭제하거나 수정할 수 없다.
정말로 아무 것도 삭제되지 않았는지 확인하기 위해, 암호화 서명을 하기도 한다.
내부적으로 저널이 있다. 저널에는 수정 시퀀스가 있다. 따라서 수정이 일어날 때마다, 암호화 해시가 계산된다.
아무 것도 삭제되거나 수정되지 않도록 보장하는 것이다.
데이터베이스를 사용하는 모든 사람이 확인할 수 있다.
금융 트랜잭션에 매우 유용하다. 왜냐하면 어떤 금융 트랜잭션도 데이터베이스에서 사라지게 하고 싶지 않기 때문이다.
이런 이유로 QLDB가 클라우드에서 훌륭한 원장 데이터베이스이다.
일반 원장 블록체인 프레임워크보다 2-3배 더 나은 성능을 얻을 수 있다.
또한 SQL을 사용하여 데이터를 관리할 수도 있다.
Amazon 관리형 블록체인이라는 다른 데이터베이스 기술도 있다.
QLDB와 관리형 블록체인의 차이점은, QLDB에는 탈중앙화 개념이 없다.
즉, Amazon 소유의 중앙 데이터베이스에서만 저널을 작성할 수 있다. 많은 금융 규제 규칙들을 따르는 것
즉, QLDB와 관리형 블록체인의 차이점은, QLDB에는 중앙 권한 구성 요소가 있다는 것
하지만 관리형 블록체인에는 탈중앙화 구성 요소도 있다.

Timestream

시계열 데이터베이스다.
완전 관리형이며 빠르고 확장성 있는 서버리스 서비스다.
시계열은 시간 정보를 포함하는 포인트의 모음을 말한다.
Timestream를 사용하면 데이터베이스의 용량을 자동으로 확장, 축소할 수 있고 매일 수조 건의 이벤트를 저장 및 분석할 수 있다.
시계열 데이터가 있을 때는 관계형 데이터베이스보다 시계열 데이터베이스를 사용하는 것이 훨씬 빠르고 저렴하다.
쿼리를 예약하고 다중 척도 레코드도 얻을 수 있다. SQL과도 완벽히 호환
최신 데이터는 메모리에 저장되고 과거 데이터는 비용 효율적인 스토리지 계층에 저장된다.
또한 시계열 분석 기능이 있어 거의 실시간으로 데이터를 분석하고 패턴을 찾을 수 있다.
AWS의 다른 데이터베이스들처럼 전송 중 데이터와 저장 데이터의 암호화를 지원한다.
Timestream의 사용 사례로는 IoT 애플리케이션이 있다.
운영 애플리케이션, 실시간 분석 등 시계열 데이터베이스와 관련된 모든 곳에서 사용할 수 있다.
Timestream은 AWS IoT 즉, 사물 인터넷에서 데이터를 받을 수 있고 Kinesis Data Streams의 데이터도 Lambda를 통해 받을 수 있다. Prometheus, telegraf와 통합할 수 있다.
Apache Flink용 Kinesis Data Analytics는 Kineis Data Stream과 Amazon MSK의 데이터를 Amazon Timestream에 전달한다.
Timestream과 연결 가능한 것으로는 대시보드를 빌드할 수 있는 Amazon Quicksight 기계 학습을 할 수 있는 Amazon SageMaker Grafana가 있다.
데이터베이스에 표준 JDBC가 연결돼 있으므로 JDBC, SQL과 호환 가능한 애플리케이션은 Amazon Timestream을 활용할 수 있다.

profile
문제 해결과 개선 과제를 수행하며 성장을 추구하는 것을 좋아합니다.

0개의 댓글