20220710 TIL&WIL

2022. 7. 11. 23:16·Memorization

이번주에 있었던 큰 변화..😢

현재 Spring MVC로 구현되어있으며, Spring Data JPA 및 QueryDSL을 활용하는 우리 어플리케이션에서 Spring MVC에서 Spring WebFlux으로의 전환은 많은 시간을 필요로 해서 고려하지 못했다.

Spring MVC, Spring WebFlux의 비교
<RestTemplate, WebClient 성능비교> &rarr; boot1 : RestTemplate, boot2 : WebClient

 

진행하던 프로젝트에 WebClient와 RestTemplate 모두를 어플리케이션에 적용해 보고, 어느 것이 더 효율이 높을까 측정해봤다.

현재 외부 API 호출의 흐름도는 다음과 같다

API 호출 Flow

각각의 호출 결과가 다음 호출의 매개변수로 사용되는 형태이다. 또한 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
'Memorization' 카테고리의 다른 글
  • 20220717 WIL
  • 20220711 TIL
  • 20220708 TIL
  • 20220707 TIL
코드파고
코드파고
  • 코드파고
    Digging Code
    코드파고
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • Memorization (12)
      • Spring (18)
      • Java (1)
      • Algorithm (40)
      • Server (2)
      • DB (0)
      • CS (0)
      • CI & CD (4)
      • Architecture (0)
      • Design Patterns (0)
      • Study (1)
      • Book (9)
        • DEV (7)
        • Non-DEV (0)
      • Infra (1)
        • Kafka (6)
        • AWS (4)
      • TroubleShooting (1)
        • Etc (1)
      • Tools (0)
  • 블로그 메뉴

    • 홈
    • Github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    clean architecture
    Spring
    클린아키텍쳐
    헥사고날아키텍쳐
    architecture
    Spring Boot
    SpringFramework
    Spring독학
    Clean Code
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
코드파고
20220710 TIL&WIL
상단으로

티스토리툴바