1장에서 다루는 내용
- 코딩 능력만으로는 부족하며 시스템 동작 원리에 대한 기초 지식이 필요함을 강조
- DB 커넥션 관리를 통해 리소스 관리의 중요성을 설명
핵심 개념
DB 커넥션 누수 문제
-
DB 커넥션을 사용 후 반환하지 않으면 커넥션 풀이 고갈되어 서비스 장애 발생
1 2 3 4 5 6 7 8
// 잘못된 예 Connection conn = ds.getConnection(); try { // DB 작업 } catch(Exception e) { // 에러 처리 } // close() 누락!

커넥션 풀 동작 원리
- DB 커넥션을 미리 생성해 풀에 보관
- 필요할 때 꺼내 쓰고 반환하여 재사용

- 모든 커넥션이 사용 중이면 대기 또는 타임아웃


올바른 구현 방법
1
2
3
4
5
6
// try-with-resources 사용
try (Connection conn = ds.getConnection()) {
// DB 작업
} catch(Exception e) {
// 에러 처리
}
- Java 7 이상에서 지원하는 try-with-resources를 사용하면 자동으로 리소스 반환
배운 점
- 프레임워크 사용법만이 아닌 시스템 리소스 관리의 중요성을 깨달음
- 개발 환경에서는 문제없다가 운영 환경에서 발생하는 문제의 원인을 이해하게 됨
- 모니터링이 중요한 이유를 알게 됨
- 활성 커넥션 수
- 커넥션 풀 사용률
- 대기 시간