공유 규칙

Pod 수를 늘리면 DB 연결도 같은 비율로 복제됩니다

컨테이너에서는 각 Pod가 자기 커넥션 풀을 따로 가지므로, 애플리케이션 스케일링과 커넥션 총량 관리가 분리되지 않습니다.

먼저 계산할 값
총 DB 연결 수 = Pod 수 × Pod당 풀 크기

핵심은 풀 하나의 크기보다, 같은 풀이 Pod마다 반복되어 누적된다는 점입니다.

Pod Apool 10
Pod Bpool 10
Pod Npool 10
각 Pod의 풀이 합산되어 하나의 DB 한도를 함께 사용

공유 자원

DB max_connections = 100

애플리케이션 인스턴스는 늘어도 DB의 연결 예산은 그대로이므로, 운영 정책은 이 공용 한도에서 역산해야 합니다.

확장 시

오토스케일은 처리량뿐 아니라 DB 연결 수까지 같이 밀어 올립니다

CPU 기준으로 Pod를 늘려도, DB는 새 예산을 자동으로 주지 않습니다. 그래서 스케일 정책 전에 총 연결 수를 먼저 계산해야 합니다.

평상시 3 Pods × 10 = 30
30 / 100
오토스케일 후 10 Pods × 10 = 100
100 / 100
pool 축소Pod당 풀 크기를 보수적으로 잡기
프록시 사용pgBouncer 등으로 총량 제어
한도 역산DB 예산으로 Pod 수 계산
종료 시

Pod를 내릴 때는 풀을 정리한 뒤 연결을 반납해야 합니다

배포나 축소 과정에서 종료 순서가 어긋나면, 이전 Pod의 연결이 늦게 회수되어 다음 스케일 이벤트에서도 DB 한도를 잠식할 수 있습니다.

  1. 1. SIGTERM
    새 요청을 받지 않도록 종료 절차를 시작합니다.
  2. 2. drain
    진행 중인 작업만 마무리하고 pool을 비웁니다.
  3. 3. close()
    남은 연결을 DB에 반납해 공용 예산을 회복합니다.
@PreDestroy DataSource.close()