Skip to content

04. AWS RDS와 데이터베이스 기초

데이터베이스의 핵심 개념을 이해하고, AWS RDS를 활용하여 클라우드 환경에서 관계형 데이터베이스를 운영하는 방법을 학습한다.


Part 1: 데이터베이스 기초

1. 데이터베이스(Database)란?

데이터베이스는 체계화하여 통합 관리하는 데이터의 집합이다. 단순히 파일에 데이터를 저장하는 것과 근본적으로 다르다.

왜 데이터베이스가 필요한가?

웹 서비스를 운영하면 회원 정보, 게시글, 주문 내역 등 수많은 데이터가 쌓인다. 처음에는 텍스트 파일이나 엑셀로 관리할 수 있지만, 데이터가 수만 건을 넘어가면 한계에 부딪힌다.

비교 항목텍스트 파일데이터베이스
데이터 검색파일 전체를 순차적으로 읽어야 한다인덱스(Index)를 활용하여 즉시 검색한다
동시 접근여러 사용자가 동시에 수정하면 충돌한다트랜잭션(Transaction)으로 안전하게 처리한다
데이터 무결성잘못된 형식의 데이터도 저장된다스키마와 제약 조건으로 유효성을 검증한다
관계 표현파일 간 연결이 불가능하다외래 키(Foreign Key)로 테이블 간 관계를 정의한다
백업/복구수동으로 파일을 복사해야 한다자동 백업, 시점 복구(Point-in-Time Recovery)를 지원한다
확장성파일이 커질수록 성능이 급격히 저하된다대용량 데이터를 효율적으로 처리한다

핵심은 데이터가 많아지면 구조화가 필수라는 점이다. 텍스트 파일 100줄은 메모장으로 충분하지만, 100만 줄은 데이터베이스 없이 관리할 수 없다.


2. RDB (Relational Database, 관계형 데이터베이스)

RDB는 데이터를 행(Row)과 열(Column)로 이루어진 테이블(Table) 형태로 저장하는 데이터베이스다. 1970년 에드거 커드(Edgar F. Codd)가 제안한 관계형 모델에 기반한다.

핵심 개념

용어설명예시
스키마(Schema)데이터의 구조를 미리 정의하는 설계도회원 테이블에는 이름(문자열), 나이(정수), 이메일(문자열)이 있다
테이블(Table)데이터를 저장하는 2차원 표users 테이블, orders 테이블
필드(Field, Column)테이블의 열. 데이터의 속성을 나타낸다name, age, email
레코드(Record, Row)테이블의 행. 하나의 데이터 항목이다('홍길동', 25, 'hong@test.com')
기본 키(Primary Key)각 레코드를 고유하게 식별하는 필드id = 1, id = 2
외래 키(Foreign Key)다른 테이블의 기본 키를 참조하는 필드orders.user_id -> users.id

RDB의 특징

  • 명확한 스키마(Schema) 기반: 데이터를 저장하기 전에 테이블 구조를 반드시 정의해야 한다. 스키마에 맞지 않는 데이터는 저장이 거부된다.
  • ACID 트랜잭션: 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 보장한다. 은행 송금처럼 "전부 성공하거나 전부 실패"해야 하는 작업에 적합하다.
  • SQL 사용: 표준화된 질의 언어(Structured Query Language)로 데이터를 조작한다.
  • 정규화(Normalization): 데이터 중복을 최소화하도록 테이블을 분리한다.

RDB 테이블 구조 예시

┌─────────────────────────────────────────────────────┐
│                    users 테이블                       │
├──────┬──────────┬─────┬────────────────────┤
│  id  │   name   │ age │       email        │  ← 필드(Field)
├──────┼──────────┼─────┼────────────────────┤
│  1   │ 홍길동    │  25 │ hong@test.com      │  ← 레코드(Record)
│  2   │ 김철수    │  30 │ kim@test.com       │  ← 레코드(Record)
│  3   │ 이영희    │  28 │ lee@test.com       │  ← 레코드(Record)
└──────┴──────────┴─────┴────────────────────┘
  ↑ 기본 키(Primary Key)

대표적인 RDB

이름특징
MySQL오픈소스, 가장 널리 사용되는 RDB. 웹 서비스에 최적화
PostgreSQL오픈소스, 고급 기능 풍부. 복잡한 쿼리와 확장성이 뛰어남
Oracle상용, 대기업에서 주로 사용. 안정성과 성능이 검증됨
MariaDBMySQL에서 포크(Fork)된 오픈소스. MySQL과 높은 호환성
MSSQLMicrosoft의 상용 DB. Windows 환경과 .NET 생태계에 최적화

