초보 개발자

AWS choosing the right database 본문

카테고리 없음

AWS choosing the right database

taehyeki 2023. 2. 16. 23:10

 

RDS

PostgresSQL, MySQL, Oracle, SQL server, MariaDB, Custom

생성할 때 RDS인스턴스 사이즈, EBS볼륨 유형 및 크기를 프로비저닝해야한다.

오토스케일링 기능이 있어도 프로비저닝해야한다.

읽기 용량 확장을 위해 읽기 전용 복제본을 지원한다.

고가용성 목적으로 스탠바이 데이터베이스를 다중AZ에 둘 수 있다. ( 재해 발생 용, 쿼리수행x )

rds데이터베이스 보안은 iam을 통해 설정할 수 있다. 사용자  이름과 비번, iam, db에 보안그룹설정가능

저장데이터에는 KMS암호화, 전송데이터 암호화는 TLS, SSL을 사용할 수 있다.

자동 백업 옵션도 있다 최대 35일까지 지원된다. 

장기 보존 백업이 필요한 경우엔 수동 db스냅샷 생성

정기적인 메인테이넌스가 가능 ( 이 때 다운타임이 발생 )

RDS프록시를 강제하여 RDS에 IAM인증을 추가하는 기능이 있다.

인스턴스에 접속하고 싶다면 custom으로 생성하면 된다.

 

Aurora

postgresSQL, MySQL과 호환가능

 스토리지 :  기본적으로 데이터를 세 가용영역에 분산 배치한다.  6개의 복제본을 저장,

문제가 생기면 백그라운드 자가 복구 한다. 오토스케일링 기능이 있어 스토리지 확장도 문제없다.

컴퓨트 : db인스턴스의 클러스터는 다중 az에 있으며 복제본 오토스케일링가능

클러스터 : 리더 엔드포인트 라이터 엔드포인트가 필요, 

rds와 동일한 보안을 유지한다.

오로라 서버리스의 경우

워크로드가 간헐적이거나 예측할 수 없는경우 용량 계획을 하지 않아도 되므로 매우 유용하다

쓰기 고가용성을 위해 멀티마스터 기능을 사용하면 db인스턴스 여러개가 스토리지에 쓰기를 할 수 있도록 설정 가능

 

글로벌 데이터베이스를 원할 땐 aurora global을 사용해라

데이터베이스가 복제된 리전마다 최대 16개의 데이터베이스 일긱 전용 인스턴스를 제공하고  

리전 복제간 걸리슨 시간은 1초 미만 메인이 장애생기면 보조 리전이 기본리전으로 승격된다.

elastic cache

관리형 redis/memcached로 rds와 비슷한 기능을 제공하지만 캐시 기능을 제공하낟. 인 메모리 캐시로 데이터를 읽을 때 1밀리초 미만의 지연시간을 제공한다. 캐시를 위한 ec2 인스턴스 유형을 프로비저닝 해야 계속 진행할 수 있다.

redis용에서는 클러스터 생성 다중 az, 샤딩을 위한 읽기 복제본 생성, iam을 통해 프로비저닝과 보안그룹지정 저장데이터를 위함 kms암호화 redis인증 사용가능 , Rds처럼 백업가능하여 지정시간 복구 기능을 사용할 수 있다.

rds가 결합된 데이터베이스에서 캐싱작업을 수행하려면 애플리케이션 코드가 엘라스틱캐시를 활용하도록

코드를 수정해야한다. 시험에서 코드 변경이 필요 없는 캐싱 솔루션을 물어본다면 엘라스틱 캐시는 안된다.

세션데이터를 저장할 수도 있다. elasticache에서는 sql사용할 수 없다.

 

DynamoDB

선택할 수 있는 용량모드는 두가지이다.

1. 선택형 오토 스케일링이 탑재된 프로비저닝 용량 모드

점진적으로 늘어나거나, 줄어드는 워크로드에 적합하다. ( 급격한 변화는 안됨 )

 

2. 온디멘드 모드 

워크로드를 예측하지 못하거나 데이터베이스의 수요가 급증할 때 유용하다.

 

Elastcache대신 dynamoDB에 키-값을 저장할 수 있다. 웹사이트의 세션데이터를 저장하는 좋은 방법이다.

TTL기능과 결합하면 일정 시간 후에 행이 만료되게 설정할 수 있다.

 

기본적으로 다중 가용영역에 걸쳐 있기에 가용성이 높다.

읽기와 쓱기 완전히 분리 되어있음 (RCU, WCU )

dynamodb테이블에서 트랜잭션을 처리할 수도 있다.

 

dynamoDB와 호환되는 읽기 캐시, 즉 DAX클러스터를 생성할 수 있다.

읽기 지연시간이 백만분의 1초이다. 

보안 인증 권한 부여는 IAM을 통해 처리된다. 

DynamoDB Stram으로 데이터베이스의 모든 변경사항을 스트리밍 할 수 있다.

DynamoDB stream을 lambda와 결합할 수 있다. 이벤트 발생할때마다 람다 실행 가능

