Spring Boot에서 자동으로 설정되는 커넥션 풀로 API 요청 속도 향상

들어가며Permalink

특별히 무엇인가를 해결한 내용은 아니고, 개발 도중에 궁금해서 찾아본 내용을 정리해놓은 글이다.

카풀 프로젝트인 MIO 에서 Fetch.LAZY 와 EAGER 로 인한 성능을 AOP를 이용하여 메서드 실행시간을 측정하다 보니, 중복 API 요청에 대한 속도 차이가 굉장히 크게 나는 것을 확인했다.

1

위 사진은 중복 API 요청에 대한 속도 차이를 확인한 사진이다.

왜 이런 결과가 나오는 지 궁금해져서 검색을 하던 도중 커넥션 풀에 대해 알게되었다.

커넥션 풀Permalink

커넥션 풀이란 추가 요청이 필요할 때 연결을 재사용할 수 있도록 관리되는 데이터베이스 연결의 캐시라고 한다.

Spring 2.0 부터는 Default 커넥션 풀로 hikariCP를 자동으로 제공해준다고 한다.

커넥션 풀Permalink

  1. 애플리케이션을 시작하는 시점에 커넥션 풀은 필요한 만큼의 커넥션을 미리 확보해서 커넥션 풀에 보관한다.

  2. 보통 커넥션의 개수는 Default로 10개다.

  3. 커넥션 풀에 들어있는 커넥션은 TCP/IP로 DB와 커넥션이 연결되어 있는 상태이기 때문에 언제든지 즉시 SQL을 DB에 전달할 수 있다.

커넥션 풀 사용 과정Permalink

2

  1. 애플리케이션에서 DB 커넥션을 요청한다.

  2. 커넥션 풀에서 사용 가능한 커넥션을 찾는다.

  3. 애플리케이션 로직은 커넥션 풀에서 받은 커넥션을 사용해서 SQL을 DB에 전달하고, 그 결과를 받아서 처리한다.

  4. 애플리케이션 로직이 SQL 처리를 마치면 커넥션을 커넥션 풀에 반환한다.

결과Permalink

결과적으로 커넥션 풀은 사용 중인 연결을 재사용한다는 것이다.

클아이언트가 연결을 반환하면 이 연결을 다시 사용 가능한 상태로 설정하고 다음 요청에 재사용한다.

이 과정에서 중복 연결 생성 및 해제로 인한 오버헤드를 방지하고 애플리케이션의 응답속도를 빠르게 유지하는 데 도움이 된다.

Leave a comment