Go로 PostgreSQL 프록시 만들기 (33) - GitHub Actions CI/CD와 Docker 자동 배포
golangci-lint, 테스트, 벤치마크를 자동화하는 CI 파이프라인과 태그 push 시 multi-platform Docker 이미지를 GHCR에 자동 배포하는 Release 파이프라인을 구축한다.
이 페이지는 블로그의 전체 글을 학습, 트렌드, 프로젝트 관점으로 빠르게 훑기 위한 허브입니다. 글 수가 늘어나면 최신 글만 따라가서는 맥락이 끊기기 쉬워서, 어떤 독자가 어떤 순서로 읽으면 좋은지 한눈에 잡을 수 있게 구조를 정리해 두는 편이 더 낫다고 생각했습니다.
특히 이 블로그는 단순 뉴스 요약보다, 실무 의사결정에 바로 연결되는 기준을 남기는 데 초점을 두고 있습니다. 그래서 같은 주제라도 “개념 설명”, “운영 관점 해석”, “프로젝트 구현 경험”이 섞여 있습니다. 아카이브를 볼 때는 최신순보다도, 지금 내게 필요한 읽기 목적이 무엇인지 먼저 정하고 들어오는 편이 효율적입니다.
최근 개발 트렌드 글부터 2, 3편 읽는 방식이 가장 빠릅니다. 단순히 새 기술 이름을 외우기보다,
를 같이 보는 데 초점을 맞추면 좋습니다.
바로 들어가기 좋은 글:
학습용 글은 용어 설명에서 끝나지 않고, 실제 시스템 설계나 장애 대응에 연결되는 예시를 같이 넣는 편입니다. 그래서 익숙한 주제라도 “왜 이 개념이 운영에서 중요해지는지”를 다시 정리할 때 읽기 좋습니다.
추천 진입 순서:
이 순서로 보면 읽은 내용이 머릿속에 더 오래 남습니다.
프로젝트 글은 결과만 나열하기보다, 중간에 부딪힌 문제와 설계가 바뀐 이유를 같이 남겨 두는 쪽을 선호합니다. 그래서 완성된 정답보다는 생각이 바뀌는 과정을 보고 싶은 분에게 더 잘 맞습니다.
대표 시리즈:
이 흐름은 “AI가 코드를 더 빨리 쓴다”를 넘어서, 팀이 어떻게 안전하게 더 많이 처리할 것인가를 고민할 때 특히 유용합니다.
이렇게 보면 개념이 추상적으로만 남지 않고, 실제 설계 기준으로 연결됩니다.
프로젝트 글은 앞뒤 문맥이 이어지는 경우가 많아서, 검색으로 한 편만 읽기보다 관련 글을 연속해서 보는 편이 훨씬 낫습니다. 특히 PGMUX, Simple Queue Service 같은 시리즈는 문제 발견 → 설계 수정 → 운영 관점 재정리 순서로 보면 흐름이 잘 보입니다.
최근 AI 운영 글은 서로 따로 읽어도 되지만, 아래 순서로 보면 입력, 실행, 검증 통제가 한 흐름으로 이어집니다.
이 순서는 “에이전트를 어떻게 더 똑똑하게 만들까"보다, 팀이 어떻게 더 안전하게 운영 품질을 유지할까에 초점을 맞출 때 특히 유용합니다.
필요한 주제가 정해져 있다면 상단 검색과 태그 필터를 먼저 쓰는 게 가장 빠르고, 방향을 아직 못 정했다면 위의 추천 읽기 흐름 중 하나를 골라 따라가면 됩니다.
golangci-lint, 테스트, 벤치마크를 자동화하는 CI 파이프라인과 태그 push 시 multi-platform Docker 이미지를 GHCR에 자동 배포하는 Release 파이프라인을 구축한다.
단일 pgmux 인스턴스에서 여러 PostgreSQL 데이터베이스를 동시 프록시하는 Multi-Database Routing을 구현한다. DatabaseGroup 추상화, per-DB 풀/밸런서 격리, 캐시 키 혼합까지.
쿼리를 정규화하여 패턴별 실행 횟수, 평균/P50/P99 레이턴시를 집계하는 Query Digest 기능을 구현한다. pg_stat_statements의 프록시 버전.
pgmux의 17개 Prometheus 메트릭을 한눈에 볼 수 있는 Grafana 대시보드 템플릿을 만들고, Helm Chart로 자동 배포하는 방법을 다룬다.
pgbench로 Direct DB, pgmux, PgBouncer를 3자 비교하고, hot path 최적화로 SELECT-only 46%→83%로 개선한다.
pprof CPU/alloc 프로파일링으로 병목을 찾고, atomic.Pointer·ReadMessageReuse·wire buffer 재사용을 적용한다. 그리고 응답 batching이 왜 '투명한 프록시'의 원칙을 깨는지 분석한다.
세션 상태 추적으로 불필요한 DISCARD ALL을 건너뛰고, RouteWithTxState로 lock 횟수를 줄이고, 벤치마크 방법론을 개선한다.
코드 PR마다 앱+DB를 함께 검증하는 Preview Environment 운영이 왜 2026년 실무 표준으로 올라오는지, 도입 임계치와 운영 기준을 정리합니다.
Transaction Pooling 환경에서 Prepared Statement를 사용할 수 없는 PgBouncer의 한계를 극복하기 위해, Parse/Bind 메시지를 인터셉트하여 Simple Query로 합성하는 Multiplexing 기능을 구현한다.
pgmux에서 발견된 두 가지 CRITICAL 버그, COPY 프로토콜 교착과 Audit Logger의 무한 Map 메모리 누수를 분석하고 수정한다.