+− THE DAILY DIFFdev & AI news
SHIP IT

응답이 사라져도 Stripe는 귀하의 요청을 기억합니다

타임아웃은 서버가 작업을 완료한 후에도 결제를 불확실하게 만들 수 있습니다.

타임아웃은 서버가 작업을 완료한 후에도 결제를 불확실하게 만들 수 있습니다. 이 Under the Hood 설명서는 Stripe API v1의 문서화된 멱등성 계약을 사용하여 안정적인 작업 키, 저장된 응답 재생, 매개변수 및 동시성 제한, 보존 기간 및 결과 조정에 대해 설명합니다.

서면판 읽기 (영어) ↗

이 동영상에서 다루는 내용

  • 멱등성은 작업을 반복하는 의도된 효과와 관련이 있습니다. Stripe API v1은 문서화된 저장된 응답 재생 계약을 추가합니다.
  • 동일한 논리적 작업을 다시 시도할 때는 동일한 키와 매개변수를 사용합니다. 별도의 SDK 호출 또는 애플리케이션 다시 시작 시에도 작업 키를 유지합니다. 완전히 새로운 작업에는 자체 키가 필요합니다.
  • 엔드포인트 실행이 시작된 후 Stripe API v1은 500 오류를 포함하여 첫 번째 요청의 상태와 본문을 저장하고, 다시 시도 시 저장된 응답을 반환합니다.
  • 동일한 키로 매개변수를 변경하면 불일치가 발생합니다. 유효성 검사 실패 및 동시 실행 충돌은 해당 시도에 대한 멱등성 결과를 저장하지 않으므로 다시 시도할 수 있습니다.
  • Stripe는 API v1 키를 최소 24시간 동안 보존하며, 그 이후에는 제거할 수 있습니다. 미해결 네트워크 재시도는 처음 24시간으로 제한하고, 그 후에는 작업을 반복하기 전에 중지하고 조정해야 합니다.
  • 연결이 복구된 후에도 캐시된 500 오류가 계속 재생될 수 있습니다. 원래 작업에 부작용이 있을 수 있으므로 관련 개체, 대시보드 요청 및 웹훅을 사용하여 결과를 확인하십시오.
  • API v2는 다른 재생 의미론을 사용합니다. 키는 이메일, 재고 및 모든 로컬 데이터베이스 작업에 대해 보편적인 정확히 한 번 전달을 설정하지 않습니다.

번역된 스크립트

원래 영어 내레이션에서 번역되었습니다. 사용 가능한 오디오 및 캡션은 YouTube에서 제어합니다.

타임아웃으로 인해 결제가 취소되었습니까?

0:00 타임아웃은 결제가 실패했다는 의미라고 생각합니다. 서버는 응답이 사라지는 동안 완료될 수 있으며, 결제는 아무것도 표시하지 않은 채로 남겨집니다. 재시도가 다시 청구할 수 있는 이유는 무엇입니까? Stripe는 시도를 어떻게 기억합니까? 언제 재시도를 중단해야 합니까? 그리고 한 가지 중요한 세부 사항을 명심하십시오. 기억된 오류는 네트워크 문제보다 오래 지속될 수 있습니다.

0:17 그것에 대해 다시 이야기하겠습니다. 이것은 The Daily Diff, Under the Hood입니다.

멱등성 키는 무엇을 식별합니까?

0:21 멱등성은 작업을 반복하는 것이 한 번 수행하는 것과 동일한 의도된 효과를 가진다는 것을 의미합니다. 멱등성 키는 하나의 논리적 작업을 나타냅니다. Stripe의 API 버전 1은 재시도 시 해당 레이블을 인식하고 저장된 응답을 재생합니다. 커피를 사는 것을 상상해 보십시오. Stripe는 결제 요청을 완료했지만 응답이 돌아오는 길에 손실됩니다. 고객은 스피너를 봅니다. 고객의 은행은 더 흥미로운 해석을 할 수 있습니다. 보호되지 않은 생성 요청은 부작용을 반복할 수 있습니다.

동일한 키로 재시도를 안전하게 만드는 방법은 무엇입니까?

0:45 첫 번째 시도 전에 고유한 키를 첨부하고 재시도를 위해 유지하십시오. 애플리케이션이 다시 시작되면 기록에 있는 작업과 함께 해당 키를 보존하십시오. Stripe의 버전 1 API의 경우 엔드포인트 실행이 시작되면, 첫 번째 요청의 상태와 본문이 저장됩니다. 동일한 키와 매개변수를 다시 보내면 Stripe는 저장된 응답을 반환합니다. 커피는 영수증이 다시 전송되는 동안 그대로 있습니다.

Stripe는 정확히 무엇을 저장합니까?

1:07 다음은 Stripe의 실제 문구입니다. 동일한 키로 재시도하면 저장된 응답이 반환됩니다. 500 오류를 포함하여. 문서는 낙관적으로 이름 지어진 재시도 도우미보다 더 많은 작업을 수행합니다. 고객이 다시 탭합니다. 귀하의 앱은 보류 중인 구매를 재개할지 아니면 다른 구매를 시작할지 결정합니다. 완전히 새로운 커피는 새로운 키를 얻습니다. 모든 네트워크 재시도에 대한 새로운 키는 보호 기능을 무력화합니다.

