[Spring Cloud]언제 Feign Client를 쓰고 언제 Kafka나 RabbitMQ를 쓰나?

날아올라돼지야·2024년 11월 7일
1

Feign Client와 Message Pub/Sub 방식 모두 Spring Cloud에서 마이크로서비스 간 통신을 위한 방법으로 사용될 수 있다.

하지만 언제 누구를 써야할지 고민될 수 있다.

어느 특정 하나만을 사용하는게 아니고 비즈니스 로직의 특성에 따라 달리 사용하면 된다.

(1) 동기 처리 -> Feign Client

쉽게 말해 요청을 보내는 쪽(클라이언트)이 요청을 처리하는 쪽(서버)의 응답을 기다리는 방식이다.

온라인 쇼핑몰 결제를 예로 들 수 있겠다.

  • 사용자가 온라인 쇼핑몰에서 상품을 결제할 때 결제 버튼을 클릭합니다.
  • 클라이언트는 결제 요청을 서버로 보냅니다.
  • 서버는 결제 정보를 처리하고 승인 여부를 즉시 응답으로 클라이언트에 반환합니다.
  • 클라이언트는 승인 결과를 받아 사용자에게 "결제가 완료되었습니다" 또는 "결제 실패" 메시지를 보여줍니다.

여기서 클라이언트는 서버의 응답을 기다리며, 서버의 응답이 올 때까지 대기한다. 이 방식은 즉각적인 피드백이 필요한 경우에 적합하다.

(2) 비동기 처리 -> 메시지 기반

반면에 비동기적 방식은 요청을 보내는 쪽이 응답을 기다리지 않고 다른 작업을 계속할 수 있는 방식이다.

주문 후 배송 알림을 예로 들 수 있겠다.

  • 사용자가 온라인 쇼핑몰에서 상품을 주문하면 주문 확인 요청을 보냅니다.
  • 서버는 주문이 접수되었다는 확인 메시지를 즉시 반환하지만, 주문 처리 및 배송 준비는 별도로 처리합니다.
  • 사용자는 응답을 기다릴 필요 없이 다른 작업을 계속할 수 있습니다(예: 웹사이트 탐색).
  • 나중에, 주문이 배송 준비가 완료되면 서버에서 알림(이메일이나 SMS)을 보냅니다.

이 방식은 요청에 대한 응답이 즉각적일 필요가 없고, 서버의 처리가 시간이 걸릴 때 주로 사용된다. 이를 통해 시스템의 효율성을 높이고 비동기적으로 작업을 분배할 수 있다.

따라서 Feign Client를 쓸지 Messaging 방식을 쓸지는 내가 구현하고자 하는 로직이 동기적인지 비동기적인지를 먼저 파악하는게 중요하다고 할 수 있겠다.

profile
무슨 생각하며 사니

0개의 댓글