Проєкти · європейська платформа управління капіталом
Звірка, що ловить розбіжність того ж дня
Проблема
Звірка запускалася раз на місяць і порівнювала підсумки. Розбіжність, що почалася третього числа, виявлялася першого числа наступного місяця, коли причина була похована під чотирма тижнями записів.
Підхід
Ми перевели звірку на щоденне завдання, яке порівнює на рівні транзакцій, а не підсумків, і зробили кожен шлях запису ідемпотентним, щоб ретрай сам не створював розбіжності. Щоденний звіт називає першу розбіжну транзакцію, а не дельту.
Що було технічно складним
Перехід від підсумків до транзакцій множить порівняння на кожен рядок, і перший чесний запуск піднімає відразу всі дрібні історичні розбіжності. Щоденне завдання мало відділити розбіжність, яка виникла сьогодні, від тієї, що лежить там місяцями, — інакше перший звіт нечитабельний, а кожен наступний ігнорують. Ідемпотентність — друга половина тієї самої задачі: ретрай, який перепроводить рух, створює саме ту розбіжність, яку завдання має ловити, тож приймання мало стати безпечним для повтору ще до того, як порівнянню взагалі можна було довіряти.
Одне рішення, і чому
Звіт називає першу розбіжну транзакцію, а не розмір розриву. Дельта каже операційній команді, що щось не так, і лишає її шукати самотужки; ідентифікатор каже, куди дивитися. Це дорожче в обчисленні, бо завдання має тримати впорядковане порівняння замість двох сум, — і це єдина версія, яку хтось справді відкривав двічі.
Інші проєкти
- Дані з машин приходять двічі, із запізненням або ніяк →
Підсумок кожної зміни тепер зводиться до власних показників цеху.
- Демографія для будь-якого контуру, який користувач може намалювати →
- Реєстр навчальних записів, якому довіряють аудитори →
$ розкажіть, що ви будуєте і де застрягли
Забронювати 30-хв дзвінок
Відповідаємо протягом одного робочого дня.