От продуктовых задач до инженерных вызовов
Многие бизнес-задачи сводятся к одному тяжёлому паттерну: есть несколько независимых систем, каждая знает свою часть правды, и нигде эти части не сведены воедино.
Данные приходят в разных форматах, по разным каналам, с опечатками и пропусками, а общего идентификатора, по которому их можно связать, попросту не существует.
FuelMonitor — характерный пример. Две независимые системы учёта: одна знает, сколько ресурса выдали, другая — сколько реально дошло до получателя. Пока они порознь, расхождение доказать невозможно. Мы свели их в одно окно так, чтобы расхождение было видно автоматически по каждой операции.
Связать записи из двух систем, у которых нет общего ключа, а данные «грязные» — опечатки, разные раскладки, дубли, идентификатор внутри другого поля. Решение — многопроходный алгоритм: точное совпадение → нечёткое (с учётом опечаток) → вероятностное восстановление по косвенным признакам. Неуверенные совпадения система не «проглатывает» молча — спорные случаи уходят оператору на подтверждение в один клик.
Два разных канала: файловый обмен в реальном времени (несколько форматов, авто-восстановление после сбоев) и внешнее API с жёсткими лимитами (дробление запросов, мониторинг квоты, различение «нет данных» и «ошибка»). На каждый автоканал — ручной дубль на случай сбоя.
Один экземпляр обслуживает множество клиентов в иерархии «партнёр → клиент». Изоляция проходит сквозь всю систему на уровне архитектуры — чужие данные не увидеть даже правкой адресной строки. Проверяется отдельными автотестами.
Система сама помечает подозрительные записи по правилам — оператор идёт по списку проблем, а не разбирает всё подряд. Аномалии и противоречия между источниками поднимаются наверх автоматически.
Пакетная обработка ускорила импорт в десятки раз (критично при тысячах операций в сутки). Тяжёлые пересчёты — только при реальных изменениях. Ключевые этапы логируются: при разборе инцидентов всегда понятно, где что произошло.



FuelMonitor — один из примеров того, какой уровень сложности мы берём. Делаем веб-сервисы и платформы под ключ — от понятных продуктовых задач до тех, где готового решения не существует и архитектуру с алгоритмами приходится проектировать с нуля.
Если у вас есть задача — от привычной до такой, за которую другие не берутся, — давайте обсудим.