📒 Amazon Aurora
- Aurora는 Replicas (Auto Scaling, Custom Endpoints), Serverless, Multi-Master, Global Aurora의 4가지 종류가 있다.
- Aurora는 RDS의 MySQL 보다 5배, Postgres 보다는 3배 성능이 좋다.
- 모니터링하지 않아도 10GB에서 128TB 까지 자동으로 커진다.
- 읽기 전용 복제본을 MySQL은 최대 5개지만 Aurora는 최대 15개를 가진다.
- MySQL에 비해 20% 정도 비싸지만 효율적이다.
- 쓰기 요청을 할 때마다 6개의 데이터 복제본을 3개의 AZ에 걸쳐 저장한다.
- 마스터가 작동을 하지 않을 경우 평균적으로 30초 안에 장애 조치가 이루어진다.
읽기 전용 복제본이 마스터로 바뀔 수 있지만 기본적으로 마스터는 하나 뿐이다.
- 읽기 전용 복제의 좋은 점은 리전 간 복제를 지원한다.
- KMS를 통해 암호화되고, 자동 백업 및 스냅샷, 복제본이 SSL을 통해 전송 중 암호화되고 SSH 할 수 없다. / 보안은 RDS와 전부 동일하다.
- 읽기 전용 복제본 중 사양이 다를 때 사용자 지정 Endpoint를 사용할 수 있다.
- 각 읽기 복제본은 티어(0-15)를 제공한다.
장애 복구 시 가장 우선 순위의 티어(낮은 숫자)를 기반으로 장애 복구를 시작한다.
둘 이상의 Aurora 복제본이 동일한 우선 순위를 공유하면 크기가 가장 큰 복제본을 승격한다.
동일한 우선순위와 크기를 공유하면 동일한 승격 티어에서 임의의 복제본을 승격한다.
🔔 Aurora DB Cluster
- MasterDB는 Writer Endpoint를 통해 Client와 통신하고 읽기 전용 DB는 Reader Endpoint를 통해 Client와 통신하는데 Read Endpoint가 로드밸런싱을 해준다.
🔔 Aurora Machine Learning
- SQL 인터페이스를 통해 애플리케이션에 ML기반 예측을 추가할 수 있는 개념이다. / Aurora + ML Service
- 지원되는 ML Services : AWS SageMaker, Comprehend
- Aurora Serverless는 Aurora를 위한 온디맨드 자동 스케일링을 구성한다.
- 간헐적이며 산발적이거나 예측할 수 없는 워크로드를 위해 비교적 간단하고 비용 효율적인 옵션을 제공한다.
📒 Amazon DynamoDB
- DynamoDB는 모든 규모에서 빠르고 유연한 비관계형,NoSQL(키-값) 데이터베이스이다.
- DynamoDB를 통해 고객은 분산 DB를 운영하고 AWS로 확장하는데 따른 관리 부다에서 벗어날 수 있으며, 하드웨어 프로비저닝 , 설정 및 구성, 처리 능력 계획, 복제, S/W 패치 또는 클러스터 확장에 대해서도 걱정할 필요가 없다.
데이터 읽기 방식 종류 3가지
- 최종적 일관된 읽기 (기본값)
DynamoDB 테이블에서 데이터를 읽을 때, 응답에 최근 완료된 쓰기 작업의 결과가 반영되지 않을 수 있다.
응답에는 부실 데이터가 일부 포함될 수 있다.
잠시 후 읽기 요청을 반복하면 응답이 최신 데이터를 반환한다.
- 강력한 일관된 읽기
강력히 일관된 읽기를 요청하면 DynamoDB는 성공한 모든 이전 쓰기 작업의 업데이트가 반영된 최신 데이터를 포함하는 응답을 반환한다.
하지만 이러한 일관성은 다음과 같은 몇 가지 단점을 수반한다.
- 강력한 일관된 읽기(strongly consistent read)는 네트워크 지연 또는 중단이 발생한 경우에 사용이 어려울 수 있습니다.
이 경우 DynamoDB는 서버 오류(HTTP 500)를 반환할 수도 있습니다.
- 강력한 일관된 읽기는 최종적 일관된 읽기보다 지연 시간이 더 길 수도 있다.
- 글로벌 보조 인덱스에서는 강력히 일관된 읽기가 지원되지 않습니다.
- 강력한 일관된 읽기는 최종적 일관된 읽기보다 처리 용량을 더 많이 사용합니다.
- ACID 트랜잭션
- 단일 테이블에 파티션 키 값의 수가 매우 적은 경우, 쓰기 작업을 더 많은 고유 파티션 값에 배포하는 것이 좋다.
🔔 DynamoDB Accelerator (DAX)
- DynamoDB를 위한 가용성이 뛰어난 완전관리형 인 메모리 cache
- 초당 요청 수가 몇 백만 개인 경우에도 몇 밀리초에서 몇 마이크로초 까지 최대 10배의 성능을 제공한다.
@ 인 메모리 캐시는 모든 데이터를 메모리에만 올려놓고 사용하는 데이터베이스의 일종이다.
🔔 DynamoDB Streams
- DynamoDB 테이블에서 시간 순서에 따라 항목 수준 수정을 캡처하고 이 정보를 최대 24시간 동안 로그에 저장한다.
- 로그와 데이터 항목은 변경 전후 거의 실시간으로 나타나므로 애플리케이션에서 이러한 로그와 데이터에 액세스할 수 있다.
📒 Amazon ElastiCache
- 인터넷 규모의 실시간 애플리케이션을 지원할 수 있도록 1밀리초 미만의 지연 시간을 제공하는 인 메모리 데이터 스토어이다.
- 널리 사용되는 오픈 소스 호환 인 메모리 데이터 스토어를 클라우드에서 원활하게 설정, 실행 및 크기 조정을 한다.
- 처리량이 많고 지연 시간이 짧은 인 메모리 데이터 스토어에서 데이터를 검색하여 데이터 집약적 앱 구축 및 기존 DB 성능 강화
- 캐싱, 세션 스토어, 게이밍, 지리공간 서비스, 실시간 분석 및 대기열과 같은 실시간 사용 사례가 있다.
- 밀리 초 미만의 응답 시간을 필요로 하는 가장 까다로운 애플리케이션을 위한 완전 관리형 Redis 및 Memcached를 제공한다.
- 멀티스레드 아키텍처가 Memcached에서 지원되고 나머지 스냅샷, 복제, 게시/구독 등 많은 부분에서 Redis가 다양하므로 Redis가 좀 더 좋아보인다..
🔔 사용자 세션을 관리하는 방법
- 분산된 인 메모리 키/값 DB
- 네트워크 지연 시간이 짧아 비용이 적게 든다.
- 쿠키에 모든 세션 데이터를 저장하는 것으로 충분하며, 중요 데이터를 저장하려면 서버 측 세션을 사용하는 것이 좋다.
📒 Amazon RDS
- SQL, Oracle, MySQL, PostgreSQL, MariaDB, Aurora를 지원한다.
- MySQL용 RDS, MariaDB, PostgreSQL 및 Oracle 데이터베이스 엔진의 경우, RDS 인스턴스를 단일 AZ에서 다중 AZ로 변경하면 다음과 같은 프로세스를 수행한다.
- 기본 인스턴스의 스냅샷이 생성
- 다른 AZ에서 위의 스냅샷으로부터 새로운 대기 인스턴스가 생성
- 기본 인스턴스와 대기 인스턴스 간에 동기식 복제가 구성
- 단일 AZ에서 다중 AZ로 전환될 때 가동 중지 시간이 발생하지 않는다.
하지만 대기 중 데이터가 기본 데이터와 일치하기 위해 따라잡는 동안 지연 시간이 증가할 수 있다.
- 모든 전송 데이터를 보호하기 위해 Root CA인증서를 다운로드하고 rds.force_ssl 파라미터를 1로 설정할 수 있다.
@ PostgreSQL 포트 : 5432
- CloudWatch는 DB인스턴스의 하이퍼바이저에서 CPU활용률에 대한 메트릭을 수집하고 확장 모니터링은 인스턴스의 에이전트에서 해당 메트릭을 수집한다.
📒 Amazon RedShift
- 클라우드에서 완벽하게 관리되는 페타바이트 급 데이터 웨어하우스 서비스이다.
- 작게는 수백 기가바이트부터 시작하여 페타바이트 이상까지 데이터를 확장할 수 있다.
- 이를 통해 데이터를 사용하여 비즈니스 및 고객에 대한 새로운 인사이트를 발굴하는 것도 가능하다.
- 데이터 웨어하우스를 생성할 때는 먼저 RedShift 클러스터라는 노드 집합을 시작하는 것이 첫 번째이다.
- 클러스터 프로비저닝을 마치면 데이터 집합을 업로드하여 데이터 분석 쿼리를 실행할 수 있다.
- 데이터 집합의 크기와 상관없이 오늘날 사용되는 것과 동일한 SQL 기반 도구 및 비즈니스 인텔리젼스 애플리케이션을 사용하여 쿼리 성능을 가속화한다.
- PostgreSQL 기반 온라인 분석 처리와 데이터 웨어하우스이다.
- 행 대신 열로 저장되어 열 형식 스토리지 데이터라고도 한다.
- 최대 128개의 노드들로 구성되고 각 노드들은 최대 128TB를 가질 수 있다.
- 다중 AZ는 지원하지 않고 오직 단일 AZ만 지원한다.
-스냅샷 설정이 자동이든 수동이든 클러스터의 스냅샷을 자동으로 캡처하여 다른 리전으로 보내준다.
🔔 데이터를 습득하는 방식 3가지
- Kinesis Data Firehose를 통해 RedShift로 전송
- S3 버킷에서 데이터를 복사하라는 명령 (VPC 라우팅 사용가능)
- JDBC Driver : EC2를 사용하여 데이터를 삽입할 때 큰 배치의 데이터를 쓰기 할 때 적합하며 한번에 한 행을 쓰기하는 데이터베이스에는 매우 비효율 적이다.
🔔 RedShift Spectrum
- Amazon Redshift Spectrum은 데이터 로딩이나 ETL 없이도 Amazon S3의 데이터 레이크에 대해 쿼리를 실행할 수 있게 해주는 Amazon Redshift의 기능이다.
- SQL 쿼리를 발행하면, 쿼리가 Amazon Redshift 엔드포인트로 전달되고 여기에서 쿼리 플랜을 생성하고 최적화한다.
- Amazon Redshift는 로컬에 있는 데이터와 Amazon S3에 있는 데이터가 무엇인지 파악하고, 읽어와야 하는 S3 데이터 양을 최소화하기 위한 플랜을 생성하고, 공유 리소스 풀의 Amazon Redshift Spectrum 작업자에게 S3에서 데이터를 읽고 처리하도록 요청한다.
- 처리능력을 사용하기 위해 RedShift로 분석하고 싶지만 RedShift에 먼저 데이터를 불러오지 않는 것이다.
- Spectrum을 사용하기 전에 SQL 명령을 실행할 수 있도록 클러스터에 연결된 SQL 클라이언트가 반드시 준비되어 있어야한다.
- RedShift 테이블에 로드하지 않고도 S3의 파일에서 정형 및 비정형 데이터를 효율적으로 쿼리하고 가져올 수 있다.
- 사용사례 : 고성능 분석, 비즈니스 인텔리전스, 데이터웨어 하우스