f-lab-edu / f-lab-edu/commerce-platform

EDA 전환, kafka 도입

Open
#36 0 comments 0 reactions 1 assignee Claimed by @SinJeongEun View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.