3. NoSQL Database (비관계형 데이터베이스)

NoSQL은 "Not Only SQL"의 약자로, RDB의 고정된 스키마 없이 느슨한 구조로 데이터를 저장하는 데이터베이스다.

NoSQL의 특징

  • 스키마 없는 유연한 구조: 데이터 형태가 자유롭다. 같은 컬렉션(Collection)에 서로 다른 구조의 문서를 저장할 수 있다.
  • 수평 확장(Horizontal Scaling): 서버를 추가하여 처리 능력을 늘리기 쉽다. 빅데이터 환경에 적합하다.
  • 높은 쓰기 성능: 대용량 로그, 실시간 데이터 수집에 강하다.
  • 최종 일관성(Eventual Consistency): ACID 대신 BASE(Basically Available, Soft state, Eventually consistent) 모델을 사용하는 경우가 많다.

NoSQL 데이터 구조 예시 (JSON 문서형)

json
// 문서 1: 기본 정보만 있음
{
  "name": "홍길동",
  "age": 25,
  "email": "hong@test.com"
}

// 문서 2: 추가 필드가 있어도 같은 컬렉션에 저장 가능
{
  "name": "김철수",
  "age": 30,
  "email": "kim@test.com",
  "address": "서울시 강남구",
  "hobbies": ["독서", "등산"]
}

스키마가 없기 때문에 두 문서의 구조가 달라도 문제 없이 저장된다.

대표적인 NoSQL

이름유형특징
MongoDB문서형(Document)JSON 기반 문서 저장. 웹 애플리케이션에서 가장 인기
Cassandra컬럼형(Column Family)대규모 분산 처리. Netflix, Instagram이 사용
HBase컬럼형(Column Family)Hadoop 위에서 동작. 대용량 데이터 분석에 적합
Redis키-값(Key-Value)메모리 기반. 캐시(Cache)와 세션 저장에 최적화
DynamoDB키-값(Key-Value)AWS 관리형 NoSQL. 서버리스(Serverless) 환경에 적합

4. RDB vs NoSQL 비교

선택 기준 요약

판단 기준RDB 선택NoSQL 선택
데이터 구조정형 데이터, 관계가 복잡비정형 데이터, 구조가 자주 변경
트랜잭션강력한 ACID가 필요최종 일관성으로 충분
확장 방식수직 확장 (서버 성능 업그레이드)수평 확장 (서버 수 증가)
쓰기 패턴읽기/쓰기 균형대량 쓰기가 많음

Part 2: AWS RDS (Relational Database Service)

1. RDS란?

AWS RDS(Relational Database Service)는 AWS가 제공하는 관리형 관계형 데이터베이스 서비스다. 사용자가 직접 서버를 구축하고 데이터베이스를 설치할 필요 없이, AWS 콘솔에서 몇 번의 클릭만으로 데이터베이스를 생성하고 운영할 수 있다.

EC2에 직접 DB 설치 vs RDS 사용

EC2 인스턴스에 MySQL을 직접 설치하여 사용할 수도 있다. 하지만 이 경우 모든 관리 책임이 사용자에게 있다.

관리 항목EC2 직접 설치RDS 사용
OS 설치/관리사용자가 직접AWS가 관리
DB 소프트웨어 설치사용자가 직접AWS가 자동
보안 패치수동으로 적용자동 패치 또는 일정 예약
버전 업그레이드수동으로 진행콘솔에서 클릭 한 번
자동 백업직접 cron 작업 설정활성화만 하면 자동
시점 복구직접 구현 필요최대 35일 내 원하는 시점으로 복구
장애 대응직접 모니터링 및 대응Multi-AZ 배포 시 자동 장애 조치(Failover)
읽기 확장직접 복제 구성Read Replica 간편 생성

RDS의 핵심 장점을 정리하면 다음과 같다:

  1. 자동 백업(Automated Backup): 매일 자동으로 스냅샷을 생성하고, 최대 35일까지 보관한다.
  2. 자동 패치(Automated Patching): 데이터베이스 엔진의 보안 패치를 자동으로 적용한다.
  3. 버전 업그레이드: 메이저/마이너 버전 업그레이드를 콘솔에서 간편하게 수행한다.
  4. 시점 복구(Point-in-Time Recovery): 백업 보관 기간 내 원하는 시점으로 데이터베이스를 복구할 수 있다.

