왜 매번 새 연결을 맺으면 안 될까
DB 연결을 새로 맺는 과정은 TCP 핸드셰이크, 인증 등 적지 않은 CPU·메모리 오버헤드가 듭니다. 트래픽이 몰릴 때 요청마다 새 연결을 만들면 이 오버헤드가 누적되어 DB 자체가 과부하에 빠질 수 있습니다.
커넥션 풀링의 개념
커넥션 풀링은 미리 일정 개수의 DB 연결을 만들어두고, 애플리케이션이 필요할 때마다 이 풀에서 연결을 "빌려" 쓰고 반납하는 방식입니다. 매번 새로 연결을 맺지 않으니 오버헤드가 크게 줄어듭니다.
AWS RDS Proxy 예시로 보는 동작 방식
- 애플리케이션은 실제 DB가 아니라 프록시에 연결
- 프록시가 내부적으로 연결 풀을 관리하며 DB와의 실제 연결을 재사용
- 트래픽이 급증해도 DB에 밀어닥치는 신규 연결 수를 프록시가 조절(큐잉·스로틀링)
- DB 장애조치(failover) 시에도 애플리케이션 연결은 유지한 채 프록시가 내부적으로 전환
커넥션 풀링이 특히 중요한 상황
서버리스 환경처럼 인스턴스가 순간적으로 늘었다 줄었다 하는 구조에서는, 각 인스턴스가 개별적으로 DB 연결을 맺으면 순식간에 DB의 최대 연결 수 한도를 넘길 수 있어 커넥션 풀링이 특히 중요합니다.