시간대별 뉴스레터 발송: 견고하고 멱등적인 스케줄링 전략
사용자 시간대에 맞춰 뉴스레터를 정확히 발송하기 위한 세 가지 스케줄링 접근 방식(PostgreSQL, Fugit, 모델 기반)을 비교 분석합니다.
시간대별 뉴스레터 발송: 견고하고 멱등적인 스케줄링 전략
사용자 시간대에 맞춰 뉴스레터를 정확히 발송하기 위한 세 가지 스케줄링 접근 방식(PostgreSQL, Fugit, 모델 기반)을 비교 분석합니다.
Step Functions를 향한 여정 — 2부: DAGs (방향성 비순환 그래프)의 힘
명령형 호출의 한계를 지적하며, 지연된 계산 엔진 및 워크플로우 오케스트레이션에 DAG(방향성 비순환 그래프)가 효과적인 해결책임을 제시합니다.
내구성 있는 실행의 세계: 마샬 가능한 스택의 환상과 멱등성의 현실
내구성 있는 실행은 전자 결제 등 특정 분야에서 필수적이나, 코드의 일시 중지 및 재개에 있어 런타임의 근본적인 한계에 직면합니다.
Вебхуки оплаты ЮKassa, IP-check, event log, idempotency и аварийный capture
Платежный код обычно выглядит ровным ровно до первого реального сбоя. Пока платежи идут по ожидаемому сценарию, кажется, что достаточно создать оплату, дождаться вебхука и обновить локальный статус. Но как только вебхук приходит повторно, приходит позже нужного, прилетает от не того IP, или удаленный платеж уже живет в одном статусе, а локальная база в другом, становится ясно, что платежный контур без защит почти всегда врет. Проблема в том, что вебхук нельзя считать истиной без проверки, нельзя применять без журнала событий, нельзя подтверждать capture случайным ключом, и нельзя оставлять систему без аварийного пути, если автоматический сценарий где-то разошелся. В одном из проектов этот узел был собран так, первый платеж создается с capture=False , входящий webhook проверяется по IP, каждое событие сначала пишется в журнал, потом маршрутизируется в обработчик, capture подтверждается стабильным idempotence key, успешный платеж валидируется по сумме, валюте и metadata, а на случай расхождения остается отдельный ручной confirm, который умеет дочитать фактический статус из ЮKassa и синхронизировать локальную базу. То есть задача тут не просто принять webhook, а построить платежный контур, которому можно верить.
https://habr.com/ru/articles/1044796/
#Django #Python #YooKassa #Webhooks #Idempotency #Payments #Recurring_Payments #API #Fullstack #Backend
Idempotency keys: 5 граблей, которые мы поймали на проде
Пятница, 23:47. PagerDuty: “Платёж AmEx, провайдер вернул 5xx три раза подряд, билеты не зарезервированы.” Открываю логи – действительно три ответа провайдера 5xx, ни одной успешной транзакции по нашей базе. Закрываю как временный сбой на стороне провайдера, пишу короткую сводку в дежурный чат и иду досматривать. Через 40 минут второй алерт – уже от ночной поддержки: клиент прислал скрин выписки, 3 списания подряд за одну бронь. У клиента рейс через 6 часов, ему нужна действующая бронь и подтверждение, что он завтра нормально улетит, а не тикет в поддержку. Мы делали B2B-платформу для деловых поездок: бронь авиа, отели, трансфер, страховка, в финале – оплата корпоративной картой через платежный шлюз. С этой ночи началась история, которая закончилась переписыванием всего платёжного слоя нашего booking-сервиса. По дороге мы поймали 5 граблей.
https://habr.com/ru/articles/1039860/
#идемпотентность #idempotency #платежи #распределённые_системы #NET #C# #API #intentkey #race_condition #грабли

Idempotency is not just an HTTP header or a key lookup. This article covers the failure cases that bite real APIs: different requests with the same key, concurrent retries, partial success, downstream uncertainty, response replay, expiry, and duplicate message handling.
Idempotency Is Easy Until the Second Request Is Different
https://blog.dochia.dev/blog/idempotency/
#HackerNews #idempotency #techblog #softwareengineering #programming #bestpractices

Idempotency is not just an HTTP header or a key lookup. This article covers the failure cases that bite real APIs: different requests with the same key, concurrent retries, partial success, downstream uncertainty, response replay, expiry, and duplicate message handling.
#Idempotency: What, Why & How — deep dive into safe retries in #Laravel
🤔 What is #idempotency? An operation that can be called multiple times while producing the same final effect as calling it once — critical when clients retry failed requests
⚠️ Without idempotency, retries can cause: duplicate orders, double payments, repeated webhook processing, multiple subscription changes & inconsistent audit trails
🧵 👇
State machine design enforces idempotency in financial workflows. Business records hold an explicit state field, and transitions follow predefined rules. Repeated operations on an already-transitioned state produce no additional change.