기능 설명

🔥 주문 기능:

    사용자의 주문 요청 시점부터 결제 처리, 상품 재고 감소, 주문 완료 처리까지의 일련의 과정을 
   효율적으로 처리하는 핵심 비즈니스 로직입니다.

🔥 이벤트 기반의 비동기 처리 방식:

    Kafka 이벤트 기반의 비동기 처리 방식으로 구현하여 효율적인 분산 처리로 시스템의 부하를 
    줄이고, 대규모 트래픽을 효과적으로 관리합니다.
    이는 서비스 간의 작업을 병렬적으로 수행하면서도 시스템의 유연성과 안정성을 보장합니다

이벤트 처리를 통한 주문 시나리오

주문.drawio (1).png

  1. 고객이 원하는 상품을 담아 주문 요청합니다.
  2. 상품에 대한 유효성 및 재고 검사를 진행합니다.
  3. 주문 및 결제 생성 후 결제 처리 이벤트를 발행합니다.
  4. 결제 처리 성공 시 상품 재고 감소 이벤트 발행합니다.
  5. feignclient로 상품 재고 감소 요청합니다.
  6. 성공 시 주문 완료 처리합니다.

구현 방법

이벤트 기반의 비동기 처리를 위해 Kafka 사용

  1. 이벤트 전송 위한 kafka Topic 정의
@Getter
public enum KafkaTopic {
    ORDER_PAYMENT("order-payment"),
    PRODUCT_STOCK_DECREASE("product-stock-decrease"),
    PRODUCT_STOCK_INCREASE("product-stock-increase"),
    FLASH_PRODUCT_STOCK_DECREASE("flash-product-stock-decrease"),
    FLASH_PRODUCT_STOCK_INCREASE("flash-product-stock-increase");

    private final String topic;

    KafkaTopic(String topic) {
        this.topic = topic;
    }
}