728x90
반응형




Database를 선택하는 방법

  1. 읽기량/쓰기량 고려
  2. 데이터 처리량 고려
  3. 데이터 저장량
  4. 데이터 저장 기간
  5. 평균 객체 크기
  6. 객체에 접근하는 방법
  7. 확장이 가능한지?
  8. 데이터 공급원은 어디인지?
  9. 데이터 내구성이 있는지?
  10. 지연시간에 관한 요구사항이 있는지?
  11. 동시 사용자에 관한 요구사항이 있는지?
  12. 데이터 모델이 뭔지?
  13. 쿼리 방법이 뭔지?
  14. 데이터 join이 많은지?
  15. 정규화? 반정규화?
  16. 유연성이 있는지?
  17. reporting이 필요한지?
  18. 관계형? NoSQL?
  19. 라이선스 비용이 있는지?


  • Database Types
  1. RDBMS : RDS, Aurora
  2. NoSQL : DynamoDB(JSON), ElastiCache(key-value), Neptune(Graphs), MongoDB(DocumentDB), Apache Cassandra(Keyspaces)
  3. Object Store : S3, Glacier
  4. Data Warehouse : Redshift(OLAP), Athena. EMR
  5. Search : OpenSearch(JSON)
  6. Graphs : Amazon Neptune
  7. Ledger : Amazon Quantum Ledger Database
  8. Time series : Amazon Timestream


RDS

  1. PostgreSQL, MySQL, Oracle, SQL Server, MariaDB 지원
  2. RDS 인스턴스 크기 및 EBS Volume Type/Size를 사전 지정해야 함
  3. 스토리지에 대한 Auto-scaling 기능이 있음
  4. 읽기 전용 복제본 지원
  5. 고가용성 목적으로 Standby DB를 다중 AZ에 배치할 수 있음 (해당 DB엔 쿼리 실행 불가)
  6. IAM을 통해 사용자 보안조치 가능 (사용자이름/비밀번호, 일부 사용자에게 IAM 인증 부여)
  7. Security Groups을 통해 네트워크 보안
  8. KMS를 통해 데이터 저장 보안
  9. SSL을 통해 전송 데이터 보안
  10. 최대 35일의 자동 백업 옵션 -> 해당 기간 내 새로운 DB로 복구 가능
  11. 장기 보존 백업이 필요한 경우 DB Snapshot 이용 가능
  12. 패치 작업 등을 위해 downtime이 있을 수 있음
  13. RDS Proxy를 추가하여 RDS에 IAM 인증 추가
  14. Secrets Manager와 통합하여 DB 자격증명 관리
  15. RDS 인스턴스에 접근을 위한 사용자 지정옵션 있음 (Oracle / SQL Server)
  16. 관계형 DB 및 OLTP를 저장하는데 활용


Aurora

  1. PostgreSQL, MySQL 지원
  2. 스토리지와 컴퓨팅이 구분됨
  3. 기본 설정으로 3개 AZ에 6개의 인스턴스로 나누어 데이터를 저장함 -> 고가용성
  4. 자동 자가복구 과정이 있음
  5. 스토리지에 대한 Auto-scaling 기능이 있음 (읽기 전용 복제본도 가능)
  6. DB Cluster가 구축되어 있기 때문에 어느 인스턴스에 접근하여 읽고 쓸지를 결정하기 위해 별도 endpoint가 필요 (writer endpoint, reader endpoint)
  7. RDS와 동일한 Security/monitoring/maintenance 기능이 있음 -> 같은 엔진 활용
  8. Aurora를 위한 백업 및 복구 기능이 있음
  9. Aurora Serverless -> 예측할 수 없는 간헐적인 workload가 있을 때 용량을 별도로 계획하지 않아도 되기 때문에 유용함
  10. Global DB를 위해 Aurora Global이 사용됨 -> 16개의 read전용 인스턴스가 각 region에 배포됨 -> 1초 미만의 실시간 스토리지 복제 -> 특정 region에 문제가 생겼을 때, 다른 region의 DB를 주요 region으로 승격시킬 수 있음
  11. 머신러닝을 위한 Aurora Machine Learning 모듈이 있음
  12. 테스트 DB 및 스테이징 DB를 위해 Aurora cloning 기능이 있음, snapshot을 복구하는 것보다 빠름 -> 새로운 cluster 구축
  13. RDS보다 비용이 더 비싸지만, 더 유연성있고, 덜 관리하고, 더 좋은 성능, 더 많은 기능을 원하면 사용


