Skip to content

navy-nextstep-study/springboot-msa-order

Repository files navigation

spring-boot-msa-order

구현된 기능

1. Outbox Pattern

[클라이언트 주문 취소]

  • 주문 도메인에서 결제 도메인으로 결제 취소 요청 이벤트 발행(Kafka)
  • 주문 도메인에서 상품 도메인으로 상품 재고 증가 요청 이벤트 발행(Kafka)
  • 고려사항
    • Outbox Table에 넣은 이벤트가 발행 실패될 경우 지속적으로 이벤트 발행 필요
      • [구현 완료] 5분 Polling 방식으로 Outbox Table에서 실패된 이벤트를 재처리 구현
    • Outbox Table에 완료된 이벤트를 계속 쌓을 경우 데이터가 많이 쌓일 경우 풀 테이블 스캔시 문제 발생 가능성
      • [구현 완료] 매일 자정마다 완료된 이벤트들은 삭제 처리 구현
    • Outbox Table에서 실패한 이벤트들을 재처리하더라도 계속 쌓일 수 있음
      • 시간이 꽤 지난 이벤트들의 경우는 문제 해결을 위해 수동으로 처리하는 방법을 사용할 수도 있음 -> "꽤 지난"의 기준을 정하고 해당하는 기준을 바탕으로 수동으로 로직을 처리하거나, 클라이언트에게 관련 내용을 전송할 수 있는 로직을 구현해야 함

2. RestClient & HttpInterface & 서킷브레이커 활용

[클라이언트 주문시]

  • 주문 도메인에서 상품 도메인으로 상품 재고 감소 요청(RestAPI)
  • 고려 사항
    • RestClient의 Blocking 문제를 해결하기 위해 VirtualThread를 이용해볼 수 있을 것 같음
    • 외부 API 요청시 지속적인 요청 응답 불가로 인한 TimeOut 또는 자원 고갈 문제를 서킷 브레이커를 활용해서 제어할 수 있을 것 같음

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages