17.3 Azure Database for PostgreSQL — Flexible Server
Azure Database for PostgreSQL — Flexible Server는 Microsoft Azure의 매니지드 PostgreSQL. 옛 Single Server(legacy)의 후속이며 현재 권장합니다. 자유도 RDS와 유사하면서 VNet 통합과 Entra ID 인증이 강점.
인스턴스 tier
| Tier | 사용처 |
|---|---|
| Burstable (B series) | 개발·소규모 |
| General Purpose (D series) | 일반 OLTP |
| Memory Optimized (E series) | 메모리 집약 |
vCPU 196, 메모리 2672GB까지.
스토리지
| 옵션 | 메모 |
|---|---|
| Premium SSD | 표준 |
| Premium SSD v2 | provisioned IOPS·throughput 별도 — 최근 권장 |
Storage Auto-grow 활성화로 디스크 풀 자동 회피합니다.
핵심 기능
| 기능 | 메모 |
|---|---|
| HA | zone-redundant high availability — 동기 standby |
| Read replica | 비동기, 같은/다른 region |
| 자동 백업 | 7~35일 PITR, 외부 region 백업 옵션 |
| VNet integration | Private 네트워크 — public endpoint 비활성 가능 |
| Entra ID (AD) 인증 | 비밀번호 없는 인증 |
| Customer-managed keys | 자체 키로 encryption at rest |
| Maintenance window | 명시 가능 |
HA 옵션
flowchart LR
W["client (writer)"]
AZ1["primary in zone 1"]
AZ2["standby in zone 2<br/>(동기)"]
W --> AZ1
AZ1 -- "동기 streaming" --> AZ2
classDef pri fill:#ede9fe,stroke:#6d28d9,color:#3b0764
classDef std fill:#d1fae5,stroke:#047857,color:#064e3b
class AZ1 pri
class AZ2 std
HA 활성 시 2개 zone에 instance — 자동 failover. RDS Multi-AZ와 유사.
Same-zone HA도 있음 (single AZ region에서) — 비용 ↓.
VNet 통합
Public access enabled = false
VNet = your-vnet
Subnet = pg-subnetprivate endpoint 또는 VNet-injected — 인터넷 노출 없이 운영. 보안 강화의 표준입니다.
Entra ID 인증
# Microsoft Entra ID(AD)로 토큰 얻음
TOKEN=$(az account get-access-token --resource https://ossrdbms-aad.database.windows.net --query accessToken -o tsv)
psql "host=myserver.postgres.database.azure.com user=user@example.com password=$TOKEN sslmode=require"-- Entra ID 사용자 추가
SELECT * FROM pgaadauth_create_principal('alice@example.com', false, false);비밀번호 회전 자동, 통합 ID — 엔터프라이즈 친화.
확장
100+ 확장 지원합니다. 콘솔 또는 parameter로 enable:
azure.extensions = 'pg_partman,pg_stat_statements,pgvector,postgis'지원 목록:
SELECT * FROM pg_available_extensions ORDER BY name;백업·복구
Backup retention: 7~35일
백업 위치: locally redundant / zone redundant / geo redundantgeo redundant는 다른 region에 복사 — DR.
PITR:
Azure Portal → Server → "Restore"
→ point in time selection
→ 새 서버 생성운영과 같은 패턴 — 새 서버로 복원해 데이터 가져옴.
모니터링
| 도구 | 메모 |
|---|---|
| Azure Monitor | CPU·메모리·디스크·연결 등 |
| Query Performance Insight | RDS Performance Insights와 유사 |
| Log Analytics | 로그 통합 분석 |
| 자체 postgres_exporter | VNet 안에서 가능 |
pg_stat_statements·auto_explain·pgaudit 모두 지원합니다.
한계
| 한계 | 메모 |
|---|---|
| 슈퍼유저 권한 없음 | azure_pg_admin 권한 |
| OS 직접 접근 못 함 | 로그는 콘솔 |
| 일부 확장 미지원 | pg_repack 등 (자체 storage 권한 필요) |
| 메이저 업그레이드 | 콘솔 — in-place 가능 (PG 14→15→16 등) |
비용 모델
| 항목 | 비용 |
|---|---|
| Compute | tier·vCore·시간 |
| Storage | GB·month |
| IOPS·throughput | Premium SSD v2 별도 |
| 백업 | DB 크기 무료, 초과 + geo redundant 별도 |
| HA | 약 2배 |
| Reserved Capacity (1·3년) | 30~50% 절감 |
작은 시작 — pgcli·psql
az postgres flexible-server connect \
--name myserver \
--admin-user pgadmin \
--query "SELECT version();"az CLI로 직접 쿼리·관리합니다.
자주 쓰는 운영 명령
# server 시작·정지 (비용 절감)
az postgres flexible-server stop --resource-group rg --name myserver
az postgres flexible-server start --resource-group rg --name myserver
# parameter 변경
az postgres flexible-server parameter set \
--resource-group rg --server-name myserver \
--name shared_buffers --value 4GB
# read replica
az postgres flexible-server replica create \
--resource-group rg --replica-name myserver-rep1 \
--source-server myserverRDS vs Flexible Server
| 측면 | RDS | Flexible Server |
|---|---|---|
| 운영 부담 | 낮음 | 낮음 |
| HA | Multi-AZ | Zone-redundant HA |
| 확장 | 100+ | 100+ |
| 인증 | IAM | Entra ID |
| 모니터링 | Performance Insights | Query Performance Insight |
| 비용 (대략 같은 사양) | 비슷 | |
| 자유도 | 비슷 | VNet 통합 + 시작·정지 가능 (RDS는 hibernate) |
대부분 Azure 인프라가 있으면 자연스러운 선택.
정리
- Azure Database for PostgreSQL Flexible Server = Azure 매니지드 PG
- HA·read replica·자동 백업·VNet·Entra ID 인증
- 100+ extension 지원, pg_repack 등 일부 미지원
- 서버 stop·start 가능 — 개발 환경 비용 절감
- in-place 메이저 업그레이드 지원
- VNet integration·Entra ID가 엔터프라이즈 친화
다음 절(17.4)에서는 Google Cloud의 옵션 — Cloud SQL과 AlloyDB를 봅니다.