
🔍 RDS (Relational Database Service)
데이터베이스에는 크게 관계형 데이터베이스와 NoSQL같이 JSON의 형태를 지닌 비관계형 데이터베이스가 존재한다. RDS는 주로 전자에 속하며, 아래와 같은 행과 열이 있는 각각의 Column마다 특징적인 값들이 들어간다.

AWS RDS에서는 Microsoft SQL, Oracle, MySQL, Postgre, Aurora, Maria DB 등이 존재한다.
🔍 Data Warehousing
여러 출처에서 데이터를 수집, 저장, 관리하고 분석하기 위해 중앙 집중화된 데이터 저장소(데이터 웨어하우스, Data Warehouse)를 구축하는 프로세스를 의미한다. 주로 비즈니스 인텔리전스 등 의사결정 지원을 위한 대량의 데이터를 효율적으로 관리하는 데 사용된다.
💡 데이터 웨어하우스(DW) vs. OLTP(온라인 트렌젝션 처리) 시스템
구분
|
데이터 웨어하우스(DW) (OLAP)
|
OLTP 시스템
|
목적
|
데이터 분석 및 의사결정 지원
|
실시간 트랜잭션 처리
|
주요 기능
|
복잡한 쿼리를 통한 데이터 분석 (OLAP)
|
빠르고 잦은 데이터 변경 (CRUD)
|
데이터 구조
|
비정규화된 다차원 구조 (스타 스키마, 스노우플레이크 스키마)
|
정규화된 관계형 데이터 (테이블 간 중복 최소화)
|
데이터 변경 빈도
|
적음 (정기적인 배치 처리)
|
많음 (실시간 삽입, 수정, 삭제)
|
사용자
|
경영진, 데이터 분석가
|
일반 사용자, 운영 시스템
|
예시
|
BI 시스템, 매출 트렌드 분석
|
은행 거래 시스템, 전자상거래 사이트
|
🔍 AWS RDS Backup
💡 Automated Backups vs DB Snapshots
구분
|
Automated Backups (AB)
|
DB Snapshots (데이터베이스 스냅샷)
|
실행 방식
|
자동으로 수행됨 (기본적으로 활성화)
|
사용자가 직접 수행해야 함
|
보관 기간
|
1~35일 동안 유지 가능 (Retention Period)
|
삭제하기 전까지 무제한 보관 가능
|
백업 내용
|
생성된 스냅샷과 트랜잭션 로그(TL)를 기반으로 함
|
백업 시점의 RDS 인스턴스를 그대로 보관
|
저장 위치
|
S3에 저장됨
|
사용자의 선택에 따라 보관
|
RDS 인스턴스 삭제 후 데이터 유지 여부
|
원본 RDS 인스턴스를 삭제하면 백업도 사라짐
|
원본 RDS 인스턴스를 삭제해도 스냅샷은 유지됨
|
I/O 영향
|
AB 수행 중 일시적인 I/O 중단(suspension) 가능성 존재 (Latency 증가)
|
I/O 영향을 거의 주지 않음
|
원본 RDS 인스턴스를 가지고 새로운 데이터베이스를 복원 시 전혀 새로운 RDS 인스턴스와 그에 해당하는 엔드포인트가 생성된다. 다시 말해 두 개는 완전히 다른 객체가 된다.
🔍 Multi-AZ, Read Replicas
1️⃣ Multi-AZ
- 원본 DB에서 쓰기(Write)와 같은 변화가 발생하면 즉시 다른 Availability Zone(AZ)에 복제본을 만들어 동기화한다.
- 원본 DB에 문제가 생기면 자동으로 다른 AZ에 있는 복제본으로 전환된다.
- AWS가 자동으로 관리해줘 사용자가 개입할 필요가 없다.
- 오로지 장애 발생 시를 대비한 목적이며, 성능 향상 용도가 아니다.
2️⃣ Read Replicas
Read Replicas는 성능 개선을 위해 사용하는 방식으로, 원본의 DB 부하를 분산하는 것을 목표로 한다.
- 원본 DB에서 읽기 작업을 복제본으로 분산시켜 성능을 높인다.
- 원본 DB 하나당 최대 5개의 Read Replica를 생성할 수 있다.
- 주로 읽기 작업(Read-heavy workload)이 많을 때 유용하며, DB 성능을 크게 개선할 수 있다.
- 각각의 Read Replica는 고유한 Endpoint가 있어서 독립적으로 접근이 가능하다.
- Read Replica의 Read Replica 생성이 가능하지만, 이 경우 지연(Latency)이 증가할 수 있다.
- Multi-AZ와 달리 Read Replica는 장애 발생 시를 위한 용도가 아니다.
🔍 ElasticCache
ElasticCache는 말 그대로 캐시다. 클라우드 내에서 In-memory 캐시를 만들어주며, 데이터베이스에서 데이터를 읽어오는 것이 아닌 캐시에서 빠른 속도로 데이터를 읽어올 수 있도록 한다. 즉 데이터의 양이 엄청나게 방대하다면 많은 이득을 볼 수 있다. (Read-heavy 데이터베이스를 사용할 때)
1️⃣ Memcached
Object 캐시 시스템으로 잘 알려져 있고, EC2 Auto Scaling처럼 크기가 커졌다 작아졌다가 가능하다. 즉 데이터 처리 사용량에 따라 캐시 크기가 변화한다.
- 가장 단순한 캐싱 모델
- Set , List 처럼 Advanced data type이 아닌 object caching 시 사용
- 캐시 크기를 마음대로 스케일링 할 수 있음
2️⃣ Redis
Key-Value , Set , List 와 같은 형태의 데이터를 In-Memory에 저장 가능하며 Multi-AZ를 지원한다.
🖥 실습
AMAZON RDS 실습을 진행해보자.

