장애 이후

죽은 커넥션은 풀 안에서 먼저 걸러야 첫 쿼리 실패가 줄어듭니다

네트워크 단절이나 DB 재시작 뒤에는 풀 안에 끊어진 연결이 섞여 남을 수 있습니다. 그래서 커넥션을 빌려주기 전에 한 번 확인해, 실패가 애플리케이션 로직까지 번지지 않게 막습니다.

장애 직후 풀 내부에는 정상 연결과 끊어진 연결이 함께 남아 있을 수 있습니다 이 상태를 모르면 첫 요청이 바로 실패합니다
Conn A 정상 응답
Conn B 정상 응답
Conn C 끊긴 상태
Conn D 정상 응답
비교 축
검사 없이 대여
유효성 검사 후 대여
대여 순간
풀은 저장된 순서대로 커넥션을 내보냅니다

겉으로는 빈 슬롯이 있어 보여도, 실제로는 이미 끊어진 연결이 섞여 있을 수 있습니다.

빌려주기 전에 먼저 살아 있는지 확인합니다

isValid() 같은 검사로 응답 가능한 연결만 통과시킵니다.

죽은 연결은 여기서 걸러짐
죽은 연결 발견
앱이 직접 실패를 맞습니다

첫 SQL 실행 시점에야 문제가 드러나고, 요청 하나가 예외나 재시도로 번집니다.

풀 안에서 폐기하고 다음 연결로 넘어갑니다

끊어진 커넥션은 제거하고, 정상 연결이나 새 연결을 준비해 반환합니다.

서비스 체감
장애가 요청 단위 오류로 노출됩니다

사용자는 느린 응답, 첫 쿼리 실패, 불필요한 예외 로그를 보게 됩니다.

장애의 충격을 풀 경계에서 줄입니다

애플리케이션 로직은 이미 검증된 연결만 받으므로, 복구가 더 예측 가능해집니다.

운영 의미
문제가 늦게 드러납니다

죽은 커넥션이 풀 안에 숨어 있다가 실제 트래픽에서 터집니다.

죽은 커넥션을 미리 제거합니다

유효성 검사는 장애 이후의 잔여 상태를 정리해, 풀의 일관성을 다시 맞추는 역할을 합니다.

핵심: 커넥션 유효성 검사는 “DB가 살아 있는가”를 매번 증명하려는 기능이 아니라, 풀 안의 오래되거나 끊어진 연결이 서비스 코드로 전달되는 순간을 차단하는 안전장치입니다.