🛢️ 데이터베이스 개요
EFS, EBS, EC2 인스턴스 스토어, S3과 같이 디스크에 데이터를 저장하는 것은 한계가 있다.
데이터베이스에 데이터를 저장하는 경우, 데이터 구조화, 효율적인 쿼리, 인덱스 생성이 가능하다.
또한 데이터셋 간의 관계를 정의할 수 있다.
데이터베이스는 목적에 맞게 최적화 되어있으며, 각기 다른 기능, 모양, 제약조건을 가진다.
👫🏻 관계형 데이터베이스
행과 열로 이루어진 데이터로, 쿼리에 SQL 언어를 사용한다.
🙅🏻 NoSQL 데이터베이스
비관계형 데이터베이스로, 특정 데이터 모델을 위해 만들어졌으며 유연한 구조를 가진 데이터베이스이다.
[장점]
- 유연성 : 데이터 모델을 발전시키는 것이 쉽다.
- 확장성 : 분산 서버를 사용해 스케일 아웃을 할 수 있도록 설계되었다.
- 고성능 : 특정 데이터 모델에 최적화 되어있다.
- 뛰어난 기능성 : 데이터 모델에 최적화 된 유형이다.
🔑 데이터베이스와 책임 분배 모델
AWS는 다양한 데이터베이스를 관리하기 위한 기능을 제공한다.
데이터베이스를 사용하면 빠른 공급, 고가용성, 수직 및 수평적 확장성을 제공하며,
자동화된 백업 및 회복, 작동과 업그레이드를 사용할 수 있으며, OS 패치가 AWS에 의해 이루어지고,
모니터링과 알림이 가능하다는 장점이 있다.
⚙️ RDS & Aurora
📌 RDS
RDS는 Relational Database Service의 약어로, SQL을 사용하는 DB를 위한 완전관리형 DB서비스이다.
Postgres, MySQL, MariaDB, Oracle, Microsoft SQL Server, IBM DB2, Aurora DB를 만들 수 있다.
[RDS를 이용하는 것의 이점]
- RDS는 관리되는 서비스이므로 공급과 OS 패치가 자동화된다.
- 특정 시간대에 백업과 회복이 연속적으로 일어난다.
- 대시보드 모니터링이 가능하다.
- 재난 복구를 위해 다중 가용 영역 설정이 가능하다.
- 업그레이드를 위한 유지보수 창을 설정할 수 있다.
- 확장이 가능하다.
- EBS에 의해 저장소가 백업된다.
- 단, RDS 데이터베이스 인스턴스에 SSH를 사용할 수 없다.
✅ RDS 배포 옵션
- Read Replicas : 읽기 전용 DB를 만드는 것으로 15개까지 만들 수 있으며, 메인 DB에만 데이터 쓰기 작업이 가능하다.
- Multi-AZ : 가용영역 장애조치가 가능하며, 데이터 읽기와 쓰기 모두 메인 DB에서만 가능하다. 장애조치용 가용영역은 1개만 존재한다.
- Multi-Region : 리전 이슈에 대한 재난 복구를 위해 사용하며, 글로벌 읽기 작업에 대해 로컬 성능을 가진다. 사용시 복제 비용이 발생한다.
🌈 Aurora
Aurora는 AWS가 만든 데이터베이스 기술로, PostgreSQL과 MySQL 둘 모두를 지원한다.
Aurora는 클라우드에 최적화되어 있으며,
RDS에서 MySQL을 사용하는 것에 비해 5배, Postgres를 사용하는 것에 비해 3배 이상의 성능 향상을 보인다.
Aurora 저장소는 10GB부터 128TB까지 자동으로 사이즈가 커진다.
RDS에 비해 20%정도 비싸지만 더욱 효율적이고, AWS free tier에는 속하지 않았다.
💻 Amazon Aurora Serverless
데이터 인스턴스화의 자동화 및 실사용에 기반한 자동 스케일링이 가능하다.
PostgreSQL과 MySQL 둘 모두를 지원하며, 용량 계획이 필요하지 않다.
최소한의 관리만 필요하며, 초당 지불을 하므로 더욱 비용 측면에서 효율적이다.
불규칙적, 간헐적, 예측 불가능한 작업에 좋다.
⚙️ Amazon ElastiCache
RDS가 완전관리형 RDB를 얻기 위해 사용하는 것과 같이,
ElastiCache는 완전관리형 Redis나 Memcached DB를 얻기 위해 사용된다.
캐시들은 높은 성능과 낮은 지연을 가지는 인메모리 데이터베이스이며,
읽기에 집중된 작업을 하는 데이터베이스에서 받는 부하를 줄이는데 도움을 준다.
ElastiCache는 완전관리형 데이터베이스기 때문에,
AWS가 운영체제 유지와 패치, 최적화, 셋업, 구성, 모니터링, 오류 복구 및 백업을 모두 담당한다.
⚙️ DynamoDB
DynamoDB는 3개의 가용 영역에 걸친 복제를 통해 고가용성을 제공하는 완전관리형 NoSQL DB로,
키/값 쌍을 가지고 대규모 작업량으로 스케일링하며, 분산된 sererless 데이터베이스를 갖는 DB이다.
초당 수백만의 요청과 조 단위의 행, 수백TB의 저장소로 스케일링하며, 빠르고 일관적인 성능을 보이고,
한 자릿수의 ms단위의 지연시간을 가지므로, 낮은 지연의 검색에 유용하다.
보안, 권한, 관리를 담당하는 IAM과 통합되어있고, 비용이 저렴하며 자동 스케일링 기능을 가지고 있으며,
Standard와 Infrequent Access의 두가지 테이블 클래스를 가진다.
🚆 DAX
DAX는 DynamoDB용 완전관리형 인메모리 캐시로, DynamoDB 테이블 접근시 10배의 성능 향상을 제공한다.
완벽하게 보안되고, 확장성이 뛰어나며 고가용성을 제공하며, 다른 DB에 사용 가능한 ElastiCache와 달리
DAX는 DynamoDB와 통합되어 DynamoDB에만 사용 가능한 제품이다.
🌎 Global Tables
Global Tables는 DynamoDB를 여러 리전에서 낮은 지연시간으로 접근 가능하게 하는 방법이다.
모든 AWS 리전에서 읽기/쓰기 엑세스를 가지므로, Active-Active 복제가 가능하다.
⚙️ Redshift
Redshift는 PostgreSQL기반 데이터베이스지만, OLTP에는 사용되지 않고 OLAP에 사용된다.
따라서 데이터 웨어하우스나 분석 용도로 사용할 경우 적합하다.
데이터를 매 초 로드하는 대신, 한 시간에 한번 로드하며,
PB단위의 데이터를 보관하는 다른 데이터 웨어하우스들에 비해 10배 이상의 성능을 보인다.
데이터는 열에 저장되는 방식이며, columnar storage of data라고도 한다.
Redshift는 고가용성을 가지는 대규모 병렬 쿼리 실행 엔진인 MPP 엔진을 가지고 있으며,
사용자가 공급한 인스턴스에 기반하여 비용을 지불하게 되며, 쿼리를 수행할 SQL 인터페이스도 가지고 있다.
AWS Quicksight나 Tableau같은 BI 도구와도 통합하여 사용할 수 있다.
💻 Redshift Serverless
데이터 웨어하우스의 기본 용량을 자동으로 공급하고 확장한다.
분석 작업을 데이터 웨어하우스 인프라의 관리 없이 실행할 수 있다.
사용량만큼만 지불하므로 비용 절감이 가능하며, 보고, 응용프로그램 대시보드화, 실시간 분석등에 쓰인다.
⚙️ Amazon EMR
EMR은 Elastic MapReduce의 약어로, 대규모 데이터 처리 및 분석을 위한 Hadoop 클러스터 생성을 돕는다.
EMR을 통해 수백개의 EC2 인스턴스로 구성된 클러스터를 만들 수 있으며,
Apache Spark, HBase, Presto, Flink도 지원한다.
EMR은 모든 EC2 인스턴스의 공급과 구성을 처리하며, 자동 스케일링이 가능하고, 스팟 인스턴스와 통합되어있다.
주로 데이터 처리, 머신러닝, 웹 인덱싱, 빅데이터에서 사용한다.
⚙️ Amazon Athena
Athena는 S3에 저장된 객체에 대한 분석을 제공하는 서버리스 쿼리 서비스다.
파일을 쿼리하기 위해서 표준 SQL 언어를 사용하고, CSV, JSON, ORC, Avro, Parquet등의 포맷을 지원한다.
스캔 데이터를 TB당 5달러로 지불하게 되며, 압축된 데이터나 columnar 데이터를 사용하면 비용이 절감된다.
BI, 분석, 리포팅, 분석 & query VPC Flow Logs, ELB Logs, CloudTrail trails등에 쓰인다.
핵심 : S3에 저장된 데이터를 서버리스 SQL을 사용해 분석하는 경우, Athena를 사용한다.
💡 Amazon QuickSight
쌍방향 대시보드를 만들기 위한 머신 러닝 기반의 서버리스 BI 서비스이다.
빠르고, 자동 확장이 가능하며, 임베딩을 지원하고 세션별로 가격을 측정한다.
비즈니스 분석, 시각화 자료 제작, ad-hoc 분석 수행, 데이터를 이용한 비즈니스 인사이트 획득에 사용된다.
RDS, Aurora, Athena, Redshift, S3등과 통합 사용이 가능하다.
📄 DocumentDB
Aurora가 PostgreSQL과 MySQL의 AWS에서의 구현이라고 한다면,
DocumentDB는 NoSQL DB인 MongoDB의 AWS에서의 구현이라고 할 수 있다.
Aurora와 유사한 배포 개념을 가지고 있으며,
3개의 가용 영역에 걸친 복제를 통해 고가용성을 제공하는 완전관리형 데이터베이스이다.
DocumentDB 저장소는 10GB까지 자동으로 성장하며,
초당 수백만개의 요청을 통해 작업을 자동으로 확장할 수 있도록 설계되었다.
⚙️ Amazon Neptune
Neptune은 완전관리형 그래프 데이터베이스이며, 그래프 데이터로 가장 잘 알려진 데이터는 소셜 네트워크이다.
3개의 가용 영역에 걸친 복제를 통해 고가용성을 지니고, 15개까지의 읽기 전용 복제본을 만들 수 있다.
복잡하고 어려운 쿼리에 최적화되었기 때문에,
고도로 연결된 데이터셋을 가진 응용 프로그램을 만들고 실행하는데 사용된다.
수십억개의 관계를 저장할 수 있고, 그래프에 대한 쿼리를 ms단위의 지연으로 수행할 수 있어,
Wekipedia와 같은 지식 그래프나 사기 감지, 추천 엔진, 소셜 네트워킹에 사용하는 경우에 좋다.
🕖 Amazon Timestream
빠르고 확장가능한 완전관리형 서버리스 시계열 데이터베이스이다.
용량 조정을 위해 자동적으로 스케일을 확장하고 줄이며, 매일 조단위의 이벤트를 저장하고 분석한다.
관계형 DB에 비해 1000배 빠르고 10배 저렴하며, 타임 시리즈 데이터 실시간 분석 기능을 내장하고 있다.
📒 Amazon QLDB
QLDB는 Quantum Ledger Database의 약어이다.
ledger(원장)란 금융거래를 기록하는 장부이므로, 따라서 QLDB는 금융거래 장부를 저장한다.
QLDB는 세 개의 가용 영역에 걸친 복제를 통해 고가용성을 제공하는 완전관리형 서버리스 데이터베이스로,
시간에 따른 애플리케이션 데이터의 모든 변화 기록을 검토하는데 사용된다.
변경 불가능한 시스템이므로, 한번 들어온 데이터는 제거되거나 수정될 수 없으며 암호학적으로 검증이 가능하다.
SQL을 사용해 데이터 조작이 가능하며, 일반적인 원장 블록체인 프레임워크보다 2~3배의 성능을 가진다.
QLDB에 금융 규제 개념에 의해 분산 개념이 없다는 것은 Amazon Managed Blockchain과의 차이점이다.
🪙 Amazon Managed Blockchain
블록체인은 신뢰할 수 있는 중앙기관 없이,
당사자들끼리 트랜잭션을 실행할 수 있는 애플리케이션을 구축할 수 있도록 해준다는 분산적인 면모가 있다.
Amazon Managed Blockchain은 공용 블록체인 네트워크에 가입하거나,
확장 가능한 개인 블록체인 네트워크를 만드는데 사용되는 완전관리형 서비스이다.
Hyperledger Fabric, Ethereum과 호환 가능하다.
⚙️ AWS Glue
Glue는 추출, 변환, 적재를 돕는 관리형 ETL 서비스이다.
분석에 필요한 데이터를 준비하거나 변환하는데 유용한 완전한 서버리스 서비스이다.
데이터셋의 메타데이터를 저장하기 위한 Glue Data Catalog를 가진다.
📦 DMS - Database Migration Service
DMS를 사용하면 AWS로 데이터베이스를 빠르고 안전하게 마이그레이션할 수 있으며,
탄력과 자가치유 기능을 제공하고, 마이그레이션 동안에도 원본 데이터베이스를 사용할 수 있다.
[지원하는 마이그레이션 옵션]
Homogeneous migrations : 동일 DB로 마이그레이션 하는 것
Heterogeneous migrations : 서로 다른 DB로 마이그레이션 하는 것
📝 간단한 정리
- 관계형 DB : RDS, Aurora(OLTP)
- 인메모리 DB : ElastiCache
- 키/값 쌍 DB : DynamoDB, DAX
- 데이터웨어하우스 : Redshift(OLAP)
- Hadoop 클러스터 : EMR
- Athena : Amazon S3 데이터 쿼리
- QuickSight : 데이터에 대한 대시보드 구성
- DocumentDB : MongoDB를 위한 Aurora
- QLDB : 금융 트랜잭션 원장 서비스
- Managed Blockchain : 관리형 블록체인 서비스
- Glue : 관리형 ETL & 데이터 카탈로그 서비스
- DB 마이그레이션 : DMS
- Neptune : 그래프 DB
- Timestream : 시계열 DB