프리 티어로 모두 진행하면 된다. 본인은 MySQL 을 선택했다.
#!/bin/bash
yum install httpd php php-mysqlnd -y
yum update -y
chkconfig httpd on
service httpd start
echo "" > /var/www/html/index.php
cd /var/www/html
wget https://aws-learner-storage.s3.ap-northeast-2.amazonaws.com/connect.php
또한 EC2를 연결해주자.
퍼블릭 IPv4 주소를 입력하면 아래와 같이 php가 나온다.

데이터베이스를 생성한 후, EC2에 ssh로 접속한다.
ssh -i "reo_keypair.pem" ec2-user@ec2-43-200-173-237.ap-northeast-2.compute.amazonaws.com
sudo su # 관리자 권한 획득
cd /var/www/html
폴더로 이동하면 connect.php 와 index.php 가 존재한다. 우리는 connect.php 를 수정해보자.

여기서 엔드포인트를 hostname 에 붙여넣는다.

이렇게 수정해야 한다!
<?php
$username = "awslearner";
$password = "awslearner";
$hostname = "엔드포인트 기입";
$dbname = "awslearner";
$dbhandle = mysqli_connect($hostname, $username, $password, $dbname)
or die("MySQL에 연결할 수 없습니다: " . mysqli_connect_error());
echo "MySQL 접속 성공! username - $username, password - $password, host - $hostname<br>";
mysqli_close($dbhandle);
?>
하지만 초기에는 연결되지 않는다. 보안 그룹을 통해 포트를 열고, charset을 모두 utf8 로 바꿔주어야 한다.
nano /etc/my.cnf
>>>
[mysqld]
collation-server=utf8_unicode_ci
character-set-server=utf8
[mysql]
default-character-set=utf8
이와 같이 수정하고, RDS의 파라미터 그룹도 수정해야 한다.

파라미터 그룹에서 client, connection, database, server 이 네가지의 값을 utf8로 바꿔주어야 한다.

재부팅하면 정상적으로 연결된다!
'◎ 이것저것 공부하기 > AWS' 카테고리의 다른 글
AWS 기초부터 공부하기 - IAM, EC2 (0) | 2025.03.17 |
---|
자기계발 블로그