article thumbnail image
Published 2023. 6. 5. 15:45

올바른 데이터베이스 선택하기

워크로드에 맞는 데이터베이스 사용해야함

  • 쓰기 혹은 읽기, 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
복사했습니다!