RDS가 지원하는 데이터베이스 엔진

엔진설명
Amazon AuroraAWS 자체 개발. MySQL/PostgreSQL 호환. 최대 5배 빠른 성능
MySQL가장 대중적인 오픈소스 RDB
MariaDBMySQL 포크. 커뮤니티 기반
PostgreSQL고급 기능이 풍부한 오픈소스 RDB
Oracle엔터프라이즈급 상용 RDB
SQL ServerMicrosoft의 상용 RDB

2. RDS 아키텍처

아키텍처 설명:

  1. 클라이언트: 개발자는 HeidiSQL 같은 DB 관리 도구로, 웹 애플리케이션은 코드에서 직접 RDS 엔드포인트에 접속한다.
  2. 엔드포인트(Endpoint): RDS가 자동 생성하는 DNS 주소다. IP 주소 대신 이 엔드포인트로 접속한다.
  3. 보안 그룹(Security Group): 방화벽 역할을 한다. MySQL 기본 포트인 3306을 인바운드 규칙에 추가해야 외부에서 접속할 수 있다.
  4. 자동 백업: 설정한 시간에 자동으로 스냅샷을 생성하여 S3에 저장한다.

3. RDS로 MySQL 생성 (실습 가이드)

AWS 콘솔에서 RDS MySQL 인스턴스를 생성하는 전체 과정이다.

Step 1: RDS 대시보드 접속

  1. AWS 콘솔에 로그인한다.
  2. 서비스 메뉴에서 RDS를 검색하여 접속한다.
  3. 좌측 메뉴에서 데이터베이스 클릭 후 데이터베이스 생성 버튼을 누른다.

Step 2: 데이터베이스 엔진 선택

설정 항목
데이터베이스 생성 방식표준 생성
엔진 유형MySQL
에디션MySQL Community
엔진 버전기본값 사용 (최신 안정 버전)
템플릿프리 티어(Free Tier) 선택

중요: 프리 티어(Free Tier) 템플릿을 선택해도 계정 생성일, 플랜, 리전, 엔진, 인스턴스 클래스에 따라 과금 조건이 달라질 수 있다. 콘솔의 Free Tier eligible 표시와 Billing 대시보드를 함께 확인한다.

Step 3: 인스턴스 설정

설정 항목설명
DB 인스턴스 식별자my-first-rdsRDS 인스턴스의 이름
마스터 사용자 이름adminDB 관리자 계정
마스터 비밀번호(직접 설정)최소 8자, 영문+숫자 조합 권장
DB 인스턴스 클래스Free Tier eligible 표시가 있는 클래스계정 조건에 따라 달라질 수 있음
스토리지 유형범용 SSD기본값 사용
할당된 스토리지20 GiB프리 티어 기본값

Step 4: 연결(Connectivity) 설정

이 단계가 가장 중요하다. 외부에서 RDS에 접속하려면 올바른 네트워크 설정이 필수다.

설정 항목설명
VPCDefault VPC기본 VPC 사용
퍼블릭 액세스예(Yes)외부 인터넷에서 접속 가능하도록 설정
VPC 보안 그룹새 보안 그룹 생성 또는 기존 선택인바운드 규칙 설정 필요

주의: 학습 목적으로 퍼블릭 액세스(Public Access)를 활성화한다. 실제 운영 환경에서는 퍼블릭 액세스를 비활성화하고, 같은 VPC 내의 EC2에서만 접속하도록 구성하는 것이 보안상 안전하다.

Step 5: 보안 그룹 인바운드 규칙 설정

RDS가 생성된 후, 보안 그룹의 인바운드 규칙을 편집한다.

유형프로토콜포트 범위소스
MYSQL/AuroraTCP33060.0.0.0/0 (모든 IP 허용)

보안 경고: 0.0.0.0/0은 모든 IP에서의 접속을 허용하는 설정이다. 학습용으로만 사용하고, 실제 운영에서는 특정 IP 또는 보안 그룹만 허용해야 한다.

Step 6: HeidiSQL로 접속

RDS 인스턴스가 생성되면(약 5~10분 소요), RDS 대시보드에서 엔드포인트(Endpoint) 를 확인한다.

HeidiSQL 접속 설정:

항목
네트워크 유형MySQL (TCP/IP)
호스트명RDS 엔드포인트 주소 (예: my-first-rds.xxxx.ap-northeast-2.rds.amazonaws.com)
사용자admin
비밀번호RDS 생성 시 설정한 비밀번호
포트3306

