FeignClient vs RestClient

2025. 2. 28. 00:08ยทTIL
๋ชฉ์ฐจ
  1. FeignClient ๋ž€?
  2. Restclient ๋ž€?
  3. FeignClient VS RestClient

์™ธ๋ถ€  API ํ…Œ์ŠคํŠธ์ธ WireMock ์ฐพ์•„๋ณด๋‹ค๊ฐ€ FeignClient๋ฅผ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.

์ง€๋‚œ๋ฒˆ์— RestTemplate, WebClient(webflux), RestClient ์ฐพ์•„๋ณผ ๋• ๋ชฐ๋ผ์„œ ํ•จ๊ป˜ ๋น„๊ตํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

 

FeignClient ๋ž€?

  • Netflix์—์„œ ๊ฐœ๋ฐœํ•œ ์„ ์–ธํ˜• HTTP ํด๋ผ์ด์–ธํŠธ๋กœ Spring Cloud์™€ ํ†ตํ•ฉ์ด ์›ํ™œํ•˜์—ฌ MSA์—์„œ ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„ ์–ธํ˜• HTTP ํด๋ผ์ด์–ธํŠธ: ์ธํ„ฐํŽ˜์ด์Šค์™€ ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ REST API ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Spring Boot์—์„œ ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ์„ค์ •๋œ๋‹ค.
  • Ribbon ๋ฐ Hystrix๋ฅผ ํ™œ์šฉํ•œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ๊ณผ ์žฅ์•  ๋ณต๊ตฌ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— MSA์—์„œ ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์ด ์‰ฝ๋‹ค.

 

 

Restclient ๋ž€?

  • Spring Boot 3 ์ด์ƒ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ HTTP ํด๋ผ์ด์–ธํŠธ์ด๋‹ค.
  • Spring์—์„œ ๊ถŒ์žฅํ•˜๋Š” RestTemplate์˜ ๋ชจ๋˜ํ•œ ๋ฒ„์ „์ด๋‹ค. 
  • RestTemplate๋ณด๋‹ค ๊ฐ„๊ฒฐ(fluent API)ํ•˜๊ณ , WebClient๋ณด๋‹ค ์‰ฝ๊ฒŒ(Spring boot ํ™˜๊ฒฝ์—์„œ ์˜์กด์„ฑ ์ถ”๊ฐ€ ํ•„์š” X) ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋™๊ธฐ ๋ฐ ๋น„๋™๊ธฐ์‹์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค.

 

FeignClient VS RestClient

  RestClient FeignClient
Spring ๋ฒ„์ „ Spring 6 ๋ถ€ํ„ฐ (Boot 3 ๋ถ€ํ„ฐ) Spring Cloud ํ•„์š”
์‚ฌ์šฉ ๋ฐฉ์‹ ์ฝ”๋“œ ๊ธฐ๋ฐ˜ (์ง์ ‘ ํ˜ธ์ถœ) ์„ ์–ธํ˜• (์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜)
๋น„๋™๊ธฐ ์ง€์› โœ… ๊ฐ€๋Šฅ โŒ ๊ธฐ๋ณธ ์ง€์› X (WebClient ์„ค์ • ํ•„์š”)
์„ค์ • ์œ ์—ฐ์„ฑ โœ… ๋†’์Œ (ํƒ€์ž„์•„์›ƒ, ๋ฆฌํŠธ๋ผ์ด ์„ค์ • ๊ฐ€๋Šฅ) โŒ ์ œํ•œ์  (์ž๋™ ์„ค์ •)
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ ํ•ฉ์„ฑ ์ผ๋ฐ˜์ ์ธ REST API ํ˜ธ์ถœ MSA ํ™˜๊ฒฝ์—์„œ ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ 

 

 

์ด๋ก ์ ์œผ๋กœ MSA ํ™˜๊ฒฝ ์™ธ์—๋Š” ํฐ ์ฐจ์ด๋ฅผ ๋ชป ๋А๊ผˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์‹ค๋ฌด์—์„œ๋Š” FeignClient๊ฐ€ ๋งŽ์ด ์“ฐ์ธ๋‹ค๊ณ  ํ•œ๋‹ค.

์™ธ๋ถ€ ๋‚ด๋ถ€ ๋ชจ๋‘ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ๋„ ํ•˜๊ณ , restClient๊ฐ€ ๋Šฆ๊ฒŒ ๋‚˜์˜จ ์ด์œ ๋„ ์žˆ๋‹ค๊ณ ..

 

