Spring Web Flux : Reactive
스프링캠프 2017 에서 Toby 님이 발표한 Spring Web Flux 의 다음 내용을 정리한다.
- WebFlux 를 사용하며 개선할 포인트
- Data Access Repository
- Non Blocking API call
Blocking IO
WebFlux 를 사용하는데, 서비스 로직에서 Blocking IO 가 사용되는 코드가 많으면 성능이 오히려 나빠질 수 있다.
개선할 blocking IO 는 다음과 같은 것들이 있다.
- data access repository 를 호출
- HTTP API 호출
- 기타 네트워크를 이용하는 서비스
JDBC 기반 RDB 연결
JDBC API 는 아쉽게도, Blocking 메서드로 점철되었다.
이 부분을 다음과 같이 개선해서, 서블릿 스레드를 점유하지 않도록 만들 수 있다.
- @Async 비동기를 적용해서,
- CompletableFuture 리턴하게 하여
- 서블릿 스레드만 빨리 스레드풀에 리턴하게 함으로써 가용한 자원으로 만들 수 있다.
예를 들어,
repository 의 메서드에 다음과 같이 @Async 를 붙인다.