RU

Строка «resumes from where it stopped» увела меня в ветку форума 2021 года и в пять вопросов к движку автоматизации

Строка из документации n8n про возобновление с места остановки читается как гарантия перезапуска с точки сбоя. Проверка привела в ветку форума 2021…

n8nавтоматизация процессовworkflowнадёжностьидемпотентностьвебхукиЯндекс 360low-code
Habr
RU

AVM изнутри задачи, сбои и состояние виртуальных машин

В первой части мы разобрали, почему Aeza ушла со сторонней платформы и как AVM устроен в общих чертах. Здесь уровень ниже: путь запроса от вызова до…

AezaAVMвиртуализациявиртуальные машиныlibvirtgRPCраспределённые системыотказоустойчивостьидемпотентностьstate machine
Habr
RU

Rich Messages в Telegram Bot API: как превратить одно сообщение в интерактивный интерфейс

Telegram показал Rich Messages с интерактивными кнопками на примере шахмат. Я захотел проверить подход на более насыщенном сценарии и…

telegram bot apirich messagesserver-driven uistate machinecallback queryидемпотентность
Habr
RU

Дедупликации нет: два приказа по одному человеку поднимают два запуска. Ключ придётся держать в 1С

Вопрос, который я задал себе и своей команде: что произойдёт, если по одному сотруднику из кадровой системы прилетят два запроса на&n…

входящий вебхукдедупликацияидемпотентностьпровижинингинтеграция с 1Сучётные записиЯндекс 360 APIаудит-лог
Habr
RU

Как тестировать распределенные системы: тайм-ауты, дубликаты, Saga и частичные отказы

Распределенная система может сломаться так, что по отдельности все ее части будут выглядеть исправными. Представим обычную оплату заказа: сервис отп…

распределенные системытестированиетайм-аутыидемпотентностьSagaCircuit BreakerFault InjectionChaos Engineeringeventual consistencyмикросервисы
Habr
RU

Необратимая операция: как печатать чек, если непонятно, напечатался ли он

Фискальный накопитель печатает чек — и связь обрывается до того, как пришёл ответ. Напечатался он или нет, узнать неоткуда: обе ситуации выглядят дл…

архитектураидемпотентностьотказоустойчивостьфискализацияrabbitmqконсистентность
Habr
RU

Как корректно описать приём и обработку webhook

Webhook часто воспринимают как простой механизм доставки уведомлений: пришло событие — обработали — вернули 200. На практике име…

системный анализсистемный аналитиктребованияwebhookинтеграцииAPIраспределённые системыидемпотентностьобработка событийотказоустойчивость
Habr
RU

Один платёж — один чек: идемпотентность в интеграции с «Мой налог»

Я делаю сервис по подписке и плачу налог как самозанятый. Пока платежей было три в день, чеки в «Мой налог» можно было выбивать руками. Когда они по…

самозанятыйчекиНПДМой налогФНСидемпотентностьплатеживебхукиPythonAPI
Habr
RU

Оффбординг на автомате: почему «уволен» — слишком поздний сигнал, а «удалить» — шаг, который уже не отыграть

Сценарий увольнения рисуется за пять минут: согласование, резервная копия, вебхук, удаление пользователя. Разбираю, почему такой граф нельзя запуска…

оффбордингонбордингучётные записиавтоматизация процессовидемпотентностьотзыв сессийЯндекс 360резервное копирование
Habr
RU

Интеграция 1С: 6 разрывов между заказом, складом и оплатой

Когда заказ, склад и оплата живут по разным правилам, сбой возникает на стыке систем — там, где нет владельца решения. В статье&…

интеграция 1Сфункциональная архитектурасквозной процесссистемная интеграциятребования бизнесавладельцы данныхконтракты интеграцийидемпотентностьсценарии отказа.
Habr
RU

Референсная архитектура платёжной платформы на.NET: схемы, границы транзакций, модули, кластер

В  прошлой статье  я разбирал платёжную платформу с точки зрения сметы: три слоя, где уходят человеко‑годы, что можно не пи…

архитектурафинтехплатёжная системаledgerидемпотентностьтранзакцииEIP.NETredbмикросервисы
Habr
RU

Все тесты зелёные, платежи зависли: 5 граблей интеграции без песочницы

Осенью 2022-го мы добавляли в наш платёжный агрегатор новый способ оплаты: плательщик уходит по ссылке в приложение своего банка, подтверждает платё…

вебхукиидемпотентностьполингинтеграция платежейплатёжный провайдеротказоустойчивостьтестированиеwebhooks.NETC#
Habr
RU

Spec-driven development в микросервисах, часть 3: archspec investigate — исследование фичи до кода

Третья, заключительная статья из цикла. Часть 1 — где LLM теряет межсервисный контекст и почему локальных спек недостаточно. Часть 2 — archspec как…

spec-driven developmentai-assisted developmentclaude codellmмикросервисыархитектура микросервисовservice contractsoutbox patternидемпотентностьcode review ai
Habr
RU

