Amazon Cloud Club Ewha 3기 핸즈온 세션 이론 정리
Week 2 - 데이터베이스 - RDS, DynamoDB
구조화된 정보 또는 데이터의 조직화된 모음. DBMS에 의해 제어된다.
Relational Database | Non-Relational Database |
---|---|
구조화된 데이터 저장 | 비정형 데이터 저장 |
엄격한 스키마 | 스키마 없음 |
테이블 형태 | 테이블이 아닌 형태(문서, 키-값, 그래프 등) |
SQL 사용 | 자체 API 사용 |
MySQL, PostgreSQL | MongoDB, Redis |
On-Premise | AWS EC2 | AWS RDS |
---|---|---|
사용자가 직접 서버를 구축하여 DB 관리 | EC2 인스턴스 위에 직접 DB 설치 | AWS의 완전관리형 RDB 서비스 |
Relational Database Service
AWS 클라우드에서 관계형 데이터베이스를 쉽게 설치, 운영 및 확장할 수 있도록 지원하는 완전관리형 서비스.
SAA Example
Q: RDS를 사용하고 있는 회사에서 하루/한달에 한 번씩 통계용
으로 데이터를 읽어오는 데 성능에 문제가 생기는 것을 발견
했다. 이때의 솔루션은?
A: RDS Read Replica를 사용한다.
Multi-AZ | Read Replica |
---|---|
장애 대비 | 성능 개선 |
동기 복제 | 비동기 복제 |
항목 | SQL | NoSQL |
---|---|---|
구조 | 고정된 스키마 | 유연한 스키마 |
데이터 형태 | 테이블(행/열) | 문서, 키-값 등 |
언어 | SQL | 자체 API |
확장성 | 수직 확장 | 수평 확장 |
대표 예시 | MySQL, PostgreSQL | MongoDB, DynamoDB |
AWS Lambda
- DynamoDB에서는 Batch 쓰기 지원
Lambda를 이용해서 batch.put_item으로 여러번의 데이터 추가를 하나의 함수로 한 번에 진행할 수 있다
BatchWriteItem API
: 한 번에 최대 25개의 항목까지 DynamoDB 테이블에
삽입할 수 있는 API
CloudWatch Events
: 특정 시간 또는 주기적으로 Lambda 함수를 실행하도록 설정- DynamoDB의 특성상 (NoSQL) Join 지원 X
Join이 부득이하게 필요한 경우 Lambda로 구현 가능
항목 | Amazon RDS | Amazon DynamoDB |
---|---|---|
DB 유형 | 관계형 데이터베이스 (SQL 기반) | 비관계형 데이터베이스 (NoSQL, 키-값/문서형) |
데이터 구조 | 테이블, 행, 열 (고정 스키마) | 테이블, 아이템, 속성 (유연한 스키마) |
쿼리 언어 | SQL (MySQL, PostgreSQL 등) | 자체 API (SQL 사용 X) |
스케일링 | 수직 확장 (인스턴스 크기 조절) 읽기 성능은 Read Replica 사용 | 수평 확장 (자동 스케일링) 용량에 따라 자동 조정 |
고가용성 | Multi-AZ 구성으로 장애 대비 | 리전 및 AZ 복제 내장 (기본 내구성 높음) |
성능 | 복잡한 쿼리에 적합 조인, 트랜잭션 지원 | 단순/빠른 읽기-쓰기 작업에 최적화 밀리초 응답 |
트랜잭션 지원 | 완전한 ACID 트랜잭션 지원 | 제한적 트랜잭션 지원 (단순한 경우에만 사용) |
비용 구조 | 인스턴스 기준 요금 (사용 시간 + 저장소 + 백업) | 요청 기반 과금 (읽기/쓰기 용량 또는 온디맨드) |
운영/관리 | 백업, 패치 등 자동화되었지만 일부 설정 필요 | 완전 서버리스 (인프라 관리 불필요) |
사용 사례 | 전통적인 웹앱, ERP, CRM, 금융 시스템 등 | IoT, 게임 리더보드, 실시간 로그 처리, 모바일 앱 등 |
장점 | 관계형 구조로 복잡한 비즈니스 로직 구현 용이 | 확장성, 고속 처리, 관리 편의성 탁월 |