Feign Client와 Message Pub/Sub 방식 모두 Spring Cloud에서 마이크로서비스 간 통신을 위한 방법으로 사용될 수 있다.
하지만 언제 누구를 써야할지 고민될 수 있다.
어느 특정 하나만을 사용하는게 아니고 비즈니스 로직의 특성에 따라 달리 사용하면 된다.
쉽게 말해 요청을 보내는 쪽(클라이언트)이 요청을 처리하는 쪽(서버)의 응답을 기다리는 방식이다.
온라인 쇼핑몰 결제를 예로 들 수 있겠다.
여기서 클라이언트는 서버의 응답을 기다리며, 서버의 응답이 올 때까지 대기한다. 이 방식은 즉각적인 피드백이 필요한 경우에 적합하다.
반면에 비동기적 방식은 요청을 보내는 쪽이 응답을 기다리지 않고 다른 작업을 계속할 수 있는 방식이다.
주문 후 배송 알림을 예로 들 수 있겠다.
이 방식은 요청에 대한 응답이 즉각적일 필요가 없고, 서버의 처리가 시간이 걸릴 때 주로 사용된다. 이를 통해 시스템의 효율성을 높이고 비동기적으로 작업을 분배할 수 있다.
따라서 Feign Client를 쓸지 Messaging 방식을 쓸지는 내가 구현하고자 하는 로직이 동기적인지 비동기적인지를 먼저 파악하는게 중요하다고 할 수 있겠다.