피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Serverless 환경의 DB Connection Failures 해결을 위한 Cloud Tasks 전환
From pg-boss to Cloud Tasks: Fixing Queue Bursts and DB Connection Failures on Serverless
AI 요약
Context
Neon Postgres 기반 Serverless 아키텍처에서 pg-boss의 Polling 방식이 DB Auto-suspend 기능과 충돌하여 잦은 연결 오류 및 불필요한 비용 발생. Pub/Sub 도입을 검토했으나 Retry Amplification 현상과 정밀한 Dispatch 제어 부족으로 인해 시스템 부하 관리의 한계 노출.
Technical Solution
- Push-based 구조의 Cloud Tasks 도입을 통한 Polling 제거 및 Neon DB의 정상적인 Suspend 상태 유지
- maxDispatchesPerSecond 및 maxConcurrentDispatches 설정을 통한 LLM 및 외부 API의 Burst Traffic 제어
- Deterministic Task Name(parse-{emailId}-{attachmentId}) 설정을 통한 Fan-out 상황의 중복 작업 생성 방지
- Transactional Enqueue 부재 해결을 위해 Business Row와 Outbox Row를 단일 트랜잭션으로 처리하는 Outbox Pattern 적용
- HTTP Response 손실에 따른 At-least-once 전달 특성을 고려한 Handler의 Idempotency 보장 설계
실천 포인트
1. Serverless DB 사용 시 Polling 기반 큐가 Auto-suspend 기능을 방해하는지 확인
2. Fan-out 구조의 작업 설계 시 Deterministic Key를 통해 중복 생성 방지
3. 외부 API 및 LLM 연동 시 Rate Limit 보호를 위해 Dispatch 제어가 가능한 큐 선택
4. DB 쓰기와 큐 등록의 원자성 보장이 필요할 경우 Outbox Pattern 도입 검토