Инженерия доверия к событиям: как мы ловили и закрывали дыры в гарантиях Exactly-Once после 3 месяцев продакшена

Middle
Backend
Мы построили архитектуру на базе Event Sourcing и Kafka, настроили Outbox/Inbox паттерны и уверовали в надёжность системы. Но спустя 3 месяца эксплуатации в продакшене возник вопрос: как доказать заказчику (и себе), что ни один платеж не потерялся и не продублировался? Слова «Kafka гарантирует» перестали быть аргументом.
Этот доклад — не про теорию транзакционности, а про культуру качества данных и инженерной ответственности. Мы начали строить систему независимых доказательств корректности обработки.

В докладе разберём:
Почему инфраструктурных гарантий недостаточно: где именно ломаются обещания Exactly-Once на уровне бизнес-логики.
Доказательство целостности: как сравнить «Сгенерировано» и «Получено» с помощью счетчиков в Redis и Grafana-алертов на расхождение.
Доказательство отсутствия дублей: SQL-детектор аномалий в финальных бизнес-таблицах, который ловит то, что пропустил Inbox.

Ключевые выводы:
Идемпотентность консьюмера — это база, но не панацея.
Мониторинг инфраструктуры (лаг, ошибки) не заменяет мониторинг бизнес-данных.
Надёжность — это не настройка, а процесс постоянной верификации.
Для кого: Backend-разработчиков, аналитиков, Team Lead’ов, которые строят распределенные системы на Kafka и хотят спать спокойно, зная, что данные консистентны.
О СПИКЕРЕ
Я тот человек, который приходит в разработку не ради красивых слов в резюме, а ради ощущения, что из разрозненных идей можно собрать что‑то цельное и работающее. Мне нравится разбираться в логике систем, искать в них слабые места, выстраивать порядок там, где до этого был хаос. Я спокойно отношусь к рутине, но по‑настоящему оживаю, когда задача требует подумать глубже, чем просто «сделать, чтобы работало». Я ценю ясность в решениях и честность в подходе: если что‑то можно сделать проще — я сделаю проще, если нужно объяснить — объясню так, чтобы понял даже тот, кто в теме поверхностно. Мне важно, чтобы код был не только функциональным, но и понятным тому, кто придёт после меня. И, наверное, главное — я получаю удовольствие от того, что могу превращать сложные вещи в предсказуемые и надёжные.
Сергей Иванов
Aston, Самара
Инженер-программист