์ธ๋ถ 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
Feign Client vs Rest Client
A Comprehensive Guide
medium.com