"열기" 버튼을 클릭하여 정상 접속되면 RDS MySQL 생성이 완료된 것이다. 이제 SQL 명령어로 데이터를 관리할 수 있다.


4. 스냅샷(Snapshot) 기능

스냅샷은 특정 시점의 데이터베이스 전체 상태를 캡처하여 백업하는 기능이다. 마치 게임의 세이브 포인트와 같다.

스냅샷의 종류

종류설명
자동 스냅샷RDS가 설정된 백업 윈도우 시간에 매일 자동 생성. 보관 기간(1~35일) 설정 가능
수동 스냅샷사용자가 원하는 시점에 직접 생성. 명시적으로 삭제할 때까지 보관

스냅샷 생성 방법

  1. RDS 대시보드에서 데이터베이스 인스턴스를 선택한다.
  2. 작업(Actions) 메뉴에서 스냅샷 생성(Take Snapshot) 을 클릭한다.
  3. 스냅샷 이름을 입력하고 생성 버튼을 누른다. (예: my-first-rds-snapshot-20260329)

스냅샷에서 복원

스냅샷에서 복원하면 기존 RDS를 덮어쓰는 것이 아니라 새로운 RDS 인스턴스가 생성된다. 이 점이 매우 중요하다.

  1. 좌측 메뉴에서 스냅샷 클릭.
  2. 복원할 스냅샷을 선택하고 스냅샷 복원(Restore Snapshot) 클릭.
  3. 새 RDS 인스턴스의 식별자를 입력한다. (예: my-first-rds-restored)
  4. 인스턴스 클래스, 보안 그룹 등을 설정하고 생성한다.
  5. 새 인스턴스가 생성되면 새로운 엔드포인트가 부여된다.

스냅샷 활용 시나리오: 패치 전 안전망

데이터베이스 패치나 대규모 변경 작업 전에 스냅샷을 생성해두면, 문제가 발생했을 때 안전하게 롤백할 수 있다.

흐름 설명:

  1. 패치 전 스냅샷 생성: 현재 상태를 백업한다.
  2. 패치 적용: 데이터베이스 엔진을 업그레이드하거나 변경 사항을 적용한다.
  3. 성공 시: 정상 동작이 확인되면 스냅샷을 삭제하여 비용을 절감한다.
  4. 실패 시: 스냅샷에서 복원하여 새 RDS 인스턴스를 생성한다.
  5. 엔드포인트 전환: 애플리케이션의 DB 접속 주소를 새 인스턴스의 엔드포인트로 변경한다.

Part 3: SQL CRUD 기초

1. SQL이란?

SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 정의, 조작, 제어하기 위한 표준 질의 언어다. 1970년대 IBM에서 개발되었으며, 현재 거의 모든 RDB에서 공통으로 사용한다.

SQL은 크게 세 가지 범주로 나뉜다:

범주약자설명대표 명령어
데이터 정의어DDL (Data Definition Language)데이터 구조를 정의CREATE, ALTER, DROP
데이터 조작어DML (Data Manipulation Language)데이터를 조회/삽입/수정/삭제SELECT, INSERT, UPDATE, DELETE
데이터 제어어DCL (Data Control Language)접근 권한을 관리GRANT, REVOKE

2. CRUD 개념

CRUD는 데이터를 다루는 4가지 기본 동작을 나타내는 약자다. 거의 모든 애플리케이션은 이 네 가지 동작의 조합으로 구성된다.

동작의미SQL 명령어HTTP 메서드
Create생성 (새 데이터 삽입)INSERTPOST
Read읽기 (데이터 조회)SELECTGET
Update수정 (기존 데이터 변경)UPDATEPUT / PATCH
Delete삭제 (데이터 제거)DELETEDELETE

3. 데이터베이스 관리 명령어

HeidiSQL이나 MySQL CLI에 접속한 후 실행하는 기본 명령어들이다.

데이터베이스 생성

sql
-- 새 데이터베이스 생성
CREATE DATABASE my_shop;

my_shop이라는 이름의 데이터베이스가 생성된다. 데이터베이스는 여러 테이블을 담는 컨테이너 역할을 한다.

데이터베이스 목록 조회

sql
-- 현재 서버의 모든 데이터베이스 목록 출력
SHOW DATABASES;

실행 결과 예시:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| my_shop            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

information_schema, mysql, performance_schema, sys는 MySQL이 내부적으로 사용하는 시스템 데이터베이스다. 직접 수정하지 않는다.

데이터베이스 선택 (사용)

