What is Database?
- Disk 에 Data를 저장할때 (EBS 드라이브나, EBS 볼륨, EC2 인스턴스 스토어, Amazon S3) 등을 이용할 때는 제한이 있다.
- Data 를 구조에 따라 저장하고자 한다면, DB를 이용하게 된다.
- 이때 이 구조를 통해서 효과적인 쿼리와 데이터 검색을 위한 인덱스를 구축할 수 있다.
- (EBS 드라이브나, EBS 볼륨, EC2 인스턴스 스토어, Amazon S3) 파일별 작업이 가능하므로 더 체계화 된다.
- 데이터셋 간의 관계를 정의할 수 도 있다.
RDS (Relational Database Service)
- SQL 을 쿼리 언어로 사용하는 DB를 위한 서비스
- 이를 통해 AWS 에서 관리할 DB를 클라우드에 생성할 수 있다.
- 종류
1. Postgres
2. MySQL
3.Oracle
4. Microsoft SQL Server
5. IMB DB2
6. Aurora (AWS Proprietary database)
그렇다면 우리가 EC2 에서 자체 DB를 배치하는 대신 RDS를 사용하는 이유는 뭘까?
- RDS 는 DB 배정이 자동으로 이루어진다. -> AWS가 운영 체제 패치를 수행한ㄴ다.
- 지속적인 백업 및 복원 옵션이 제공된다. -> 특정 시점 복원 가능
- DB가 제대로 작동하는지 확인하기 위해 Monitering Dashboards를 갖게 된다.
- 읽기 복제본을 생성하여 읽기 규모를 확장하고, 읽기 성능을 향상시킬 수 있다.
-> 하나의 가용 영역(AZ) 전체가 다운되는 경우를 대비한 재해 복구 계획으로써 다중 AZ를 설정하는 방법을 갖게된다. - Upgrade를 위한 유지 관리 창구를 설정하고
- 수직 및 수평으로 확장할 수 있다.
Elastic Cache
- RDS 처럼 일래스티 캐시를 사용하여 관리형 레디스(Redis) 또는 Memcahced DB를 이용할 수 있다.
- 이와 같은 캐시는 높은 성능과 짧은 지연 시간을 자랑하는 in-memory DB이다.
- in-memory === 무족건 Elastic Cache를 떠올려야한다.
- 읽기 집중적인 워크로드의 db로 부터 워크로드를 줄일때 사용한다
-> RDS 에서는 많은 쿼리 작업을 수행 하는데, 항상 동일한 쿼리를 다루게 되면, DB 에 막대한 부하가 발생한다.
-> 여기서 캐시를 사용하는 Elastic Cache를 사용하면 in-memory db로 캐시가 직접 전송되도록 하여 DB의 부하를 줄일 수 있다. - 관리형 데이터베이스로 AWS가 모든 운영체제유지보수와, 패치 작업, 최적화, 설정, 구성, 모니터링, 장애 회복 및 백업을 담당한다.
Elastic Cache에 대한 솔루션 아키텍쳐
1. Elastic Load Balancer가 EC2 인스턴스로 간다
2. 이때 Amazon RDS DB 로 부터 데이터를 읽고 쓰게 되는데, 이때는 속도가 느릴 것이다.
3. 그리고 가능한 경우에는 일부 값을 Elastic Cache DB에 캐싱 처리하게 되는데, 이 작업은 인 메모리에서 이루어지므로 속도가 빠르다.
4. 따라서 Elastic Cache를 사용하면 RDS DB의 부하를 줄이고,
이를 Elastic Cache DB와 나눠처리하는 것이 캐시를 이용하는 목적이다. 또한 쿼리를 따로 저장하여 언제든 사용할 수 있고, 액세스도 쉬워지며 메인 DB의 부하를 줄일 수 있다.
DynamoDB
- 완전 관리형 고가용성 데이터 베이스로 3개의 가용영역(AZ)에 걸쳐 복제본을 두고 운영된다.
- NoSQL DB로 비관계형 데이터베이스이다.
- 막대한 작업량 소화가능, 분산된 serverless DB
- RDS나 Elastic Cache를 이용해서 서버에 프로비저닝할 필요가 없다. -> 원래라면 인스턴스 유형에 프로비저닝이 필요하겠지만 DynamoDB는 필요없다. 그래서 Serverless DB라고 한다.
- 초당 수백만 건의 요청, 조 단위가 넘는 행, 수백 테라바이트 스토리지까지 확장해도 신속하고 한결같은 성능을 보여준다.
- 따라서 검색 지연 시간이 한 자릿수 밀리초인 성능을 필요로 할 경우에 적합한 DB !!
- Serverless, 한 자릿수 밀리초의 지연 시간과 같은 저지연시간을 나타내는 키워드는 무조건 DynamoDB
- 보안,인증, 관리상 IAM과 통합되어 있다.
- 비용이 적고 Auto Scaling 기능을 갖추고 있다.
- 끝으로 비용 절감을 위해 데이터를 분류하는 방식에 따른 Standard & Infrequent Access(IA) 테이블 클래스가 있다.
DynamoDB에는 어떤 데이터가 저장될까?
- key / value DB로 저장된다.
DynamoDB Accelerator - DAX
- DynamoDB를 위환 완전관리형 In-memory 캐시
- 여기서 In-memory 캐시는 ElastiCache 와는 달리 DynamDB 전용 캐시.!!!
- 애플리케이션이 DynamDB속 테이블에 액세스 하려고 할때..!
- 가장 최근에 읽힌 객체를 캐시에 저장하려면 DAX 나 DynamoDB Acceleartor 를 캐시로 사용해야한다. -> Elastic Cache를 이용할 수 있지만, 할 필요가 없다 ---> DAX는 이미 DynamoDB 전용으로, DynamoDB와 완벽히 통합된 DAX를 쓰는 것이 성능이 열배는 향상된다.
- 여기서 Elastic Cache 와 DAX 차이점은 DAX는 DynamoDB와 완벽히 통합되어 있어, DynamoDB에서만 사용하지만, Elastic Cache는 다른 DB에서도 캐시 저장에 사용할 수 있다.
Redshift
- Redshit 은 PostfgreSql 기반이지만 OLTP 에는 사용되지 않는다. (대신 OLAP 에 특화되었다.)
- OLAP 는 분석과 데이터 웨어하우스에 사용되는 것
- 그러므로 시험중에 DB가 데이터 웨어하우스와 분석 역할을 가질 때 에는 Redshift가 정답이다.
- Redshift는 1시간 간격으로 로드
EMR (Elastic MapReduce)
- EMR 은 실제 DB가 아니라, AWS 에서 빅데이터를 작업하고자 할 때 사용하는 Hadoop 클러스터를 생성
- 이 생성한 Hadoop클러스트는 방대한 양의 데이터를 분석하고 처리하는데 이용된다.
- Hadoop 은 오픈 소스 기술! -> 클러스터에서 작동하는 여러 서버를 통해 data를 분석할 수 있다.
- 따라서 EMR을 활용하면, 수백 개의 EC2인스턴스로 구성된 클러스터를 생성하여 DB분석을 위해 동시에 사용될 수 있다.
Amazon Athena
- Serveless query service로 S3에 저장된 객체에 대한 분석을 수행.
- sql 쿼리 언어를 통해 해당 파일을 생성하면, 이들을 따로 로드할 필요 없이 S3에 두면 Athena가 분석을 실행한다.
- CSV, JSON, ORC Avro, Parquet 등 파일의 형식이 다양하다.
- Presto 엔진을 이용해 구축 됨.
- 작동 원리는 사용자가 Amazon S3 에 데이터를 로드하면 Amazon Athena 가 쿼리 작업을 수행해서, 데이터 분석을 하는 원리
이것들 말고도 QuickSight, DocumentDB,Neptune 등 다양한 DB Service가 많다. 이런 DB들은 각자 어떤 역할들만 하는지와 작동 원리가 어떻게 되는지 간단하게만 알면 될 것 같다고 생각한다.
만약 나중에 해당 DB Service 중에 하나를 사용하게 된다면, 그때 조금 더 중점적으로 파면 좋을 것 같다.
'AWS' 카테고리의 다른 글
Cloud Intergration (클라우드 통합) (1) | 2024.09.13 |
---|---|
AWS 대규모 배포 및 인프라 관리 (1) | 2024.09.12 |
What is Amazon S3 ? (0) | 2024.09.10 |
ELB(Elastic Load Balancing) 와 ASG(Auto Scaling Group) (4) | 2024.09.09 |
AWS IAM 과 EC2 Instance (1) | 2024.09.08 |