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



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