Ch9. 관측 전략
Prisma/DB/API 레이어 지표, 로그, 트레이스, 알림 설계
관측은 세 레이어로 본다
- 애플리케이션: 요청 실패율, 응답 시간, 처리량
- Prisma: 쿼리 지연, 타임아웃, 에러 유형
- DB: 연결 수, 락 대기, 복제 지연, 디스크/CPU
필수 운영 지표
| 영역 | 지표 | 용도 |
|---|---|---|
| API | p95/p99 latency, error rate | 사용자 체감 영향 감지 |
| Prisma | 쿼리 지연 분포, Prisma 에러 코드 | ORM 계층 이상 탐지 |
| DB | active connections, lock wait, deadlock | 데이터 계층 병목 진단 |
| 복제 | replication lag | 읽기 일관성 위험 감지 |
| 배포 | migration duration, failed migration count | 변경 실패 조기 감지 |
Prisma Optimize 서비스 종료와 대체 경로
2026-03-23: Prisma Optimize 지원 중단
@prisma/extension-optimize 클라이언트 확장이 공식 지원 종료되었습니다.
기존에 withOptimize()를 사용하던 프로젝트는 아래 조치를 수행하세요.
필수 조치:
- PrismaClient 초기화에서
withOptimize()확장 호출을 제거 @prisma/extension-optimize패키지를devDependencies/dependencies에서 삭제- Prisma Postgres의 Query Insights(아래 참고)로 쿼리 성능 분석을 전환
// Before (제거 대상)
import { withOptimize } from '@prisma/extension-optimize'
const prisma = new PrismaClient().$extends(withOptimize())
// After
const prisma = new PrismaClient({
log: [{ emit: 'event', level: 'query' }, 'warn', 'error'],
})Prisma Postgres Query Insights
Prisma Postgres는 Query Insights 대시보드를 네이티브로 제공합니다. Prisma Optimize의 후속 대안으로, 콘솔에서 느린 쿼리, 빈번한 쿼리, 에러 패턴을 시각적으로 확인할 수 있으며, 별도 APM 연동 전에도 기본 수준의 쿼리 성능 모니터링이 가능합니다.
운영 권장:
- Query Insights로 상위 느린 쿼리 주간 리뷰
- v7.5.0 향상된 Prisma Studio에서 raw SQL 실행으로 즉석 진단 가능
- 상세 분석은 OTel 트레이싱과 병행
Prisma Studio v7.5.0 향상 기능
v7.5.0에서 Prisma Studio가 대폭 개선되어 운영 진단 도구로 활용도가 높아졌습니다.
- 다중 셀 선택: 여러 셀을 동시에 선택·복사하여 데이터 비교 작업 간소화
- SQL 필터: 테이블 뷰에서 SQL 조건식으로 직접 필터링 — 복잡한 조건 조회 가능
- Cmd+K 팔레트: 명령 팔레트로 테이블 탐색, 필터, 작업을 키보드만으로 빠르게 수행
Prisma 쿼리 로깅 예시
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient({
log: [{ emit: 'event', level: 'query' }, 'warn', 'error'],
})
prisma.$on('query', (e) => {
if (e.duration > 500) {
console.warn(
JSON.stringify({
event: 'slow_query',
duration_ms: e.duration,
query: e.query,
target: e.target,
})
)
}
})운영에서는 민감정보가 로그에 남지 않도록 SQL/파라미터 마스킹 정책을 함께 둡니다.
트레이싱(OTel) 권장 구조
- HTTP request span
- service/business span
- DB query span (Prisma/driver)
세 레이어를 같은 trace id로 연결하면 장애 시 원인 추적 시간이 크게 줄어듭니다.
알림 설계 원칙
- 페이지 알림(Pager): 사용자 영향 지표 위주
- 채널 알림(ChatOps): 경고/추세 이상
- 대시보드: 탐색용, 알림 대체 수단으로 사용하지 않음
배포 직후 강화 관측
배포 30~60분은 임시 룰을 적용합니다.
- error rate 임계치 하향
- slow query 임계치 하향
- migration 관련 로그 키워드 필터 활성화
SLO 기반 운영 예시
SLO: 결제 API 성공률 99.95% (30일)
Error Budget 소진율이 25%를 초과하면:
- 신규 스키마 변경 동결
- 성능/안정성 개선 작업 우선