ElastiCache

  1. Redis / Memcached 두 종류
  2. 캐싱작업에 활용
  3. in-memory store
  4. 1ms 미만의 읽기 성능을 제공
  5. 캐싱을 위한 EC2 인스턴스가 프로비저닝 되어야 함
  6. Redis에서는 Clustering 기능 제공 및 Multi-AZ, Sharding을 통한 읽기 전용 복제본 제공
  7. IAM을 통한 접근 보안, Security Groups(네트워크 수준의 접근), KMS(데이터 저장), Redis Auth가 있음
  8. RDS처럼 백업 및 Snapshot, point in time restore 기능 제공
  9. app code가 ElastiCache를 사용하도록 수정 필요
  10. Use Cases : key-value store, 빈번한 읽기, DB 쿼리 캐싱, 세션 데이터 저장 등
  11. SQL 사용 불가


DynamoDB

  1. ms단위의 성능을 제공하는 Serverless NoSQL DB
  2. provisioned capacity mode : 지정된 용량 범위 내에서 auto scaling, 점진적인 증감이 있을 떄 활용
  3. on-demand capacity mode : 용량을 프로비저닝할 필요가 없음, 예측하기 어려운 workload에 따라 자동으로 scaling, 가파른 증감이 있을 때 활용
  4. key-value 저장소 -> elastiCache 대체 가능
  5. 세션 데이터를 저장하기 좋음 -> TTL 기능으로 일정 시간 뒤에 세션을 만료시킴
  6. 고가용성 -> Multi-AZ, 읽기/쓰기 분리
  7. DynamoDB와 완벽히 호환되는 캐싱 기능인 DAX cluster 제공 (ms단위의 읽기 성능)
  8. 보안/인증/인가 등의 기능이 모두 IAM을 통해 이루어짐
  9. DynamoDB Streams를 활성화하여 이벤트 처리 기능도 추가할 수 있음 (DynamoDB Streams : DB에 일어나는 변경사항을 감지하여 스트리밍) -> Lambda, Kinesis Data Streams등과 결합하여 이벤트 처리)
  10. Global Tables 기능 제공 -> 다수 region에 걸친 active-active 복제 가능
  11. 최대 35일의 자동 백업 옵션 (point in time restore 기능 활성화 필요) -> 자동백업 옵션을 활용하여 S3로 데이터를 내보내면, RCU사용없이 PITR window로 가능, S3에서 새로운 테이블로 가져올 때에도 WCU 사용없이 가능
  12. 장기 보관을 위한 On-demand 백업 옵션
  13. 빠르게 스키마를 변경하거나, 유연하게 변경해야할 때 유용


S3

  1. key-value 형태로 저장 -> 큰 객체를 저장할 때 유용, 여러 개의 작은 객체를 저장할 때는 비효율
  2. Serverless
  3. 객체 최대 크기 5TB
  4. Versioning 기능
  5. 다양한 스토리지 지원, Storage tiers : S3 Standard, S3 Infrequent Access, S3 Intelligent, S3 Glacier + tier 전환을 위한 lifecycle policy
  6. Versioing, Encryption, 복제, 영구삭제를 위한 MFA, logs 등의 기능들을 제공
  7. IAM을 통한 접근 보안, 버킷에 대한 접근 권한인 S3 Bucket Policy, Access Point 생성, ACL, CORS, 객체 잠금 기능 등 보안기능 제공
  8. Encryption : SSE-S3 (자체키 기반), SSE-KMS (관리할 수 있는 KMS키 기반), SSE-C, client-side 인증, TLS 전송보안
  9. S3 객체에 대한 대량 처리가 필요할 때 -> S3 Batch (use case : 비암호화 객체 일괄 암호화 등)
  10. 성능 : Multi-part upload (파일 병렬식 upload), S3 Transfer Acceleration, S3 Select (필요한 데이터만 검색)
  11. Automation : S3 Event Notifications (SNS, SQS, Lambda 등과 결합 가능)
  12. Use cases : 정적 파일, key-value 형태의 대량 file 저장소, 웹사이트 호스팅 등


