FeignClient란?

REST call을 추상화한 Spring Cloud Netflix 라이브러리

FeignClient를 사용하면 HTTP Client를 직접 구현하지 않고도 REST API를 호출할 수 있다.

 

FeignClient는 RestTemplate보다 직관적이고 간단하며 코드가 짧다. 또한 Spring Cloud의 다른 기능들과 원활하게 통합되어 서비스 디스커버리, 로드 밸런싱 등의 기능을 사용하면서 FeignClient를 활용할 수 있다.

 

특히, Spring Boot 마이크로서비스 아키텍처(Microservice Architecture, MSA)의 분산 애플리케이션에서 RESTful 클라이언트를 작성할 때는 FeignClient를 사용하는 것이 좋다. 이를 통해 REST API 호출을 쉽게하고, 분산 애플리케이션의 성능과 안정성을 향상시킬 수 있다.

 

FeignClien의 특징

1. 간결한 API 정의

- @FeignClien 어노테이션을 사용하여 타겟 서비스 URL과 이름을 명시

- API 엔드포인트를 나타내는 메소드를 @GetMappingl, @PostMapping, @PutMapping 등의 어노테이션으로 정의

- 인터페이스를 통해 간결하고 직관적인 방식으로 API 호출을 수행

 

2. 다양한 기능 지원

- 기본적인 HTTP 메소드 (GET, POST, PUT, DELETE) 지원

- 템플릿 엔진을 통한 URL 동적 파라미터 설정 가능

- Timeout, Retry 등의 설정을 통해 네트워크 통신 제어

- Query Parameter, Header, Body 등의 데이터 전송

- JSON, XML 등 다양한 데이터 포멧 지원

- Spring Cloud Config Server를 통한 설정 자동 로드

 

3. 쉬운 통합

- Spring Boot Starter를 통해 간편하게 설정 및 사용

- Spring Cloud Discovery와 연동하여 서비스 주소 자동 등록 및 해결

- Ribbon Load Balancer를 통한 자동 로드 밸런싱

- Hystrix Circuit Breaker를 통한 에러 처리 및 회복성 강화

 

4. 확장성

- Feign Decoder/Encoder를 통해 커스터마이징 가능

- Feign Fallback/Hystrix Command를 통해 에러 처리 및 회복성 강화

- Feign Interceptor를 통해 추가 기능 및 로깅 구현

 

FeignClient 장점과 단점

장점

- 간결하고 직관적인 API 정의

- 다양한 기능 지원

- 쉬운 통합

- 확장성

- Spring Cloud 생태계와 완벽한 연동

 

단점

- RestTemplate 대비 설정 및 사용이 다소 복잡

- 직접적인 HTTP 통신 제어가 어려움

- Feign Client 자체의 버그 가능성

 

++ 추가할 내용

FeignClient VS webflux 차이는?

 

+ Recent posts