sql
-- 작업할 데이터베이스 선택
USE my_shop;

이후 실행하는 모든 SQL 명령은 my_shop 데이터베이스 내에서 동작한다.

데이터베이스 삭제

sql
-- 데이터베이스 삭제 (내부 모든 테이블과 데이터가 함께 삭제됨)
DROP DATABASE my_shop;

주의: DROP DATABASE는 되돌릴 수 없다. 실행 전에 반드시 대상 데이터베이스를 확인해야 한다.


4. 테이블 관리 명령어

테이블 생성

sql
-- users 테이블 생성
CREATE TABLE users (
    id       INT          NOT NULL AUTO_INCREMENT,
    name     VARCHAR(100) NOT NULL,
    age      INT          NOT NULL,
    email    VARCHAR(200) NOT NULL,
    PRIMARY KEY (id)
);

각 키워드의 의미:

키워드설명
INT정수형 데이터 타입
VARCHAR(100)최대 100자의 가변 길이 문자열
NOT NULL이 필드는 반드시 값이 있어야 한다 (빈 값 불가)
AUTO_INCREMENT새 레코드 삽입 시 자동으로 1씩 증가하는 고유 번호
PRIMARY KEY (id)id 필드를 기본 키로 지정. 모든 레코드를 고유하게 식별

주요 데이터 타입

데이터 타입설명예시
INT정수1, 25, -100
BIGINT큰 정수9999999999
FLOAT / DOUBLE소수3.14, 99.99
VARCHAR(n)가변 길이 문자열 (최대 n자)'hello', '홍길동'
TEXT긴 문자열 (최대 65,535자)게시글 본문
DATE날짜'2026-03-29'
DATETIME날짜와 시간'2026-03-29 14:30:00'
BOOLEAN참/거짓TRUE, FALSE

테이블 목록 조회

sql
-- 현재 데이터베이스의 모든 테이블 목록 출력
SHOW TABLES;

실행 결과 예시:

+-------------------+
| Tables_in_my_shop |
+-------------------+
| users             |
+-------------------+

테이블 구조 확인

sql
-- users 테이블의 구조(필드, 타입, 제약 조건) 확인
DESC users;

실행 결과 예시:

+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int          | NO   | PRI | NULL    | auto_increment |
| name  | varchar(100) | NO   |     | NULL    |                |
| age   | int          | NO   |     | NULL    |                |
| email | varchar(200) | NO   |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+

테이블 삭제

sql
-- users 테이블 삭제 (내부 모든 데이터가 함께 삭제됨)
DROP TABLE users;

5. 레코드 CRUD (데이터 조작)

CREATE: 데이터 삽입 (INSERT)

sql
-- 단일 레코드 삽입
INSERT INTO users (name, age, email) VALUES ('홍길동', 25, 'hong@test.com');

-- 여러 레코드 한 번에 삽입
INSERT INTO users (name, age, email) VALUES
    ('김철수', 30, 'kim@test.com'),
    ('이영희', 28, 'lee@test.com'),
    ('박민수', 22, 'park@test.com');

id 필드는 AUTO_INCREMENT로 설정했으므로 직접 입력하지 않아도 자동으로 1, 2, 3, 4가 할당된다.

READ: 데이터 조회 (SELECT)

sql
-- 모든 레코드 조회
SELECT * FROM users;

실행 결과:

+----+--------+-----+----------------+
| id | name   | age | email          |
+----+--------+-----+----------------+
|  1 | 홍길동  |  25 | hong@test.com  |
|  2 | 김철수  |  30 | kim@test.com   |
|  3 | 이영희  |  28 | lee@test.com   |
|  4 | 박민수  |  22 | park@test.com  |
+----+--------+-----+----------------+
sql
-- 조건부 조회: 나이가 25 이상인 사용자
SELECT * FROM users WHERE age >= 25;

실행 결과:

+----+--------+-----+----------------+
| id | name   | age | email          |
+----+--------+-----+----------------+
|  1 | 홍길동  |  25 | hong@test.com  |
|  2 | 김철수  |  30 | kim@test.com   |
|  3 | 이영희  |  28 | lee@test.com   |
+----+--------+-----+----------------+
sql
-- 특정 필드만 조회
SELECT name, email FROM users WHERE age >= 25;

실행 결과:

+--------+----------------+
| name   | email          |
+--------+----------------+
| 홍길동  | hong@test.com  |
| 김철수  | kim@test.com   |
| 이영희  | lee@test.com   |
+--------+----------------+
sql
-- 정렬: 나이 내림차순
SELECT * FROM users ORDER BY age DESC;

