이번주에 있었던 큰 변화..😢
현재 Spring MVC로 구현되어있으며, Spring Data JPA 및 QueryDSL을 활용하는 우리 어플리케이션에서 Spring MVC에서 Spring WebFlux으로의 전환은 많은 시간을 필요로 해서 고려하지 못했다.
진행하던 프로젝트에 WebClient와 RestTemplate 모두를 어플리케이션에 적용해 보고, 어느 것이 더 효율이 높을까 측정해봤다.
현재 외부 API 호출의 흐름도는 다음과 같다
각각의 호출 결과가 다음 호출의 매개변수로 사용되는 형태이다. 또한 Blocking으로 WebClient를 구현하면 WebClient의 메리트가 떨어져서 아래와 같이 Lazy Subscription을 이용하여 구현해 보았다.
.bodyToMono(SomeData.class)
.flux()
.toStream()
.findFirst()
.orElse(defaultValue);
다음 표는 앞의 방법으로 구현한 WebClient와 RestTemplate의 수행 시간을 비교한 것이다.
100개 | 250개 | |
RestTemplate | 8034ms | 11598ms |
WebClient | 9337ms | 12989ms |
현재 RestTemplate가 WebClient의 속도보다 빠르다. 이번 프로젝트에서는 RestTemplate을 주로 이용할 듯 하다.
Spring 5.0부터 RestTemplate가 Deprecated 될 예정이라고 한다. 또한 Reactive Programming와 함수형 프로그래밍이 화제가 되면서, WebClient에 대해 공부해보고 현업에서 많이 쓰는 RestTemplate 둘 다 사용해서 외부 API를 불러오고 가공해 올 수 있어서 재미있었다!

'Memorization' 카테고리의 다른 글
20220717 WIL (0) | 2022.07.20 |
---|---|
20220711 TIL (0) | 2022.07.12 |
20220708 TIL (0) | 2022.07.09 |
20220707 TIL (0) | 2022.07.08 |
20220705 TIL (0) | 2022.07.06 |