본문으로 건너뛰기

17.1 AWS RDS PostgreSQL

AWS RDS (Relational Database Service) for PostgreSQL은 AWS가 제공하는 매니지드 PostgreSQL. OS·PostgreSQL 설치·패치·백업·HA·복제를 AWS가 책임지고, 사용자는 스키마·쿼리·앱에 집중. 운영 부담을 크게 줄이지만 자체 운영의 자유도와 비교한 트레이드오프가 있습니다.

인스턴스 클래스

클래스사용처
db.t4g.* (Graviton)개발·소규모
db.m6i / m6id (intel)일반 OLTP
db.m6g / m7g (Graviton)cost-effective OLTP
db.r6i / r7i / r7g메모리 집약
db.x2i / x2gd매우 큰 메모리
db.z1d고주파 CPU

x86_64 대신 Graviton (ARM) 클래스가 가격 대비 성능이 좋아 표준 선택지.

스토리지

타입사용처
gp3일반 — IOPS·throughput 별도 provisioning
io1 / io2고성능 IOPS 보장
io2 Block Express최신, 매우 높은 IOPS
Aurora (다음 절)자체 스토리지

스토리지 자동 확장 설정 가능 — 디스크 풀 회피합니다.

기본 구성 요소

항목메모
Multi-AZ deployment동기 standby + 자동 failover (분 단위 RTO)
Read replica비동기 standby 최대 15개, 같은/다른 region
자동 백업daily snapshot + 5분 단위 PITR (최대 35일 보존)
수동 snapshot영구 보존
Parameter grouppostgresql.conf 일부 변경 가능
Option groupextension 활성

자동 백업

백업 기간 (Backup Window): 03:00~05:00 UTC
보존 기간: 7~35일

기본 동작:

  • 매일 한 번 snapshot (storage-level)
  • 5분 단위 WAL → S3 archive
  • PITR: 보존 기간 안 어디든 분 단위

수동 snapshot은 영구 — 삭제 안 하면 계속 비용입니다.

HA — Multi-AZ

    flowchart LR
  W["client (writer endpoint)"]
  AZ1["primary in AZ-1"]
  AZ2["standby in AZ-2<br/>(동기 복제)"]
  W --> AZ1
  AZ1 --> AZ2

  classDef pri fill:#ede9fe,stroke:#6d28d9,color:#3b0764
  classDef std fill:#d1fae5,stroke:#047857,color:#064e3b
  class AZ1 pri
  class AZ2 std
  
항목메모
동기 복제commit 응답 = standby 도달
자동 failoverprimary 사고 → 1~2분 안에 standby로 promote, DNS 자동 전환
read는 standby 사용Multi-AZ 단독 standby는 read 안 받음. 별도 read replica 필요
Multi-AZ DB ClusterPG 14+, 2개 standby(읽기 가능) — RTO ↓

Read Replica

client → primary (writes)
client → read replica (reads)

비동기 streaming 복제. 분석·read 부하 분리합니다. 같은 region·다른 region·다른 계정 모두 가능합니다.

Promote 가능 — disaster recovery 시 새 primary로.

IAM 인증

TOKEN=$(aws rds generate-db-auth-token \
  --hostname myrds.region.rds.amazonaws.com \
  --port 5432 \
  --region us-east-1 \
  --username dbuser)
psql "host=myrds.region.rds.amazonaws.com port=5432 user=dbuser password=$TOKEN sslmode=require"
  • 15분 유효 토큰
  • IAM 권한·역할 기반 — 비밀번호 회전 자동
  • 사용자가 RDS에 rds_iam role grant 필요
GRANT rds_iam TO dbuser;

확장 (extensions)

지원 확장 목록:

SHOW rds.allowed_extensions;
SELECT * FROM pg_available_extensions;

pgvector·pg_partman·postgis·pg_cron·pg_stat_statements·pgaudit 등 100+ 지원합니다. RDS-specific extension(aws_s3 등)도.

지원 안 되는 것:

  • pg_repack (디스크 영역 권한 필요)
  • 일부 신규 확장 — RDS 출시 지연

Parameter group

콘솔·CLI에서 파라미터 변경 — pg_settings 컨텍스트별:

  • dynamic — 즉시 적용
  • static — restart 필요 (RDS 콘솔에서 “pending-reboot”)

기본 DB instance parameter group은 변경 불가 — 자체 group 생성 후 attach.

모니터링

도구메모
CloudWatch metricsCPU·메모리·디스크·연결 등 OS 레벨
Enhanced Monitoring1초 단위 OS 메트릭
Performance Insights쿼리·wait event 분석 (pg_stat_statements 통합)
자체 모니터링postgres_exporter 설치 — outbound 정책 점검

Performance Insights가 RDS의 강력한 장점. wait event·세션·쿼리 추세를 한 화면에.

한계

한계메모
슈퍼유저 없음rds_superuser 권한으로 일부만
OS·shared_preload_libraries 직접 못 수정parameter group으로
pg_hba.conf 직접 못 수정security group + RDS DB security
로그 파일 직접 못 봄CloudWatch Logs export 또는 다운로드
일부 확장 미지원pg_repack 등
메이저 업그레이드RDS 콘솔로 + 점검 시간

비용 구성

항목비용
인스턴스시간 단위, Multi-AZ는 ~2배
스토리지GB·month, IOPS 별도
백업사용한 만큼 ≤ DB 크기 무료, 초과는 GB·month
데이터 전송다른 region·인터넷 비용
read replica별도 인스턴스
IAM 인증무료

Reserved Instance (13년 계약)로 3060% 절감합니다.

RDS vs 자체 운영

측면RDS자체
운영 부담낮음높음
자유도제한 (slug 일부 extension·OS 못 만짐)완전
비용같은 사양에서 1.5~2x낮음
HA·백업자동직접 구성
모니터링Performance Insights 강력직접 구축
지원AWS support내부·외부 컨설팅

대부분의 OLTP 운영에는 RDS가 합리적. 매우 큰 규모나 자유도 필요한 경우만 자체.

정리

  • AWS RDS = AWS 매니지드 PostgreSQL — 운영 부담 ↓, 자유도 ↓
  • Multi-AZ로 HA, read replica로 read 분리
  • IAM 인증·Performance Insights·자동 백업이 표준 셋
  • 슈퍼유저 없음, pg_hba.conf 직접 못 만짐
  • 메이저 업그레이드는 콘솔로
  • 비용은 자체 운영보다 1.5~2배 — 운영 부담 절감과 트레이드오프

다음 절(17.2)에서는 RDS의 분산 스토리지 버전 — AWS Aurora PostgreSQL을 봅니다.