작성
·
260
답변 1
1
답변드리면.
1의 경우는 클라이언트에 알림을 보내는 방법은 어떤 도메인 성격이냐에 따라 보낼수도 있고 보내는 방법도 너무 다양할 것 같습니다. 일반적인 btc라하면 이메일이나, sms, sns등을 통해 보내고 있고, 보내는 방식도 다양하겠지만 예시와 같이 EDA아키텍처를 사용하는 경우는 동일하게 메시지/이벤트 규를 사용하고 있습니다.
2의 경우는 일반적으로 1개의 서버로 구성하지 않고 여러개의 서버를 클러스터로 구성합니다. 카프카 같은 경우는 가능하고요. 따라서 ^ ^ 비동기라 해서 그렇게 느리지가 않습니다.
만약, A라는 이벤트로 인해 X 도메인, Y 도메인, Z 도메인에 상태변경이 필요한대, Y 도메인의 서버 문제로, Y 도메인의 상태가 변경 불가능한 경우, 결국 A 라는 이벤트는 보상 트랜잭션이 필요한대, 이때, 비동기인데, 어떻게 실패에 대한 응답을 클라이언트에게 어떻게 줄까요? 예를 들어, 주문 이벤트인데, 재고 수량 부족으로 주문이 실패한 경우, 클라이언트에게 알려줘야 하는데, 이런 상황은 이메일이나 sms, sns 로 해당 실패 상황을 알리는게 좀 이상할 것 같아서요. 혹시, websocket을 사용할까요?
아하! 저는 비동기 자체보다는 외부 환경에 의해 예를 들어 네트워크 문제로 통신이 느리거나 끊긴 경우, 프로듀서로 이벤트를 보냈지만, 카프카가 못받는 경우 또는 프로듀서에 이벤트를 보냈지만 컨슈머가 받지 못한 경우 등에 대해 어떻게 처리해야할까 궁금했습니다. 어떻게 보면 1번의 질문과 비슷한 내용 같아요!