6. 데이터베이스 서비스
Amazon RDS
Amazon RDS 기능
- 하드웨어, OS 및 DB 소프트웨어 배포 및 유지, 모니터링 제공
- 저장 데이터 및 전송 데이터 암호화. 업계 규정 준수
- 자동 다중 AZ 데이터 복제
- 컴퓨팅 및 스토리지 크기 조정, 최소한의 애플리케이션 가동 중단
Amazon RDS 데이터베이스 엔진
- Amazon Aurora
- PostgreSQL
- MySQL
- MariaDB
- OracleDB
- SQL Server
Amazon RDS 다중 AZ 배포
- 다른 가용 영역의 대기 DB 인스턴스에 데이터 복제
- 데이터 트랜잭션 완전 보장
- 읽기 전용 시나리오에서는 사용되지 않음
- 장애 발생 시 대기 DB 인스턴스에서 로드를 처리 (프라이머리로 승격)
읽기 전용 복제본
읽기 작업이 많은 경우
- 읽기 중심의 워크로드 처리를 위해 수평 크기 조정
- 최대 5개까지 읽기 전용 복제본 생성해서 부하 분산
저장 데이터 암호화
- AWS KMS를 사용하여 저장 데이터 암호화 제공
Amazon Aurora
클라우드를 위해 구축된 MySQL 및 PostgreSQL 호환 관계형 데이터베이스
Aurora DB 클러스터
두 가지 인스턴스 유형 제공
- 프라이머리 인스턴스 - 읽기 및 쓰기 작업을 지원. 각 Aurora DB 클러스터마다 프라이머리 인스턴스 하나씩 있음.
- Aurora 복제본 - 읽기 작업만 지원. 각 클러스터마다 최대 15개의 복제본을 가질 수 있음. 읽기 워크로드 분산. 별도의 가용 영역에 배치하여 가용성 높일 수 있음.
PostgreSQL 및 MySQL용 Aurora Serverless v2
애플리케이션 요구 사항을 기반으로 하여 용량을 자동 확장하거나 축소하는 Aurora용 크기 조정 구성
- Amazon Aurora의 온디맨드 자동 크기 조정 구성
- 데이터베이스가 자동으로 애플리케이션의 피크 로드를 충족하도록 용량을 늘리고 활동 급증 시간이 끝나면 다시 용량을 줄임
Amazon DynamoDB
DynamoDB
완전 관리형 NoSQL AWS 데이터베이스 서비스 Tier-0
- 규모에 따른 성능
- 관리할 서버 없음
- 엔터프라이즈 지원
블랙 프라이데이때마다 amazon.com 수시간 장애. Why? RDBMS 성능 부족 70%가 한 개의 table에서 한 개의 row를 찾는 key-value 형태 쿼리 20%는 한 개의 table에서 여러 row를 찾는 쿼리 10%만 여러 개의 table에서 join 쿼리 Foreign Key, Transaction 기능 안 씀
키 값 데이터
- 큰 데이터 볼륨, 짧은 지연 시간, 유연한 데이터 모델이 필요한 애플리케이션에 최적화
- RDBMS 일관성 제약 조건 일부를 완화는 방식으로 최적화
DynamoDB 사용 사례
DynamoDB 테이블
DynamoDB 용량 및 크기 조정
- 온디맨드 - 읽기 및 쓰기 요청당 요금 부과
- 프로비저닝 - 최대 RCU, WCU 설정. 자동 크기 조정을 사용해 수요와 일치하도록 프로비저닝된 용량 조정. 애플리케이션 트래픽이 예측 가능한 경우, 트래픽의 양이 일정하거나 점진적으로 변경되는 경우, 비용 관리를 위해 용량 요구 사항을 예측할 수 있는 경우
DynamoDB 일관성 옵션
두 가지 방식으로 읽기 가능
최종적으로 일관된 읽기
- 0.5 RCU 사용
- 최근 완료된 쓰기 작업의 결과를 반영하지 않을 수 있음.
- 잠시 후 읽기 요청을 반복하면 응답이 최신 데이터를 반환
- 기본적으로는 이거 사용
강력한 읽기 일관성
- 1.0 RCU 사용
- 랜덤하게 두 개 읽어서 동일한지 확인
- 다르다면 다시 읽음
DynamoDB 글로벌 테이블
글로벌 테이블은 리전 간 복제를 자동화합니다.
- 비동기적으로 리전 간 복제를 한다.
- 리전당 한 개의 복제 테이블을 가질 수 있다.
- 모든 복제본은 동일한 테이블 이름과 동일한 기본 키 스키마를 가진다.
데이터베이스 캐싱
성능을 높이기 위해 클라우드에서 캐싱하는 방법은 무엇일까?
캐시해야 하는 항목
- 쿼리 속도가 느리고 비용이 많이 드는 데이터
- 자주 액세스하는 데이터
- 비교적 정적 상태로 유지되는 정보
캐싱 아키텍쳐
일반적인 캐싱 전략
레이지 로딩
- 일단 데이터베이스에 먼저 씀
- 한번 조회가 된 데이터만 캐시에 로드됨
- 캐시 사이즈 작음
- 하지만 캐시 미스 확률 높음
라이트 스루
- 캐시에다가 먼저 씀
- 캐시 미스 거의 없음
- 하지만 캐시 사이즈가 큼
캐시 관리
- 캐시 유효성 - TTL(Time To Live) 값을 각 애플리케이션 쓰기에 추가할 수 있음
- 메모리 관리 - 캐시 메모리가 가득 차면 어떤 데이터를 먼저 제거할지
Amazon ElastiCache
- 탁월한 성능
- 완전관리형
- 간편하게 확장 가능
Redis & Memcached 사용
ElastiCache 엔진
- 한국에서는 Redis 많이 사용한다
- 구독, 데이터 세트 정렬 및 순위 지정이 가능해서 좋다
- 백업 및 복원도 가능하다
Amazon DynamoDB Accelerator
데이터베이스 마이그레이션 도구
AWS Database Migration Service
CDC같은 비싼거 안쓰고 EC2 한대 값으로 마이그레이션 가능 (Change Data Captue)
AWS Schema Conversion Tool
- 이기종 데이터베이스를 예측 가능한 방식으로 마이그레이션
- 몇개 스키마는 안전하게 마이그레이션 가능하고, 몇개는 위험하다는걸 알려줌