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 차이는?
'Computer Science' 카테고리의 다른 글
Enum에 Static을 붙여야 하는 이유 - Java 메모리 영역에 관하여 (0) | 2024.05.28 |
---|