BacknPacker / spring-multi-module

๐Ÿš€ N๊ฐœ์˜ Module์ด ์กฐ๋ฆฝ๋˜์–ด์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ์ž‘
0 stars 0 forks source link

Feign Client ์‚ฌ์šฉ #20

Open quedevel opened 1 year ago

quedevel commented 1 year ago
quedevel commented 1 year ago

Connection/Read Timeout

์™ธ๋ถ€ ์„œ๋ฒ„ ํ†ต์‹ ์‹œ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Feign Interceptor

์™ธ๋ถ€๋กœ ์š”์ฒญ์ด ๋‚˜๊ฐ€๊ธฐ ์ „์— ๋งŒ์•ฝ ๊ณตํ†ต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด Interceptor๋ฅผ ์žฌ์ •์˜ํ•˜์—ฌ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

Feign Logger

Request / Response ๋“ฑ ์šด์˜์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ ์ ˆํ•œ Log๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

Feign ErrorDecoder

์š”์ฒญ์— ๋Œ€ํ•ด ์ •์ƒ ์‘๋‹ต์ด ์•„๋‹Œ ๊ฒฝ์šฐ ํ•ธ๋“ค๋ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

quedevel commented 1 year ago

RestTemplate VS Feign Client

RestTemplate๊ณผ Feign์€ ๋ชจ๋‘ Java์—์„œ RESTful ์›น ์„œ๋น„์Šค์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•œ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ข…์†์„ฑ: RestTemplate์€ Spring ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ผ๋ถ€๋กœ ์ œ๊ณต๋˜๋Š” ํด๋ž˜์Šค์ด๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ Spring MVC์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. RestTemplate์€ Spring Boot ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ณ„๋„์˜ ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— Feign์€ ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ผ๋ถ€๋กœ ์ œ๊ณต๋˜๋ฉฐ, spring-cloud-starter-openfeign ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ์˜ ๊ฐ„๊ฒฐ์„ฑ: Feign์€ ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜์˜ ์„ ์–ธ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ RESTful ์„œ๋น„์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Feign ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹จ์ˆœํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ •์˜๋˜๋ฉฐ, ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค์— HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ๊ฐ€ ์„ ์–ธ๋ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•˜๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง‘๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— RestTemplate์€ ํ’๋ถ€ํ•œ API ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ RESTful ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. RestTemplate์€ ๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ฝ”๋“œ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋” ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ ํ†ตํ•ฉ: Feign์€ ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ ํ”„๋กœ์ ํŠธ์™€ ๊ธด๋ฐ€ํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Feign์€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ๋ฐ ํšŒ๋กœ ์ฐจ๋‹จ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. RestTemplate์€ ์ด๋Ÿฌํ•œ ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ๊ณผ ์ง์ ‘์ ์ธ ํ†ตํ•ฉ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ˜ธํ™˜์„ฑ: RestTemplate์€ ์˜ค๋ž˜๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ์„œ, ์Šคํ”„๋ง 5.0 ์ด์ „ ๋ฒ„์ „์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— Feign์€ ์ตœ์‹  ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฒ„์ „๊ณผ ํ•จ๊ป˜ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•œ๋‹ค๋ฉด Feign์„ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ, RestTemplate์€ ๋ณด๋‹ค ์œ ์—ฐํ•œ API์™€ ๋” ๋งŽ์€ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋ณต์žก์„ฑ๊ณผ ์ฝ”๋“œ ์–‘์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Feign์€ ๊ฐ„๋‹จํ•œ ์„ ์–ธ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ๊ณผ ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ์˜ ํ†ตํ•ฉ์„ ์ œ๊ณตํ•˜์—ฌ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ๊ฐ„๊ฒฐ์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.