f-lab-edu / f-lab-edu/commerce-platform
EDA 전환, kafka 도입
- Dominant language
- Java
- Stars
- 0
- Forks
- 1
- Avg merge
- 1m
- Merged PRs (30d)
- 1
Description
- [x] 쿠폰발급 요청 트래픽이 몰릴 경우, 서버에서 수용 가능한 만큼 처리하도록 kafka를 큐처럼 사용한다.
- [ ] 결제 요청 인입 -> 주문 검증 -> 결제완료 -> 재고차감 을 eda 방식으로 전환(kafka 사용)하여 결합도를 낮춘다.
- [ ] 기존 상품테이블에 있던 재고를 재고테이블로 만들고, 상품entity에서 재고컬럼 삭제한다.
이벤트 흐름에 관하여 (현재는 포인트적립은 없지만 이해를 위해 추가함)
1) "주문완료 이벤트" → 결제 "결제완료 이벤트"→ (재고 차감, 포인트적립) 인건지
: 코드상으로 흐름을 추적하기는 어려울 거 같음.
2) "주문완료 이벤트" → (결제, 재고 차감 , 포인트적립)인건지
: 재고,포인트 처리 성공했는데 결제가 실패했다면, 보상트랜잭션으로 다시 재고,포인트 원복해야되는데
사용자입장에서는 포인트 적립됨 -> 결제 실패 -> 포인트 회수 니까 이상하다고 생각됨.
: ~~이렇게 구현하면 각 모듈이 다음을 위한 이벤트를 호출하지 않으니까 결합도를 낮추는 방법으로는 이게 맞다고 생각이 든다..~~
: 다음을 위한 이벤트 발행이 아니다. 자신의 상태를 이벤트로 한다. (위에 글 의미 없다)
3) Saga pattern
- 코레오그래피 : 참가자가 많아질수록 추적하기 어렵다.
- 오케스트레이션 : 중앙 컨트롤러가 보상 작업을 트리거
고객의 결제로 재고가 차감되고,
관리자는 재고를 채우고,,,,, 만약에 동시에 처리가 된다면 결과값이 예상한 값이 아닐텐데.. 이때 만약에 재고를 락 한다면, 이거는 고객도 주문을 못하는 거 아닌가..?
실시간으로 처리하려면 큐에넣고 순차적으로 처리한다?
replica의 싱크로 인한 제어는 어떻게 처리하는지?
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.