Ch3. Prisma Postgres 활용
Prisma Postgres를 프로덕션에서 안정적으로 활용하기 위한 연결/캐시/백업/브랜치 운영 가이드
왜 별도 챕터가 필요한가
Prisma ORM을 운영하는 팀이라도, Prisma Postgres의 매니지드 기능(연결 풀링, 캐싱, 백업, 직접 연결)을 어떻게 표준 운영 절차에 넣을지 명확하지 않으면 장애 대응과 비용 관리가 흔들립니다.
기준일
이 장의 제품 기능 설명은 2026년 3월 26일 기준 Prisma 공식 문서를 바탕으로 작성했습니다.
핵심 기능 요약
| 기능 | 운영 관점 핵심 포인트 |
|---|---|
| 연결 풀링 | Prisma Postgres에서 기본 제공(Prisma Accelerate 기반) |
| 쿼리 캐싱 | 읽기 쿼리에 cacheStrategy(TTL/SWR) 명시 적용 |
| 직접 TCP 연결 | pg_dump, 외부 DB 툴, 일부 운영 작업에 필요 |
| 백업 | 자동 백업 + 필요 시 pg_dump 논리 백업 병행 |
| PR/브랜치 DB | 기능 검증용 격리 DB 워크플로 설계 가능 |
| Query Insights | 쿼리 성능 분석 대시보드 — 느린 쿼리/빈번 쿼리 식별 |
| IaC 지원 | Terraform, Pulumi, Alchemy를 통한 인프라 코드 관리 |
운영 한도와 플랜 의존 항목 (기준일: 2026-03-26)
아래 수치는 Prisma 공식 문서 기준이며, 변경될 수 있으므로 배포 전 재확인이 필요합니다.
플랜별 주요 한도
| 항목 | Free | Starter ($10/mo) | Pro ($49/mo) | Business ($129/mo) |
|---|---|---|---|---|
| 월간 작업 수 | 100K | 1M | 10M | 50M |
| 스토리지 | 500 MB | 10 GB | 50 GB | 100 GB |
| 데이터베이스 수 | 5 | 10 | 100 | 1,000 |
| Pooled 연결 | 10 | 100 | 500 | 1,000 |
| Direct 연결 | 10 | 10 | 10 | 50 |
| 자동 백업 | 없음 | 일간, 7일 보존 | 일간, 7일 보존 | 일간, 30일 보존 |
운영 관점 핵심 한도
| 항목 | 기준값/정책 | 운영 의미 |
|---|---|---|
| Pooled 연결 수 | 플랜별 10~1,000 (위 표 참고) | 앱 인스턴스 수와 쿼리 동시성을 연결 한도에 맞춰 설계 |
| Direct 연결 수 | 대부분 플랜 10, Business만 50 | 마이그레이션/백업 경로 동시 사용에 주의 |
pool_timeout | 기본 10초 | 대기 급증 시 타임아웃/재시도 정책을 함께 조정 |
| 쿼리 타임아웃 | 기본 10초, 플랜별 상한(예: 10/10/20/60초) | 긴 쿼리는 쿼리 최적화 또는 비동기 배치로 분리 |
| 응답 크기 제한 | 기본 5MB, 플랜별 상한(예: 5/5/10/20MB) | 대용량 조회는 페이지네이션/파일 내보내기로 전환 |
| 자동 백업 | 활동이 있는 날 일 단위 스냅샷 생성 | Free 플랜은 백업 없음 — 수동 pg_dump 필수 |
| 백업 보존 기간 | Starter/Pro 7일, Business 30일 | 서비스 RPO 요구사항과 보존기간 갭 점검 필요 |
운영 주의
한도 수치와 플랜 정책은 변경될 수 있습니다. 운영 정책 문서에는 항상 기준일과 공식 링크를 함께
기록하세요.
연결 전략: 앱 트래픽 vs 운영 작업 분리
Prisma Postgres를 사용할 때도 기존 원칙은 동일합니다.
- 앱 런타임 트래픽 경로
- 마이그레이션/백업/운영 점검 경로
두 경로를 분리하면 장애 시 영향 반경을 줄일 수 있습니다.
예시: datasource 설정
// prisma/schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DIRECT_DATABASE_URL")
}DATABASE_URL: 애플리케이션 런타임 경로DIRECT_DATABASE_URL: 마이그레이션/백업/직접 점검 경로
Prisma Postgres에서 확인할 운영 체크포인트
1) 연결 풀링
- Prisma Postgres는 연결 풀링을 기본 제공합니다.
- 공식 문서 기준, 스키마당 동시 연결 한도가 고정 정책으로 안내되므로 애플리케이션 동시성/쿼리 패턴을 함께 최적화해야 합니다.
- 대기/타임아웃이 증가하면 풀 설정만 올리기보다, 느린 쿼리/트랜잭션 길이를 먼저 점검합니다.
2) 캐싱
읽기 성능이 중요한 API에만 명시적으로 적용합니다.
await prisma.user.findMany({
cacheStrategy: {
ttl: 30,
swr: 60,
},
})운영 규칙:
- 기본값은 no-cache로 유지
- 캐시는 조회 일관성 허용 범위를 문서화한 엔드포인트에만 적용
- 캐시 정책 변경은 성능 실험 결과와 함께 리뷰
3) 직접 연결(TCP)과 도구 연동
pg_dump/pg_restore같은 백업 도구를 쓸 때는 direct TCP 연결을 사용- DB IDE(DataGrip, TablePlus 등) 접근은 감사 가능한 계정과 제한된 경로로 운영
- SSL 요구 사항과 인증 방식(API Key 기반)을 팀 표준 문서에 고정
4) 백업/복구
- 자동 백업만 신뢰하지 말고, 분기별
pg_dump복원 리허설 수행 _prisma_migrations포함 정합성 검증을 표준 체크리스트에 포함- 복구 성공률과 복구 시간을 함께 기록
5) PR 단위 격리 DB 활용
Prisma Postgres 페이지에서 제시하는 방식처럼 PR 단위 DB를 운영하면, 스키마 변경 검증을 격리된 환경에서 반복 가능하게 만들 수 있습니다.
권장 패턴:
- PR 생성 시: 임시 DB 프로비저닝 + 마이그레이션 적용
- PR 검증 중: 통합 테스트/백필 드라이런
- PR 종료 시: 임시 DB 정리
운영 정책에 반영할 항목
- Prisma Postgres 기능 사용 범위를 서비스별로 정의(풀링/캐싱/직접 연결)
-
cacheStrategy적용 API 목록과 SLA 문서화 - 직접 연결 계정 발급/만료/감사 로그 정책 수립
- PR 임시 DB 생성·삭제 자동화 파이프라인 확정
- 백업 복구 리허설을 월간/분기 운영 캘린더에 포함
참고 링크
- Prisma Postgres 제품 페이지: https://www.prisma.io/postgres
- Prisma Postgres DB 기능 개요: https://www.prisma.io/docs/postgres/database
- 연결 풀링: https://www.prisma.io/docs/postgres/database/connection-pooling
- 캐싱: https://www.prisma.io/docs/postgres/database/caching
- 백업: https://www.prisma.io/docs/postgres/database/backups
- 시작 가이드: https://www.prisma.io/docs/postgres/introduction/getting-started