백엔드 멘토링

RestTemplate vs webClient vs openFeign 차이

piedra_de_flor 2023. 8. 27. 00:03

Spring framework 에는 다양한 http 요청 방식을 통해 웹서비스와의 통신이 가능합니다.

가장 주로 사용되는 http 요청 방식 3가지인 restTemplate vs webClient vs openFeign에 대해  매우 간단하게 알아보겠습니다.

 

1. RestTemplate

RestTemplate은 Spring에서 제공하는 동기식 http 통신을 위한 방법입니다.

주로 MVC기반의 프로그램에서 사용되며 JSON, XML등 다양한 형식의 데이터를 처리 할 수 있습니다.

 

장점

  • 간단한 구성과 사용법
  • 예전 버전의 Spring에서도 사용 가능
  • 다양한 http 클라이언트 설정 가능

단점

  • 동기 방식을 기반으로 하기에 병렬 처리가 어려움
  • non-blocking 요청 처리가 불가능

 

2. WebClient

WebClient는 Spring 5 부터 도입된 비동기식 non-blocking http 통신 방법입니다.

응답삽으로 리액티브 타입인 Flux와 Mono를 반환합니다.

 

장점

  • 비동기 및 non-blocking 방식으로 높은 성능과 확장성을 지님
  • 비동기 작업이 용이

단점

  • 기존에 사용하던 동기적인 코드와는 다른 패러다임을 지니기에 러닝커브의 필요성

 

3. openFeign

openFeign이란 Spring의 라이브러리로 간단한 선언적 방식으로 통신이 가능한 방법입니다

 

장점

  • 간단한 사용법
  • 간결한 코드
  • 인터페이스와 어노테이션을 기반으로 작성할 코드의 수가 줄어든다

단점

  • http2를 지원하지 않음
  • 테스트 도구를 제공하지 않음

 


 

따라서 프로젝트에 맞게 알맞은 방법을 사용하여 http 통신을 하여도 문제 없이 사용이 가능하지만,

필자의 경우 Spring 버전이 높을때에는 webClient 혹은 openFeign을 사용하는 것을 추천한다.