DynamoDB 스트림을 Kinesis Data Stream에 보낼 수도 있다. 또 이것과 kinesis firehose와 연결해 다양한

기능을 엮을 수도 있다. 

dynamoDB는 sql쿼리 언어 사용 불가 

 

글로벌 테이블 기능도 존재한다. 여러 리전간 다중 활성 복제를 할 수 있다.

어느 리전에서든 읽고 쓸 수 있으므로 다중 활성이라고 부른다.

 

자동백업이 된다. 35일까지 가능 

백업본을 db테이블을 amazon s3로 내보낼 수도 있다. 

시험에서 스키마를 빠르게 전개 해야한다는 내용이 나오면 dynamoDB선택

400kb 미만 문서를 다루는 작언 서버리스 애플리케이션 개발

서버리스 캐시 분산

 

S3

큰 객체를 저장할때는 좋지만 작은 것을 저장할 때는 좋지않다.

S3는 서버리스이므로 확장성이 무한하다.

최대 객체 크기 5TB ( 개당 )

스토리지 클래스가 다양하고 계층을 전환하려면 수명주기 정책을 사용하면 된다. 

버저닝, 암호화,(sse-s3, sse-kms, sse-c, 클라이언트 측 TLS 암호화 ) 복제, 액세스 로그, MFA인증 삭제, 

보안기능엔 아이엠이 있고

s3버켓이 정책생성, 

acl기능.

s3 액세스 포인트 생성,

객체를 애플리케이션에 전송하기전에 s3 lambda를 사용해 수정할 수도 있다.

CORS,

clacier의 객체 잠금, 볼트 잠금 개념도 있다.

Amazon s3버킷에 있는 모든 파일을 한번에 작업하려면  s3 batch를 사용하면 된다.

( 비암호화 객체를 암호화 한다던가, s3복제를 활성화가기전에 기존 파일을 다른 버킷으로 복사 )

파일 목록은 s3 inventory를 통해 생성할 수 있다.

멀티파트 업로드가있다.  (5gb넘으면 무조건해야하고 100mb이상 업로드시 권장 )

s3 accelator 가 있는데 s3파일을 한 리전에서 다른 리전으로 빠르게 전송 가능 ( cloudfront사용하는 것 )

멀티파트 업로드와 같이 사용할 수 있다.

s3 select로 amazon에서 필요한 데이터만 검색할 수도 있다. ( 이전에는 다 받아와서 필터해야 했음 )

s3에서 일어난 이벤트에 대해서 sns, sqs, lambda,. eventbridge등과 연결할 수 있다 )

정적파일,웹사이트 호스팅, 키밸류 저장이다.

 

 

DocumentDB

몽고디비를 기반으로한 nosql 데이터베이스이다. 

mongodbd와 호환이 되며, json data를 저장 쿼리 인덱스 하는데 사용된다.

데이터는 3개의 가용영역에 복제된다. ( 오로라랑 같음)

스토리지는 자동으로 10gb단위로 최대 64tb까지 증가

시험에 몽고 DB나오면 무조건 docomuent DB

NoSQL은 documentDB, dynamoDb를 떠올려라.

 

Neptune

완전 관리형 그래프 데이터베이스이다.

소셜 네트워크를 보면 사람들은 친구를 맺고 좋아요를 누르고 연결되고 댓글을 읽는 등의 일을하며

사용자에는 친구가 있고 게시물에는 댓글이 있고, 댓글에는 좋아요가 있다.

이 모든것들이 연결되어 그래프를 만든다.

서로 연결시킨 데이터를 만들 때 사용하면 좋다. 

시험에서 그래프 데이터 베이스와 관련된게 나오면 Neptune이다.

 

Keyspaces

Apache Cassandra가 시험에 나오면 Amazon Keyspace와 관련이 있다.

QLDB

Quantum Ledger Database의 약자이며

금융 트랜잭션 원장을 갖는다.

불변의 시스템이어서 데이터베이스에 무언가를 쓰면 삭제하거나 수정할 수 없다.

금융 트랜잭션에 유용하다. 

QLDB와 관리형 블록체인의 차이점은 QLDB에는 탈중앙화 개념이 없다. 

QLDB에는 중앙 권한 구성 요소가 있다.

 

금융 트랜잭션이나 원장이 나오면 QLDB를 떠올리자

 

TimeStream

서버리스 서버이며

타임 시리즈 데이터 베이스이다.

자동으로 확장 축소하며 매일 수조 건의 이벤트 처리 가능

시계열 데이터가 있을때는 관계형 데이터베이스보다 시계열 데이터베이스를 사용하는것이

비용적인측면에서도 훨씬 빠르고 효율적이다.

실시간으로 데이터 분석하고 패턴발견가능 

 

사용사례는 IoT 애플리케이션이 있다.

운영 애플리케이션, 실시간 분석등

 

사물인터넷에서 데이터를 받거나, 키네시스 데이터 스트림를 람다를 통해 받을 수도 있다.