DocumentDB (mongoDB)

  1. DocumentDB는 MongoDB의 Aurora 버전
  2. NoSQL DB
  3. mongoDB 기반
  4. JSON 데이터를 저장, 쿼리, 인덱스
  5. 배포개념이 Aurora와 유사 -> 완전 관리형 DB, 3 AZ에 걸친 고가용성
  6. 스토리지는 자동적으로 10GB까지 확장됨
  7. 초당 수백만개의 요청을 작업하기 위해 scale될 수 있음


Amazon Neptune

  • Graph 데이터셋의 예시 : Social Network -> 과정(데이터)들이 모두 연결됨
    1. 사용자는 친구를 팔로우
    2. 댓글을 게시
    3. 다른 사용자의 댓글을 좋아요
    4. 게시글을 공유


  1. 완전 관리형 graph DB
  2. like Social Network
  3. 3 AZ에 걸쳐 최대 15개의 읽기전용 복제본을 가짐 -> 가용성이 높음
  4. 고도로 연결된 데이터 셋을 사용하는 app에 적합
  5. DB에 수십억 개의 관계를 저장
  6. 그래프를 쿼리할 때의 지연시간은 ms단위
  7. 위키피디아 지식 데이터와 같이 고도로 연결되어 있는 데이터에 적합 (추천 엔진, 소셜 네트워크 등)


Amazon Keyspaces (Apache Cassandra)

  1. Apache Cassandra를 지원
  2. Apache Cassandra : 오픈 소스의 NoSQL 분산 DB
  3. Serverless
  4. 완전 관리형, 확장성/가용성 높음
  5. app 트래픽에 따른 Auto Scaling 기능 제공
  6. 테이블 데이터는 여러 AZ에 걸쳐 세 번 복제됨
  7. 쿼리 수행에는 CQL(Cassandra Query Language)가 사용됨
  8. 지연시간 10ms
  9. 초당 수천 건의 요청 처리
  10. On-demand mode과 Provisioned mode with auto-scaling 두 가지 모드 지원 (DynamoDB와 동일)
  11. 암호화, 백업, 최대 35일의 PITR 기능 제공
  12. Use cases : IoT 장치 정보와 시계열 데이터 저장 등


Amazon QLDB

  1. Quantum Ledger Database
  2. Ledger : 금융 트랜잭션을 기록하는 장부
  3. 완전 관리형, Serverless, 고가용성 (3개 AZ에 걸쳐 복제)
  4. app 데이터의 시간에 따른 변경 내역을 검토하는 데 사용 -> 장부
  5. DB에 데이터를 기록하면 삭제하거나 수정할 수 없음 -> 불변 시스템
  6. QLDB Journal내에서 수정할 때마다 암호화 해시가 계산되어 추가됨 -> DB에서 삭제 불가, 수정본 추가방식(?)
  7. 일반 ledger blockchain framework보다 2~3배 나은 성능
  8. 관리형 블록체인과의 차이점은 QLDB는 탈중앙화 개념이 없음 -> Amazon 소유의 중앙 DB에서만 데이터 작성 가능




Amazon Timestream

  1. 시계열 DB
  2. 완전 관리형, 빠름, scale 가능, serverless
  3. 시계열(timestream) : 시간정보를 포함하는 point의 모음
  4. DB의 용량을 자동으로 확장/축소 가능
  5. 매일 수조 건의 이벤트를 저장/분석 가능
  6. 시계열 데이터에는 관계형 DB보다 시계열 DB를 활용하는 것이 속도나 비용측면에서 훨씬 이점
  7. SQL에 호환
  8. 최신 데이터는 메모리에 저장
  9. 과거 데이터는 비용 효율적인 스토리지 계층에 저장
  10. 시계열 분석 기능이 있어서 실시간으로 분석하고 패턴을 찾을 수 있음
  11. 전송중 암호화, 저장 암호화를 지원
  12. Use cases : IoT apps, 실시간 분석, 운영 app 등


  • Architecture

반응형

'개발 > AWS' 카테고리의 다른 글

[AWS] IAM 고급  (0) 2024.06.25
[AWS] CloudWatch and CloudTail  (1) 2024.06.11
[AWS] Serverless (Lambda/DynamoDB/API Gateway)  (1) 2024.06.08
[AWS] AWS Container Service  (0) 2024.06.01
[AWS] SQS, SNS, Kinesis, Active MQ  (0) 2024.06.01

+ Recent posts