-- 개수 제한: 상위 2개만 조회
SELECT * FROM users ORDER BY age DESC LIMIT 2;

UPDATE: 데이터 수정

sql
-- id가 1인 사용자의 나이를 26으로 변경
UPDATE users SET age = 26 WHERE id = 1;

중요: WHERE 절을 생략하면 테이블의 모든 레코드가 수정된다. 반드시 조건을 지정해야 한다.

sql
-- 여러 필드 동시 수정
UPDATE users SET age = 31, email = 'kim_new@test.com' WHERE id = 2;

DELETE: 데이터 삭제

sql
-- id가 4인 사용자 삭제
DELETE FROM users WHERE id = 4;

중요: UPDATE와 마찬가지로, WHERE 절을 생략하면 테이블의 모든 레코드가 삭제된다. 복구할 수 없으므로 반드시 조건을 확인해야 한다.

sql
-- 조건부 삭제: 나이가 30 이상인 사용자 삭제
DELETE FROM users WHERE age >= 30;

CRUD 명령어 요약

동작SQL 구문핵심 주의 사항
삽입INSERT INTO 테이블명 (필드1, 필드2) VALUES (값1, 값2);AUTO_INCREMENT 필드는 생략 가능
조회SELECT 필드 FROM 테이블명 WHERE 조건;*는 모든 필드, WHERE 생략 시 전체 조회
수정UPDATE 테이블명 SET 필드=값 WHERE 조건;WHERE 절 필수 (생략 시 전체 수정)
삭제DELETE FROM 테이블명 WHERE 조건;WHERE 절 필수 (생략 시 전체 삭제)

비용 주의 사항

AWS RDS는 실행 중인 시간에 따라 요금이 부과된다. 학습 후 반드시 리소스를 정리해야 예상치 못한 비용이 발생하지 않는다.

비용이 발생하는 항목

항목과금 기준비고
RDS 인스턴스실행 시간당db.t2.micro는 프리 티어에서 월 750시간 무료
스토리지할당된 용량(GB)당프리 티어에서 20GB까지 무료
스냅샷보관 중인 스냅샷 용량(GB)당자동 백업은 보관 기간 내 무료, 수동 스냅샷은 과금
데이터 전송아웃바운드 트래픽(GB)당인바운드는 무료, 아웃바운드는 일정량 초과 시 과금

비용 절감 팁

  1. 학습 후 RDS 인스턴스 삭제: 사용하지 않는 RDS는 즉시 삭제한다.
  2. 삭제 시 최종 스냅샷 활용: RDS 삭제 시 "최종 스냅샷 생성(Create final snapshot)" 옵션을 선택하면, 나중에 스냅샷에서 복원하여 다시 사용할 수 있다. 스냅샷 보관 비용은 인스턴스 실행 비용보다 훨씬 저렴하다.
  3. 불필요한 수동 스냅샷 삭제: 더 이상 필요 없는 스냅샷은 삭제하여 비용을 절감한다.
  4. 프리 티어 한도 모니터링: AWS Billing 대시보드에서 프리 티어 사용량을 주기적으로 확인한다.

RDS 인스턴스 삭제 방법

  1. RDS 대시보드에서 삭제할 인스턴스를 선택한다.
  2. 작업(Actions) > 삭제(Delete) 를 클릭한다.
  3. 최종 스냅샷 생성 여부를 선택한다 (나중에 복원할 계획이 있다면 "예").
  4. 삭제 방지(Deletion Protection) 가 활성화되어 있다면 먼저 비활성화한다.
  5. 확인 문구를 입력하고 삭제를 진행한다.

핵심 정리

주제핵심 내용
데이터베이스체계화하여 통합 관리하는 데이터의 집합. 데이터가 많아지면 구조화가 필수
RDB명확한 스키마 기반, 테이블 구조, ACID 트랜잭션. MySQL, PostgreSQL 등
NoSQL스키마 없는 유연한 구조, 수평 확장. MongoDB, Cassandra 등
AWS RDS관리형 RDB 서비스. 자동 백업, 패치, 시점 복구 지원
스냅샷특정 시점의 DB 상태를 백업. 복원 시 새 인스턴스가 생성됨
SQL CRUDINSERT(생성), SELECT(조회), UPDATE(수정), DELETE(삭제). WHERE 절이 핵심
비용인스턴스 실행 시간, 스냅샷 보관에 과금. 학습 후 반드시 리소스 정리