Kafka 적용 이유

주문 결과를 우선적으로 반환 후 재고 업데이트, 주문 결과 저장 등 이후에 수행 되어도 사용자에게 큰 상관이 없는 로직들을 비동기 처리함으로 주문로직에 대한 성능을 개선했습니다.

주문 로직을 따로 데이터 스트림 구조로 만들어 성능의 저하 없이 동시에 지속적인 생산과 소비를 할 수 있습니다.

주문 API 단계

장바구니 조회 → 장바구니 구매 (담은 모든 상품) → 이벤트 상품 확인 → 주문 생성 → 상품 재고 관리 → 주문 결과 확정

Kafka 적용

카프카를 사용하지 않으면 모든 단계를 거친 후 사용자에게 응답을 해주는데, 카프카를 사용하면서 사용자들이 주문 후, 주문이 생성되고 주문 결과가 “주문 중” 으로 넘어가고 상품 재고 관리, 주문 결과 확정 과정을 비동기적으로 처리하여 사용자들이 주문 후 주문이 완료되기까지 기다리지 않고 다른 작업할 수 있도록 로직을 구성하였습니다. 그로 인해 처리량 자체도 매우 높일 수 있었습니다.

카프카 메시지로 무엇을 보낼 것인가 ?

카프카를 사용 시 어느 부분에서 메시지로 보내서 데이터 스트림을 나눌 것을 생각해보았습니다.

  1. basket Id 만 넘겨서 구매 처리 시 모든 작업을 order 컨슈머 쪽에서 한다.
  2. 장바구니를 확인 한 뒤 order 정보를 order 컨슈머에 넘기고 주문 생성 작업 부터 한다.
  3. 주문 생성 이후 주문 상품 정보를 order 컨슈머에 넘기고 주문 생성 이후 작업을 한다.