Пятница, 23:47. PagerDuty: “Платёж AmEx, провайдер вернул 5xx три раза подряд, билеты не зарезервированы.” Открываю логи – действительно 3 ответа провайдера с 5xx, ни одной успешной транзакции по нашей базе. Закрываю как временный сбой на стороне провайдера, пишу короткую сводку в дежурный чат и иду досматривать. Через 40 минут второй алерт – уже от ночной поддержки: клиент прислал скрин выписки, 3 списания подряд за одну бронь. У клиента рейс через 6 часов, ему нужна действующая бронь и подтверждение, что он завтра нормально улетит, а не тикет в поддержку.
Рубрика «идемпотентность»
Idempotency keys: 5 граблей, которые мы поймали на проде
2026-05-27 в 1:32, admin, рубрики: .net, api, C#, idempotency, intent-key, race condition, грабли, идемпотентность, платежи, распределенные системыИдемпотентность в backend: как перестать дублировать операции
2026-03-23 в 11:45, admin, рубрики: backend, идемпотентностьВы когда-нибудь получали два списания с карты за одну покупку? Или видели дважды созданный заказ после одного клика? Это не баг платёжной системы — это баг вашего кода. Имя этому баг — отсутствие идемпотентности.
Что вообще происходит?
Представьте: пользователь нажал «Оплатить». Запрос улетел на сервер, но ответ не пришёл — таймаут. Клиент думает: «Что-то пошло не так» — и повторяет запрос. На сервере тем временем первый запрос успешно выполнился. Итог: деньги списаны дважды, пользователь в ярости, вы — на ночном дежурстве.
Или другой сценарий: Stripe отправил вам webhook payment.succeededЧитать полностью »
Стандарт решения проблемы двойных списаний в финтех, или О чем спросят системного аналитика на собеседовании
2026-03-15 в 5:45, admin, рубрики: асинхронность, идемпотентностьВсем привет! Меня зовут Наташа, и я системный аналитик. Сейчас я в поиске работы, сходила на пару собеседований, и хочу описать ответы на некоторые вопросы, которые там встречались — некая рефлексия для меня, и надеюсь, эти короткие статьи будут полезны и еще кому‑то.
Итак, кейс:
Пользователь банка хотел перевести 100р другу, а потом нажал на кнопку «Перевести» нечаянно пять раз — как предотвратить отпра вку 5 раз по 100р?
На собеседовании я почему-то не дала очевидный ответ с синхронным взаимодействием и блокировкой кнопки, сразу пошла рассуждать об асинхронной версии.
Паттерн Transactional Outbox
2025-02-02 в 14:15, admin, рубрики: outbox, transactional outbox, атомарность, идемпотентность, Программирование, согласованность, транзакцииКакую потенциальную проблему видите в коде?
await _applicationService.Create(application);
await _queue.Publish(new ApplicationCreatedEvent(application));
Сначала создается заявка в БД, после событие о создании отправляется в брокер сообщений(MQ) для оповещения другого сервиса о появлении новой заявки.
Здесь может произойти ошибка в момент отправки события в очередь, когда наша сущность уже создана в БД.
Это приведет к несогласованному состоянию, так как заявка будет хранится только в нашей системе, а другая система не узнает о ней.
Стажёр Вася и его истории об идемпотентности API
2019-03-12 в 8:52, admin, рубрики: api, Блог компании Яндекс, идемпотентность, интерфейсы, Разработка веб-сайтов, разработка мобильных приложений, яндексИдемпотентность — звучит сложно, говорят о ней редко, но это касается всех приложений, использующих API в своей работе.
Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси. Сегодня я поделюсь с читателями Хабра описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте. Для этого я выбрал формат вымышленных историй о стажёре Васе, который только-только учится работать с API. Так будет нагляднее и полезнее. Поехали.