์ถ”ํ›„์— RestClient๋กœ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ FeignClient๋กœ ๋ณ€๊ฒฝํ•  ์ƒ๊ฐ์ด๋ฏ€๋กœ ๋น„๊ต ์ฝ”๋“œ์™€ ์„ค์ • ๋ฐฉ๋ฒ•์€ ๋‚˜์ค‘์— ์˜ฌ๋ ค์•ผ๊ฒ ๋‹ค..!

 

์ด์ „์— ์˜ฌ๋ฆฐ ๊ธ€ (RestTemplate vs RestClient vs WebClient)
https://bamdal.tistory.com/entry/Spring-Boot-Webflux%EA%B0%80-%EB%AD%98%EA%B9%8C

 

WebClient์™€ RestTemplate ๊ทธ๋ฆฌ๊ณ  RestClient

์™ธ๋ถ€API์™€ ์—ฐ๋™ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” RestTemplate๊ณผ WebClient ๊ฐ„์— ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ์„์ง€ ์ฐพ์•„๋ณด๊ณ , ์–ด๋–ค ๊ธฐ์ˆ ์„ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ• ์ง€ ๊ณ ๋ฏผํ•ด๋ดค์Šต๋‹ˆ๋‹ค. Webflux ?๋น„๋™๊ธฐ(Async), ๋…ผ๋ธ”๋กœํ‚น(Non-blocking) ๋ฐฉ์‹์˜ ๋ฆฌ์•ก

bamdal.tistory.com

 

์ฐธ๊ณ ๊ธ€
https://medium.com/@lahirurajapakshe.stack/feign-client-vs-rest-client-a-comprehensive-guide-ad227272537a

 

Feign Client vs Rest Client

A Comprehensive Guide

medium.com

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€๊ณผ ๊ทธ์— ๋”ฐ๋ฅธ ์ด์ƒ ํ˜„์ƒ (์š”์•ฝํŽธ)  (0) 2025.03.04
SpringBoot์—์„œ FeignClient ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ์šฉํ•˜๊ธฐ  (0) 2025.03.01
PageableArgumentResolver๋ฅผ ํ™œ์šฉํ•œ @Pageable ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ ์ œํ•œ  (0) 2025.02.24
WebClient์™€ RestTemplate ๊ทธ๋ฆฌ๊ณ  RestClient  (0) 2025.02.21
ํ”„๋กœ์ ํŠธ | ํ”„๋กœ์ ํŠธ ์ค‘ ํ•ด๊ฒฐ/๊ณ ๋ฏผํ•œ ๋ฌธ์ œ๋“ค ์ •๋ฆฌ! (feat. JPQL, Querydsl)  (1) 2025.02.20
  1. FeignClient ๋ž€?
  2. Restclient ๋ž€?
  3. FeignClient VS RestClient
'TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€๊ณผ ๊ทธ์— ๋”ฐ๋ฅธ ์ด์ƒ ํ˜„์ƒ (์š”์•ฝํŽธ)
  • SpringBoot์—์„œ FeignClient ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ์šฉํ•˜๊ธฐ
  • PageableArgumentResolver๋ฅผ ํ™œ์šฉํ•œ @Pageable ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ ์ œํ•œ
  • WebClient์™€ RestTemplate ๊ทธ๋ฆฌ๊ณ  RestClient
bamDal
bamDal
๊ด€์‹ฌ์žˆ๋Š” ๋ถ„์•ผ ๊ณต๋ถ€ํ•˜๋Š” ๋ธ”๋กœ๊ทธ.....๐ŸŒ™๐ŸŒฐ
  • bamDal
    ๐ŸŒ™๐ŸŒฐ๋‹ฌ๋ฐค์— ์ฝ”๋”ฉ
    bamDal
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
      • TIL
      • Back-End
        • JAVA
        • SPRING
        • ํŒŒ์ด์ฌ
        • Linux
      • DataBase
        • MariaDB
      • CS
        • ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜
      • Infra
      • Tool
        • Git
        • IntelliJ
      • Etc
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•™์Šต
      • Front-End
        • jQuery
        • AJAX
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ์นดํ…Œ๊ณ ๋ฆฌ
    • ํƒœ๊ทธ
  • ๋งํฌ

    • Github
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
bamDal
FeignClient vs RestClient

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.