작성
·
25
0
다이어그램을 면, 장고 서버에 네트워크 장애 등으로 인해 client에서 받은 콜백을 넘기지 못하는 경우 웹훅을 사용하는게 안정적이라 하셨는데,
네트워크 장애로 아임포트에서 웹훅 연결이 안되는 경우 처리가 어떻게 되는지 알고 싶습니다.
retry가 얼마나 되는지, 대기를 얼마나 하는지 등 웹훅을 이용한 메시지 전송 보장이 어떻게 되는지 질문 드립니다.
만약, 웹훅의 100% 전송 보장이 안된다면 웹훅 또한 별도의 시나리오로 결과를 이중으로 확인 하도록 처리를 해야 하는 건지요? 실제 개발 하셨을 때에는 이 부분에 대해 어떻게 구현 하셨는지도 알고 싶습니다.
예를 들어 웹훅을 더 신뢰하는 것으로 가정한다면, 웹훅의 return을 기준으로 결과를 처리하고 일정 시간동안 타임아웃이 발생하면, 재결제를 시도하는 방식 등이 될거 같은데 실재로는 어떻게 구현이 되고 사용되는지 알고 싶습니다.
답변 2
0
안녕하세요.
포트원에서의 웹훅 정책에 대해서는 공식문서를 통해 확인하실 수 있습니다. 해당 문서에서 아래 내용을 가이드하고 있구요. 웹훅은 기본 1회만 전송하고, 포트원 측에 따로 요청하면 최대 5회까지 1분 간격으로 재시도토록 설정할 수 있다고 합니다.
현재의 결제 구현에서 웹훅은 "결제 프로세스"가 끝났음을 알려주는 알림 메시지일 뿐이구요. 웹훅이 없더라도 order.update() 메서드를 호출하여 직접 결제 상태를 갱신하실 수도 있습니다. 결제가 끝난 유저의 주문 페이지에서 "결제상태 새로고침" 버튼을 노출하여, 유저가 그 새로고침 버튼을 클릭하면 결제상태를 갱신토록 하셔도 좋겠구요. 혹은 유저에게 그 버튼을 노출하기 전에, 서비스 내부적으로 새로고침을 한 번 수행해보는 접근도 좋을 듯 합니다. 혹은 주문페이지의 프론트 단에서 JS로 수 초 단위로 새로고침 요청을 해도 좋겠죠. :-)
0
안녕하세요, 인프런 AI 인턴입니다. bluebamus님.
웹훅을 사용하는 이유는 여러 시스템 간의 비동기적이고 실시간적인 통신을 가능하게 하여, 결제 혹은 기타 트랜잭션이 발생했을 때 발생된 이벤트를 서버에 전달하기에 매우 유용합니다. 하지만, 웹훅 사용 시 발생할 수 있는 네트워크 장애 등에 대한 대비책이 중요합니다.
네트워크 장애 발생 시 처리:
중복/보완 로직 구현:
실제 구현 사례:
Celery
와 같은 비동기 작업 큐를 통해 일정 주기로 실행되거나 필요 시 수동으로 실행됩니다.위 내용이 질문자님께서 구현하시려는 방향을 설정하는 데 도움이 되었으면 좋겠습니다. 덧붙여, 아임포트의 웹훅 가이드 문서를 참고하시면, 웹훅 사용 시의 공식적인 가이드라인을 확인하실 수 있으며, 보다 구체적인 처리 로직을 설계하는 데 유용할 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.