1:27 동일한 키로 다른 매개변수를 사용하면 불일치가 발생합니다.

요청이 변경되면 어떻게 됩니까?

1:30 매개변수가 유효성 검사에 실패하거나 해당 키를 사용하는 다른 요청이 여전히 실행 중인 경우, Stripe는 해당 시도에 대한 멱등성 결과를 저장하지 않습니다. 해당 요청은 다시 시도할 수 있습니다. 경쟁하는 요청은 충돌을 겪습니다. 이것은 버전 1 규칙입니다. 버전 2는 다르게 작동합니다. 헤더는 시스템 전체에 걸쳐 정확히 한 번 전달을 약속할 수 없습니다. 이메일, 재고 및 데이터베이스는 각각 오류 처리가 필요합니다.

1:52 키는 문서화된 범위 내에서 작업을 보호합니다. Stripe는 버전 1 키를 최소 24시간 동안 보존하며 그 이후에는 제거할 수 있습니다.

기억된 결과는 얼마나 오랫동안 안전하게 재시도할 수 있습니까?

1:59 제거된 키는 새 요청을 실행할 수 있습니다. 미해결 재시도를 첫째 날 안에 유지하십시오. 그 이상이면 중지하고 원래 결과를 조정하십시오. 서버에 여유를 주기 위해 지수 백오프 및 지터를 사용하십시오. 그렇지 않으면 재시도가 불타는 커피숍 밖에 줄을 섭니다. Stripe 라이브러리는 재시도를 처리하지만 라이브러리의 기본값을 확인하십시오. 그 끈적한 오류가 문제입니다.

기억된 오류가 계속 다시 나타나는 이유는 무엇입니까?

2:20 캐시된 500 응답은 연결이 복구된 후에도 계속 재생됩니다. 원래 작업에 부작용이 발생했을 수 있습니다. 개체, 대시보드 및 웹훅을 사용하여 결과를 해결하십시오. 새 키는 작업을 반복할 수 있습니다. 제가 말하는 것을 듣는 것보다 이것을 읽고 싶다면, 매일 아침 귀하의 받은 편지함에 차이점이 도착합니다. daily diff dot dev에서 무료로 제공되며, 아래 링크를 참조하십시오.

이 계약으로 재시도 버튼을 출시할까요?

2:39 평결, Under the Hood. 출시하십시오. 제한된 재시도 및 조정 기능을 갖춘 안정적인 키를 출시하여, 고객이 분산 시스템 교육에 자금을 지원하지 않고도 커피를 얻을 수 있도록 할 것입니다. 그리고 오늘 차이점은 이것입니다. 저는 Axrisi의 Niko입니다. 책임감 있게 병합하십시오.

출처

  1. Idempotent requestsStripe Docs
  2. Designing robust and predictable APIs with idempotencyStripe Engineering — Brandur Leach
  3. Advanced error handlingStripe Docs
  4. HTTP Semantics — RFC 9110 §9.2.2 Idempotent MethodsIETF / RFC Editor

관련 동영상

under-the-hood · ko · 2026. 10. 10.

Shopify는 재고 예약을 MySQL로 옮겼습니다

Shopify는 재고 예약 시스템을 Redis에서 이미 재고 원장을 보유하고 있던 MySQL 데이터베이스로 옮겼습니다. 개별적으로 잠글 수 있는 유닛 행의 경계가 있는 풀을 통해 동시 결제가 SKIP LOCKED를 사용하여 다른 적격 유닛을 선택할 수 있습니다. 이 설계는 또한 트랜잭션 경계, 기본 키 레이아웃, 보충 규칙 및 결제 전반에 걸친 연결 유지

2:58 ↗
under-the-hood · ko · 2026. 9. 24.

SAML, 내부 들여다보기: 서명은 편지 안에

SAML은 거의 모든 업무 앱에 로그인하게 해주며, 그 서명은 서명하는 XML 내부에 있습니다. 내부 들여다보기: 앱, 브라우저, ID 공급자 간의 로그인 과정, 어설션이 어떻게 생겼는지, 왜 정규화가 모든 바이트에 동의해야 하는지, 그리고 왜 2012년부터 2025년까지 동일한 버그 클래스가 계속해서 돌아오는지. Trail of Bits의 "SAML: A

3:02 ↗
under-the-hood · ko · 2026. 9. 21.

Claude가 RSA-896을 인수분해했습니다. 실제 RSA가 깨지는 방법은 다음과 같습니다

9월 19일, Anthropic 엔지니어는 오픈소스 CADO-NFS 체의 GPU 포트인 Claude와 함께 270자리 난수 RSA-896을 인수분해했으며, Cognition의 Devin이 RSA-260을 인수분해한 지 16일 후 2,048개의 유휴 GPU에서 10일 동안 약 30 GPU-년이 소요되었습니다. 내부 정보: 인수분해 기록이 실제로 설정되는 방법

3:39 ↗