본문으로 건너뛰기
azure검색
데이터베이스와 분석

Azure Database for PostgreSQL flexible server (설계와 운영)

PostgreSQL flexible server 의 컴퓨트 계층(Burstable, General Purpose, Memory Optimized), 지원 버전(2026-10 기준 PostgreSQL 14~18, 11~13 은 확장 지원), 영역 중복 고가용성, 네트워크 두 방식, Entra 인증, 서버 매개 변수와 연결 풀링, 확장 기능, 2026-06 Public preview 가 된 Azure HorizonDB 를 정리합니다.

PostgreSQLflexible server고가용성PgBouncerpgvectorHorizonDB2026-10 기준, 약 7분상태 표시 설명

서비스 정리

Azure 의 관리형 PostgreSQL 은 이제 flexible server 하나입니다. 예전 Single Server 는 2025-03 에 퇴역했고, 같은 시기 MariaDB 용 서비스도 2025-09-19 에 퇴역했습니다. 오래된 문서나 Terraform 코드에서 azurerm_postgresql_server(Single Server)를 보면 azurerm_postgresql_flexible_server 로 바꿔야 합니다.

컴퓨트 계층과 저장소

계층성격용도
Burstable (B 시리즈)CPU 크레딧 기반개발, 작은 앱. 고가용성 불가
General Purpose (D 시리즈)균형대부분의 운영
Memory Optimized (E 시리즈)메모리 많음큰 작업 세트, 분석 쿼리

저장소는 Premium SSD(크기에 따라 IOPS 가 정해짐)와 Premium SSD v2(IOPS, 처리량을 따로 정함) 중에서 고르고, 저장소 자동 증가를 켜 두면 디스크가 꽉 차서 읽기 전용이 되는 사고를 막습니다. 저장소는 늘릴 수만 있고 줄일 수 없습니다.

지원 버전

2026-10 기준 Microsoft Learn 의 지원 버전 표에는 PostgreSQL 18, 17, 16, 15, 14 가 있고, 13, 12, 11 은 확장 지원(Extended Support) 으로 표시되어 있습니다. 확장 지원은 커뮤니티 수명이 끝난 버전을 유료로 더 쓰게 해 주는 단계이므로, 이 버전들은 업그레이드 계획을 세워야 합니다. PostgreSQL 18 은 일부 확장이 아직 지원되지 않고 io_method = io_uring 설정을 쓸 수 없다는 제약이 문서에 있습니다.

  • 마이너 버전은 월간 유지 관리 때 자동으로 올라갑니다. 유지 관리 창을 사용자 지정해 업무 시간을 피합니다.
  • 메이저 버전은 제자리 업그레이드로 올릴 수 있습니다. 업그레이드 전에 사용 중인 확장이 대상 버전에서 지원되는지 확인하고, 복원한 사본에서 먼저 시험합니다.

고가용성

모드대기 서버 위치효과
영역 중복 HA다른 가용성 영역영역 장애 대비. Korea Central 운영 기본
같은 영역 HA같은 영역서버 장애 대비, 지연 최소

대기 서버로 동기 복제하므로 장애 조치 때 데이터 손실이 없고, 보통 수십 초~2분 안에 넘어갑니다. 대기 서버는 읽기에 쓸 수 없으므로 읽기 분산은 읽기 복제본(비동기)을 따로 만듭니다. 다른 리전 읽기 복제본을 승격하는 방식으로 리전 재해 복구도 구성합니다. 고가용성을 켜면 컴퓨트와 저장소 요금이 대략 두 배가 됩니다.

네트워크: 만들 때 정함

방식설명주의
공용 액세스 + 방화벽 규칙공용 엔드포인트, 허용 IP 만Private Endpoint 를 같이 붙일 수 있음
VNet 통합 (사설 액세스)위임된 서브넷 안에 서버를 둠만든 뒤 공용 방식으로 못 바꿈. Private DNS 영역 필요

새 설계는 공용 액세스 방식으로 만들고 공용 접근을 끈 뒤 Private Endpoint 를 붙이는 쪽이 허브 스포크와 다른 PaaS 와 일관된 패턴이라 많이 쓰입니다. DNS 영역은 privatelink.postgres.database.azure.com 입니다 (Private Endpoint 와 DNS).

인증

Microsoft Entra 인증을 켜고 앱은 관리 ID 로 접속합니다. 비밀번호 대신 Entra 토큰을 비밀번호 자리에 넣는 방식입니다.

# 개발자 로그인 토큰으로 psql 접속 (토큰 수명은 짧음)
export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query accessToken -o tsv)
psql "host=pg-shop-prod.postgres.database.azure.com port=5432 dbname=shop user=dba-group@contoso.com sslmode=require"
-- Entra 관리자로 접속해 앱의 관리 ID 를 역할로 등록
SELECT * FROM pgaadauth_create_principal('app-shop-prod', false, false);
GRANT CONNECT ON DATABASE shop TO "app-shop-prod";
GRANT USAGE ON SCHEMA public TO "app-shop-prod";
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO "app-shop-prod";

매개 변수와 연결

  • max_connections 의 기본값은 컴퓨트 크기에 따라 정해집니다. 연결 하나가 메모리를 쓰므로 앱 인스턴스가 늘면 금방 모자랍니다.
  • 내장 PgBouncer 를 켜면 6432 포트로 연결 풀링을 쓸 수 있습니다. 서버리스 앱(Functions, Container Apps)처럼 연결이 많고 짧은 경우에 특히 필요합니다.
  • shared_preload_libraries 에 넣어야 하는 확장(pg_stat_statements, pg_cron 등)과 azure.extensions 허용 목록에 넣어야 하는 확장이 있습니다. 허용 목록에 없으면 CREATE EXTENSION 이 거부됩니다.
az postgres flexible-server parameter set -g rg-data-prod -s pg-shop-prod \
  --name azure.extensions --value "VECTOR,PG_STAT_STATEMENTS,PG_TRGM"
az postgres flexible-server parameter set -g rg-data-prod -s pg-shop-prod \
  --name pgbouncer.enabled --value true

성능 확인

  1. Query Store(pg_qs)와 쿼리 성능 인사이트에서 오래 걸리고 자주 도는 쿼리를 찾습니다.
  2. 인덱스 튜닝(Intelligent tuning)의 권고를 검토합니다.
  3. 저장소 IOPS 한도에 붙어 있으면 디스크를 키우거나(Premium SSD) IOPS 를 올립니다(Premium SSD v2).
  4. 오래 열린 트랜잭션은 vacuum 을 막아 테이블이 부풀게 합니다. pg_stat_activity 에서 idle in transaction 을 찾습니다.

AI 와 벡터

vector 확장(pgvector)으로 임베딩을 저장하고 근사 최근접 검색을 할 수 있고, Azure 전용 확장으로 DiskANN 인덱스도 제공합니다. 데이터가 이미 PostgreSQL 에 있고 검색 규모가 크지 않다면 별도 검색 서비스 없이 RAG 를 만들 수 있습니다.

Azure HorizonDB

Azure HorizonDB 는 Ignite 2025 에 PrPr 로 발표되고, 2026-06-02 에 Preview 가 된 PostgreSQL 호환 신규 서비스입니다. 저장소 자동 확장 최대 128 TB, 컴퓨트 최대 3,072 vCore, DiskANN 벡터 인덱싱 같은 특징을 내세웁니다. 2026-10 기준 GA 일정은 공개되지 않았고 Preview 는 SLA 가 없으므로, 운영 워크로드는 flexible server 를 기본으로 하고 HorizonDB 는 검증용으로 봅니다.

공식 문서

이 문서에서