Amazon RDS 기초
RDB (Relational DataBase)
- 데이터의 관계에 집중한 데이터베이스
- 미리 지정된 형식과 타입의 데이터만 저장 가능
- 테이블의 형식으로 데이터를 관리
- 행과 열을 기반으로 한 여러 테이블을 통해 데이터를 정의
- 고유의 키로 각 데이터를 식별
- 트랜젝션을 지원
- 원하는 동작이 (정확히 수행, 완전히 실패) 둘 중 하나로 유지
- 수행 중 문제가 생겨서 일부만 저장되거나 데이터가 변경되는 일이 없음
- 사용 사례 : 일반적인 어플리케이션, 게임 등
Amazon RDS (Amazon Relational Database Service)
AWS 설명 : 클라우드에서 관계형 데이터베이스를 간편하게 설정, 운영 및 확장할 수 있습니다.
하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 시간 소모적인 관리 작업을 자동화 하면서 비용적으로 효율적, 크기 조정까지 가능한 용량을 제공합니다.
사용자가 애플리케이션에 집중하여 애플리케이션에 필요한 빠른 성능, 고가용성, 보안 및 호환성을 제공할 수 있도록 지원합니다.
- RDB를 제공하는 서비스
- 가상 머신 위에서 동작
- 단 시스템에 직접 로그인 불가능 → OS 패치, 관리 등은 AWS의 역할
- RDS는 Serverless 서비스가 아님
- 암호화 지원
- 자동 백업 지원
RDS와 EC2
- 내부에서는 EC2를 활용
- VPC 안에서 동작
- 기본적으로 Public IP를 부여하지 않아 외부 접근은 불가능
- 설정에 따라 Public으로 오픈 가능(DNS 접근)
- 서브넷과 보안 그룹 지정 필요
- EC2 타입의 지정이 필요
- 스토리지는 EBS를 활용
아키텍쳐
![](https://velog.velcdn.com/images/ebab_1495/post/ef07580e-81e6-4717-9721-bfa538730794/image.png)
인증 방법
- 전통적인 유저/패스워드 방식 : AWS Secert Manager와 연동하여 자동 로테이션 가능
- IAM DB 인증 : 데이터베이스를 IAM 유저 자격증명/ 역할을 통해 관리 가능
- Kerveros 인증
RDS에서 제공하는 DB엔진
- MS SQL Server, Oracle(Oracle OLAP) : 오픈 소스가 아니기에 라이선스 비용 추가
- MySQL Server
- PostgreSQL
- MariaDB
- Amazon Aurora
RDS Multi AZ
- 두 개 이상의 AZ에 걸쳐 DB를 구축하고 원본과 다른 DB(Standby)를 자동으로 동기화(sync)
- 원본 DB의 장애 발생 시 자동으로 다른 DB가 원본으로 승격됨 (DNS가 Standby DB로)
- StandBy DB는 접근 불가능
- 퍼포먼스의 상승 효과가 아닌 안전성을 위한 서비스
- 구조
![](https://velog.velcdn.com/images/ebab_1495/post/d8091719-a210-4fa1-b8ae-1791d678bd92/image.png)
읽기 전용 복제본
- 데이터베이스의 읽기 전용 복제본을 생성(Async)
- 쓰기는 원본 데이터베이스에, 읽기는 복제본에서 처리하여 워크로드를 분산
- 안정성이 아닌 퍼포먼스를 위한 서비스
- 원본 DB의 장애 발생 시 수동으로 DNS를 변경해주어야 함
- 구조
![](https://velog.velcdn.com/images/ebab_1495/post/b182f518-0748-4dde-97f7-ba09a7c492a4/image.png)
RDS Multi Region
- 다른 리전에 지속적으로 동기화 시키는 DB클러스터를 생성 (Async 복제)
- 주로 로컬 퍼포먼스 혹은 DR시나리오로 활용
Amazon Aurora
AWS 설명: 고성능 상용 데이터베이스의 가용성에 오픈 소스 데이터베이스의 간편성과 비용 효율성을 결합하였으며 클라우드를 위해 구축된 MySQL 및 PostgreSQL 호환 관계형 데이터베이스입니다.
표준 MySQL DB보다 최대 5배 빠르고 표준 PostgreSQL보다 3배 빠릅니다. 또한, 10%의 비용으로 상용DB의 보안, 가용성, 안정성을 제공합니다.
- AWS에서 만든 클라우드 친화적 RD엔진
- 클라우드 환경에 최적화된 DB
- 다양한 기능
- 멀티 마스터 모드 : 여러 노드가 동시에 마스터 역할 가능
- 역추적 : 원하는 시간으로 DB를 되돌릴 수 있음
- Aurora Serverless 사용 가능
- Serverless 환경에서 RDB 사용 가능
Amazon DynamoDB
AWS 설명 : 어떤 규모에서도 10밀리초 미만의 성능을 제공하는 key-value(or docs) DB입니다. 완전 관리형의 내구성이 뛰어난 다중 리전, 다중 마스터 DB로서, 인터넷 규모 애플리케이션을 위한 보안, 백업 및 복원, 인 메모리 캐싱 기능을 기본적으로 제공합니다.
- AWS에서 제공하는 NoSQL DB : 스키마가 존재x
- Key-Value 데이터 모델
- 키를 고유 식별자로 사용하는 키-값 쌍의 집합으로 데이터를 저장
- 키를 사용해서만 쿼리 가능
- Serverless 서비스
- 사용 사례 : 유저데이터 저장, 세션 저장, 게임 랭킹 등
DynamoDB의 구성
- 테이블 : 데이터의 집합
- 항목 : 고유하게 식별할 수 있는 속성들의 집합(Row)
- 속성 : 항목의 Column
- Partition Key : 하나의 속성으로 구성되는 기본 키
- DynamoDB의 데이터는 분산 저장될 때, Partition으로 나누어 저장되며 이 때 어떤 파티션으로 저장될 것인지를 결정하는 키
- 파티션 키로만 구성된 테이블에서는 중복된 파티션키는 존재할 수 없음
- Sort Key : (설정 시) 파티션 키와 같이 복합키로 구성되며 항목들이 어떻게 정렬될 지를 결정하는 키
- 파티션키-정렬키 구성으로 Unique Key 성립 가능
- 두 가지 키를 사용하여 좀 더 유연하게 쿼리 가능
- 구조
![](https://velog.velcdn.com/images/ebab_1495/post/ae47b0ae-dfdc-43b7-af26-40d716838b70/image.png)
Amazon ElasticCache
AWS 설명 : Amazon ElasticCache를 사용하면 널리 사용되는 오픈 소스 호환 인 메모리 데이터 스토어를 원활하게 설정, 실행 및 크기를 조정할 수 있습니다. 처리량이 많고 지연 시간이 짧은 인 메모리 데이터 스토어에서 데이터를 검색하여 데이터 집약적 앱을 수축하거나 기존 데이터베이스 성능을 강화합니다.
- In-Memory DB 엔진 : 휘발성이며 매우 빠름
- 캐시 용도 : 주로 DB에 워크로드를 덜어주거나 특수한 목적을 위해 사용
- Redis와 Memcached 두 가지 서비스 제공
- 사용 사례 : 세션 스토어, 게이밍, 지리공간 서비스, 실시간 분석 및 대기열
- NoSQL DB
Redis VS Memcached
기능 | MemCached | Redis |
---|
밀리세컨 단위의 레이턴시 | O | O |
개발에 쉽게 적용 가능 | O | O |
데이터 파티셔닝 | O | O |
여러 개발 언어 지원 | O | O |
고급 데이터 구조(Array 등) | X | O |
멀티 스레드 | O | X |
스냅샷 | X | O |
복제 가능 | X | O |
트랜젝션 | X | O |
Pub/Sub | X | O |
루아 스크립트 | X | O |
지리 기반 데이터 처리 | X | O |
구조
![](https://velog.velcdn.com/images/ebab_1495/post/721e7fbf-333e-49c1-b189-c41571732ca7/image.png)
- 월간 랭킹과 같이 변하진 않지만 쿼리량이 많은 데이터일 경우
- 컴퓨터-RDB 사이에서 Cache 역할을 하며 쿼리를 처리
Amazon Redshift
AWS 설명 : 클라우드에서 완벽하게 관리되는 페타바이트급 데이터 웨어하우스 서비스입니다. 작게는 수백 기가바이트부터 시작하여 페타바이트 이상까지 데이터를 확장할 수 있습니다. 이를 통해 데이터를 사용하여 비즈니스 및 고객에 대한 새로운 인사이트를 발굴하는 것도 가능합니다.
- 데이터 웨어하우스
- 조직 내부의 다양한 데이터 소스에서 추출, 변환, 적재(ETL)된 후, 분석을 위한 목적으로 사용되는 데이터 저장소입니다.
- 데이터 웨어하우스는 특징 3가지
- 통합(Integration)된 데이터 입니다.
조직 내부의 여러 데이터 소스에서 추출된 데이터가 통합되어 하나의 데이터 저장소에 저장됩니다.
- 시계열적 데이터입니다.
데이터 웨어하우스는 시간에 따라 변화하는 데이터를 저장합니다. 즉, 데이터 웨어하우스는 과거부터 현재까지의 데이터를 저장하고 분석하는 것이 목적입니다.
- 주제 지향적 데이터입니다.
데이터 웨어하우스는 분석 목적에 따라 특정 주제의 데이터를 저장합니다.
- AWS에서 제공하는 data warehouse 서비스 = OLAP 데이터베이스
- Redshift는 OLAP에 최적화된 데이터베이스
- OLAP (Online Analytical Processing) : 데이터의 분석을 위주로 데이터를 처리
![](https://velog.velcdn.com/images/ebab_1495/post/2c24b3cc-41f7-4444-af50-fb650097364a/image.png)
- 행 위주의 데이터 처리 : 1번의 내용은? 3번의 수정 사항은?
- OLTP (Online Transaction Processing) : 데이터의 트랜젝션을 위주로 데이터를 처리
![](https://velog.velcdn.com/images/ebab_1495/post/a8de2fe6-d54a-4a22-9ace-ee1fdc41c9fa/image.png)
- 열 위주의 데이터 처리 : 가장 많은 주소는? 총 금액은? 가장 많은 상품타입은?
- 병렬 처리에 탁월한 성능 : 컴퓨팅 노드의 증감이 쉽고 빠름
기타 데이터베이스 서비스
Amazon DocumentDB (MongoDB 호환)
- 문서 DB(NoSQL)
- 데이터를 JSON 혹은 유사 형식의 문서로 저장 및 쿼리하는 DB
- 각 어플리케이션에서 사용하는 모델 형식을 그대로 사용 가능 (ex. JavaScript → JSON)
- Nest된 구조로 문서 저장 가능
- 사용 사례
- 컨텐츠 관리 : 비디오 및 블로그 포스팅 등의 관리 및 추적
- 카탈로그 : 제품의 카탈로그 저장
Amazon Neptune
- 그래프 DB
- 데이터보다 데이터간 관계가 더 중심인 DB
- 각 데이터 주체간 관계와 연결을 분석하는데 최적화
- 사용사례
- 소셜 네트워크 : 각 사람간의 관계, 팔로우 관계 등을 정의
- 이상 탐지 : 구매자가 평소에 구매하지 않는 물품의 구매 등에 대한 감지 혹은 패턴 파악
- 추천 엔진 : 누가 무엇을 구매했는지 혹은 어떤 그룹의 사람들이 어떤 성향을 가지고 있는지 파악
Amazon OpenSearch Service
- 데이터의 검색에 특화된 DB
- 인덱싱과 카테고리 기능에 특화
- 원하는 데이터를 빠르게 찾는 것이 목표
- 주로 저장을 위한 DB 이외에 특별한 목적으로 사용
- 사용 사례
- 컨텐츠 검색 : 로그 검색, 유저 정보 검색, 색인 등
- 로그 분석 : 방대한 로그에서 원하는 조건에 맞는 로그 검색 혹은 시각화
Amazon QLDB (Quantum Ledger Database)
- 원장(Ledger) DB
- 데이터의 신뢰성 및 투명성이 중요한 DB
- 장부
- 데이터의 정확한 변경 내역 및 무결성 확보가 중요한 기능
- 블록 체인 네트워크 및 암호화를 통해 무결성 확보
- 사용 사례
- 금융 거래 기록 : 변경되면 안되는 매우 중요한 이벤트 기록 및 감사
Amazon Timestream
- 타임시리즈 DB
- 많은 이벤트를 시간 단위로 저장하기 위한 DB
- 수만~수십만 건의 이벤트 데이터를 시간에 따라 정렬하고 특정 시점의 이벤트를 쿼리
- 사용 사례
- IOT 기기의 이벤트 관리 : 많은 숫자의 IOT 기기의 이벤트 기록 및 분석
- 분석 애플리케이션 : 게임같이 이벤트가 많이 발생하는 애플리케이션의 분석 데이터의 캐싱 및 시각화
- 예시
![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bdcf9da1-4d9e-4310-b070-f97ae9371160/Untitled.png)