해결된 질문
작성
·
8
·
수정됨
0
MSA기반 주문 서비스에서 동기식으로 호출할때 재고 차감 - 쿠폰 사용 - 주문 완료 이런식으로 구성되어 있을때 쿠폰 사용 실패일때는 바로 사용자에게 응답이 가능하다고 생각을 하고 있습니다.
하지만 EDA기반으로 재고 차감 - 쿠폰 사용 - 주문 완료를 구현하면 주문이 완료되고 쿠폰사용에 실패가 되어 사용자는 주문이 완료되었지만 다시 실패메시지가 가고 그때서야 이유를 알수 있다고 생각을 하고 있습니다.
그래서 사용자 경험 상 동기식이 맞다고 판단되는데 제가 잘못 생각을 하고 있는걸까요?
MSA 기반 EDA 주문 구조에서 재고가 부족하여 실패한다면 사용자에게 바로 응답을 해줄수 있을까욤?.
답변 2
0
안녕하세요 qheogus55님 질문 남겨주셔서 감사합니다.
이 부분은 어떤 기능을 EDA 아키텍처를 도입해서 사용할지를 정해야 하는거 같아요.
말씀해주신 부분처럼 사용자 경험 관점에서는 당연히 동기식이 더 직관적입니다. 실패인지 성공인지 알 수 있기 때문이에요. 하지만 상황에 따라서 일부 처리를 EDA 기반의 아키텍처로 뺼수도 있겠죠
예를들어서 사용자가 성공했다는 행위를 쿠폰 발급까지만 진행하고, 쿠폰 발급에 대힌 메일 전송과 같은 기능은 이벤트화해서 처리하거나 이런식으로 시간이 오래 소요 될 수 있는 행위에 대해서는 이벤트화 하는것이 좋습니다.
EDA 기반의 아키텍처에서 가장 큰 문제가 될 수 있는 부분이 말씀해주신 재고와 관련된 서비스 입니다.
그래서 간단하게 해결을 하자면
1. 재고 확인
2. 확인 후 문제가 없다면, 이벤트를 전송 (이떄 해야하는 작업이 많겠죠)
3. 특정 이벤트 작업 후 재고 처리
3.1 에러가 발생하면 복구 트랜잭션 발행
3.2 아니면 성공하는 이벤트들에 대해서 추가적으로 수집하여 전체적인 총괄 처리
이런식으로 해결하는것이 일반적인 패턴입니다.
그래서 이런 구현에 대해서 Saga 패턴도 고민해 보시면 좋을꺼같아요.
질문에 대한 답변이 되었으면 좋겠네요. 혹시 추가적인 질문 있다면 남겨주세요!! 감사합니다 :)
0
안녕하세요, 인프런 AI 인턴입니다. qheogus55님.
질문하신 이벤트 기반 아키텍처(EDA)와 동기식 아키텍처에서의 사용자 경험 차이에 대해 고민하고 계신 것 같습니다. 이 주제는 시스템의 설계 결정에서 매우 중요한 측면을 다루고 있기 때문에 깊이 있는 이해가 필요합니다.
EDA 기반에서 쿠폰 사용의 실패와 같은 의존적인 이벤트로 사용자 경험을 개선하기 위해서는, 시스템이 실패 시점을 사용자에게 신속하게 알릴 수 있도록 설계를 개선할 수 있습니다. 예를 들면, 사용자에게 주문의 각 단계에 대한 실시간 피드백을 UI에 노출하고, 쿠폰 사용 실패 시 주문을 자동 취소하는 등의 정책을 설정할 수 있습니다.
관련하여 더 깊이 있는 논의가 필요하시다면, 이벤트 기반 아키텍처와 마이크로서비스 패턴 관련 자료를 참고해 보시는 것도 좋겠습니다.
저는 질문자님의 이해를 돕고자 관련 논의를 포함한 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.