안녕하세요 푸드 테크팀 백엔드 개발자 박형민 입니다
오늘은 Spring5 부터 소개된 WebClient에 대해서 이야기해보자 합니다.
웹으로 API를 호출하기위해 사용되는 Http Client 모듈 중 하나이며, RestTemplate를 대체하는, HTTP 클라이언트 입니다.
웹 클라이언트는
1. 기존의 동기 API를 제공할 뿐만 아니라
2. 논블로킹 및 비동기 접근 방식을 지원해서 효율적인 통신이 가능하다고 합니다.
두 클라이언트 모듈의 차이점은
Multi-Thread
와 Blocking
방식이며,Single-Thread
와 Non-Blocking
방식이라는 것입니다.Non-Blocking 방식이 네트워킹의 병목 현산을 줄이고 성능을 향상시키기 때문에,
Spring WebClient 를 사용하면 요청자(consumer) 와 제공자(provider) 사이의 통신을 조금 더 효율적으로 진행할 수 있다는 장점이 있습니다.
Multi-Thread & Blocking 방식
요청을 처리할 스레드가, 스레드 풀에 충분히 남아있다면 위와같은 방법이 아무런 문제가 없지만
스레드가 다 차는 경우 이후의 요청은 Queue에 대기하게 됩니다.
대부분의 문제는 네트워킹이나, DB 와의 통신에서 문제가 생기기 때문에 락이나 병목현상이 일어나면
가용 가능한 스레드 수가 현저하게 줄어들기 때문에, 전체 서비스가 매우 느려지는 결과로 이어지게 됩니다.
Single-Thread & Non-Blocking 방식
WebClient는 이벤트에 대한 반응형으로 설계가 되었기 때문에 반응성, 탄련성, 가용성, 비동기성을 보장하는 Spring React 프레임워크를 사용합니다.
이번 포스팅에서는 WebClient란 무엇이고, WebClient가 RestTemplate의 대체제로 나온 이유에 대해서 공부해보았습니다
감사합니다!