요청마다 Connection Pool과 SessionFactory를 만들면 생기는 문제
DB 연결 232개가 유지된 원인을 추적해 요청마다 커넥션 풀이 생성되는 문제를 찾았습니다. DataSource와 SessionFactory는 애플리케이션이 한 번 만들고 재사용하도록 바꿨습니다.
TECHNICAL SERIES
DB 연결 생명주기부터 기존 요청 형식, 다국어 처리, 입력 검증과 런타임 충돌까지 이어지는 현대화 기록입니다.
READ IN ORDER
문제의 발견부터 설계와 운영 안정화까지 실제 판단 순서로 정리했습니다.
DB 연결 232개가 유지된 원인을 추적해 요청마다 커넥션 풀이 생성되는 문제를 찾았습니다. DataSource와 SessionFactory는 애플리케이션이 한 번 만들고 재사용하도록 바꿨습니다.
DB Link 대신 각 DB에 직접 연결하고 매퍼를 분리한 뒤, 조건에 따라 참여하는 데이터소스를 하나의 Spring 트랜잭션 선언으로 관리하도록 Atomikos 기반 JTA를 구성했습니다.
브라우저 설정이 아니라 URL과 법인 환경으로 언어를 정하던 시스템에서, 기존 호출 규칙을 유지하면서 요청 처리 전에 로케일을 결정했습니다.
기존 URL과 연계 시스템이 보내는 축약 파라미터는 유지하면서, Spring MVC 확장으로 내부 DTO에는 의미가 드러나는 필드명을 사용했습니다.
다운로드 DTO 하나를 여러 API에서 재사용하면서, 각 API에 필요한 필드만 검사하도록 Bean Validation 그룹과 AOP를 조합했습니다.
JVM 클래스 로딩 로그에서 서버 공용 구형 드라이버가 애플리케이션 드라이버보다 먼저 선택된 사실을 확인했습니다. 다른 애플리케이션의 자체 패키징을 보완한 뒤 공용 의존성을 정리했습니다.