Весь «вечно живущий» мир моей MMORPG держится на одной строке в кроне

Два года по вечерам в одиночку пилю текстовую MMORPG в Telegram — мрачный остров, по которому ходят выжившие. В прошлой статье рассказал, как заброш…

mmorpgtelegram botcodeigniterphpgamedevсоло-разработкаигровой циклидемпотентностьтекстовая играcron
Habr
RU

Как спроектировать REST API без ошибок: 3 задачи с разбором

Как на собеседовании отличить системного аналитика, который учил REST по учебнику, от того, кто реально проектировал API? В стат…

REST APIпроектирование APIHTTPсистемный аналитикверсионирование APIидемпотентностьдиагностика навыков
Habr
RU

Повторная обработка сообщений в Kafka Consumer

Привет! Меня зовут Дмитрий Михеев, я ведущий разработчик в MAGNIT OMNI — бизнес-группе ритейлера «Магнит», которая отвечает за развитие омниканально…

kafkaapache-kafkakafka-consumerretryповторная-обработкаидемпотентностьвысоконагруженные-системыjava
Habr
RU

Eventual Consistency: как мы починили тормоза апрува и сломали бюджет

Мы убрали одну блокировку, чтобы апрувы перестали тормозить. Через несколько недель из-за этого клиент пробил квартальный бюджет – а наша система эт…

eventual consistencyсогласованность данныхCQRSоптимистичная блокировкаEF Coreпроекцииsagaидемпотентностьраспределённые системыread model
Habr
RU

Реализация Statefull команд в Telegram API

Java Telegram API обманывает разработчиков дубликатами запросов при отключении интернета? Мы команда разработки телеграмм ботов, которая смогла…

telegram apitelegram api manualtelegram api requeststatelessstatefullrace conditionидемпотентностьидемпотентность запросов
Habr
RU

Ecommerce на Laravel, или как мы собрали headless-слой для фронтов (6 часть)

В этой части собираем headless-слой для фронтов: Gateway, композицию API, SDK, ETag, SSR, идемпотентность и единые правила работы с запросами. …

headlesslaravelбитрикспрограммированиевеб-разработаgatewayapisdkидемпотентностьssr
Habr
RU

Idempotency keys: 5 граблей, которые мы поймали на проде

Пятница, 23:47. PagerDuty: “Платёж AmEx, провайдер вернул 5xx три раза подряд, билеты не зарезервированы.” Открываю логи – действительно три ответа…

идемпотентностьidempotencyплатежираспределённые системы.NETC#APIintent-keyrace conditionграбли
Habr
RU

Репликация по DDIA: что я понял, только когда сам сломал прод

В понедельник утром бухгалтер из клиентской компании написала мне в Telegram: «У контрагента в SAP всё оплачено, а в Smartup долг 12 миллионов». Я о…

DDIAрепликацияmulti-leaderраспределённые системысинхронизация данныхSAP Business OneHANAконфликты репликацииlast-write-winsидемпотентность
Habr
RU

Очереди в микросервисах: 5 ошибок, которые приводят к дублям и потерям

Почему добавление второго consumer«а в очередь может привести к двойным списаниям? Разбираем на реальном кейсе: как один Topic с…

очереди сообщениймикросервисыброкеры сообщенийRabbitMQKafkaJMSpublish-subscribecompeting consumersидемпотентностьDead Letter Queue
Habr
RU

Kafka, таксономии и удаление событий: как исключить обработку неактуальных сообщений

В рамках задачи по обработке XBRL-таксономий возникло требование: если таксономия удалена до обработки событий расчёта кэша, эти события не должны п…

kafkaspring bootSpring Kafkajavaмикросервисыtombstone objectsCompacted topiclog compactionconsumerидемпотентность
Habr
RU

Migration toolkit для 1С Битрикс: переносим аккаунт между инстансами через crm.*.list + идемпотентность по ORIGINATOR_ID

В предыдущей статье ( как отдавать лиды из Next.js в 1С Битрикс ) я показывал outbound‑интеграцию: сайт пишет лид к се…

bitrix24миграция CRMREST APIидемпотентностьORIGINATOR_IDNode.jsTypeScript
Habr
RU

Postgres advisory locks на Neon ломаются от TCP-сброса. История четырёх фиксов retry-логики

Расскажу про четыре production-инцидента на одном куске кода за десять дней. В каждом я думал, что разобрался. Закончилось тем, что я выкинул pg_adv…

postgresqladvisory lockneonserverlessretryидемпотентностьdistributed lock
Habr
RU

[Перевод] Паттерны событийно-ориентированной архитектуры в облачном банкинге: что работает, а что ломает систему

Событийно-ориентированная архитектура часто выглядит как аккуратная схема с брокером, сервисами и красивыми стрелками между ними. В продакшене всё п…

event-driven architectureedacloud-nativeбанковские системымикросервисыKafkaoutboxinboxидемпотентность