Go로 PostgreSQL 프록시 만들기 (33) - GitHub Actions CI/CD와 Docker 자동 배포
golangci-lint, 테스트, 벤치마크를 자동화하는 CI 파이프라인과 태그 push 시 multi-platform Docker 이미지를 GHCR에 자동 배포하는 Release 파이프라인을 구축한다.
golangci-lint, 테스트, 벤치마크를 자동화하는 CI 파이프라인과 태그 push 시 multi-platform Docker 이미지를 GHCR에 자동 배포하는 Release 파이프라인을 구축한다.
단일 pgmux 인스턴스에서 여러 PostgreSQL 데이터베이스를 동시 프록시하는 Multi-Database Routing을 구현한다. DatabaseGroup 추상화, per-DB 풀/밸런서 격리, 캐시 키 혼합까지.
코드 PR마다 앱+DB를 함께 검증하는 Preview Environment 운영이 왜 2026년 실무 표준으로 올라오는지, 도입 임계치와 운영 기준을 정리합니다.
Transaction Pooling 환경에서 Prepared Statement를 사용할 수 없는 PgBouncer의 한계를 극복하기 위해, Parse/Bind 메시지를 인터셉트하여 Simple Query로 합성하는 Multiplexing 기능을 구현한다.
pgmux에서 발견된 두 가지 CRITICAL 버그 — COPY 프로토콜 교착(Deadlock)과 Audit Logger의 무한 Map 메모리 누수 — 를 분석하고 수정한다.
pgmux에서 발견된 두 가지 CRITICAL 버그 — 에러 시 오염된 커넥션이 풀에 반납되는 Protocol Desync와, 단일 panic이 전체 서버를 크래시시키는 Global Panic Vulnerability — 를 분석하고 수정한다.
pgmux에서 발견된 두 가지 CRITICAL 버그 — HTTP 클라이언트 끊김을 무시해 고루틴과 DB 커넥션이 영원히 블로킹되는 좀비 누수와, 핫-리로드 후 Admin/Data API가 닫힌 풀을 바라보는 Dangling Pointer — 를 분석하고 수정한다.
2,259줄짜리 server.go를 역할별 9개 파일로 분리한 리팩토링 과정 — 왜 쪼개야 했는지, 어떤 기준으로 경계를 나눴는지, Go 패키지 내 파일 분리 전략을 정리한다.
QA에서 발견된 3가지 버그 — CancelRequest 무시, Graceful Shutdown 무한 대기, Balancer 데이터 레이스 — 의 원인 분석과 수정 과정을 정리한다.
QA에서 발견된 5가지 버그 — Data API 인증 stale, 캐시 전파 누락, ConfigMap symlink 미감지, Reload 주석 불일치, 테스트 race — 의 원인 분석과 수정 과정을 정리한다.