개발자
결제 기능을 개발 중인 주니어 개발자입니다! 현재 포트원(아임포트)의 API를 이용해 구독,단건 결제 기능을 개발 중에 있습니다. 결제 기능 특성상 민감한 패킷 손실 이슈에 대응하기 위해서 노력 중인데, 일반적으로 어떤 식으로 대응하는지 궁금해서 문의 드립니다. (현재로서는 cronjob 등을 통해 결제 로그 DB와 실 결제 금액 대조 등 밖에 생각이 안나네요..)
답변 1
인기 답변
HTTP는 TCP를 사용해 통신합니다. TCP는 패킷이 누락 없이 순서대로 도착하는 것을 보장하는 프로토콜이므로 패킷 손실은 대비할 필요가 없습니다. 이런 문제는 웹 어플리케이션 개발자가 아니라 커널 개발자가 고민하여야 할 대상입니다. 어플리케이션 개발자는 API 호출이 통째로 실패하는 상황에만 대비하면 됩니다. 예를 들어 환불 api 호출이 실패하였는데 환불이 완료된 것으로 처리한다던지 하는 상황만 방지하면 됩니다. 이런 상황은 패킷 손실이 아니라 코드의 논리적인 오류나 허점 때문에 발생합니다. 코드를 신중하게 작성하고 테스트를 열심히 하는 것 밖에는 예방책이 없습니다. 결제가 잘못되었을 때를 대비해 로그를 남기고, 주기적으로 비교하는 것은 좋은 아이디어입니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 12월 13일
패킷 손실에 대비하는 방법은 다양하며, 시스템 복잡도, 성능 요구사항 및 예산 등 여러 요인을 고려해 결정되어야 합니다. 여기에는 일부 전략이 포함될 수 있습니다: 1. **타임아웃과 재전송:** 패킷이 일정 시간 내에 도달하지 않으면 손실됐다고 가정하고 같은 패킷을 재전송하는 간단한 전략입니다. 2. **오류 확인 및 자동 재전송(ARQ):** 패킷의 도착을 확인하는 데 사용할 수 있는 몇 가지 프로토콜이 있습니다. 예를 들어, TCP는 ARQ 메커니즘을 사용하여 모든 패킷이 올바르게 전달되는지 확인합니다. 3. **핸드셰이크 프로세스:** 클라이언트와 서버가 연결된 상태를 유지하게 되므로 어떤 데이터가 전송되었는지 알 수 있습니다. 4. **응용 프로그램 계층에서의 에러 체크:** 결제처럼 중요한 데이터를 처리할 때 데이터 일관성을 유지하기 위해 응용 프로그램 계층에서 추가 오류 검사를 수행할 수 있습니다. 예를 들어, 결제가 성공했다는 메시지를 받았을 때 API 호출을 다시 실행하여 결제가 실제로 이루어졌는지 확인한다거나, 무결성 체크 등을 할 수 있습니다. 5. **데이터베이스 트랜잭션:** ACID 속성(원자성, 일관성, 고립성 및 지속성)을 준수하는 데이터베이스 트랜잭션은 패킷 손실에 대비하는 데 유용한 메커니즘입니다. 6. **분산 시스템에서의 복제:** 패킷 손실에 대비하고 복구력을 높이기 위해 데이터를 여러 위치에 복제할 수 있습니다. 진짜 중요한 것은 어떤 전략이든 요구되는 시스템의 가용성 및 안정성 요구사항에 맞게 설계된 것이며, 잠재적인 실패 시나리오를 적절하게 처리하는 것입니다. 그래서 주기적으로 로그와 실거래 현황을 비교하고 관리하는 작업도 중요합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!