Оценка технического задания: как рассчитать сложность интеграции, переноса данных и риски отката
Когда ко мне приходят с просьбой «посмотреть ТЗ на интеграцию», я обычно прошу один и тот же документ — само техническое задание и схему текущей инфраструктуры.
Аврора Шинкарева·Обновлено: 17 июля 2026 г.·10 мин

В девяти случаях из десяти вижу одну и ту же картину: красивое описание будущего результата, внятный список «хотелок» бизнеса и почти пустой раздел про риски. А ведь именно риски — то место, где интеграционные проекты ломаются чаще всего, причём задолго до того, как разработчики напишут первую строку кода. Я часто вижу, как команды стартуют с энтузиазмом, а через три месяца выясняется, что API у поставщика возвращает данные в формате, который не заявлен в ТЗ, или что в исходной CRM половина контрагентов хранится в Excel-вложениях 2018 года. Стоимость таких «открытий» легко умножает бюджет проекта вдвое, а сроки — втрое.
Поэтому грамотная оценка технического задания на интеграцию и перенос данных — это не формальность перед подписанием договора, а рабочий инструмент управления проектом. В этом материале я разберу пять ключевых блоков, на которые стоит смотреть до старта: качество API, чистота исходных данных, метрики сложности, правило «золотой копии» и архитектура плана отката. Подскажу, какие вопросы задавать подрядчику и заказчику, чтобы не превратить миграцию в бесконечный квест.
Аудит API и инфраструктуры: на что смотреть в ТЗ до начала разработки
Первое, что я проверяю в ТЗ, — раздел про интерфейсы взаимодействия. Именно здесь прячется большинство подводных камней. Если в задании написано «есть API» без уточнений, это красный флаг: наличие интерфейса само по себе ничего не гарантирует.
Полнота и качество документации
Хорошая документация API отвечает на три вопроса без обращения к разработчикам поставщика: какие методы доступны, какие параметры принимаются и что возвращается в ответе. Плохая документация — это PDF на 40 страниц с общей архитектурой, но без конкретных примеров запросов и ответов. Я обычно прошу команду подрядчика показать реальный вызов метода и сравнить его с тем, что описано в задании. Если различаются поля, форматы или коды ошибок — это серьёзный сигнал.
Протоколы и форматы обмена
В ТЗ должно быть явно указано, какие протоколы и форматы данных используются: REST или SOAP, JSON или XML. Эта строчка часто кажется формальностью, но именно она определяет трудоёмкость разработки. Например, SOAP с вложенными WSDL-схемами требует значительно больше времени на парсинг и валидацию, чем лёгкий REST с JSON-ответами. Если в задании протокол не указан — это повод запросить уточнение до начала оценки стоимости.
Безопасность и аутентификация
Следующий пункт — как именно API защищает данные. В ТЗ должны быть описаны: тип аутентификации (OAuth 2.0, API Key, JWT-токены), сроки жизни токенов, наличие шифрования при передаче (TLS 1.2+), политика rate limiting (ограничение количества запросов в единицу времени). Если про безопасность ни слова, я обычно закладываю в оценку дополнительное время на согласование с ИБ-отделом заказчика — это может занять от двух недель до месяца.
Качественная оценка ТЗ начинается с трёх простых вопросов: какой протокол, какая документация, какой уровень защиты. Без ответов на них стоимость интеграции невозможно рассчитать корректно.
Скорость ответа и нагрузка
Техническое задание редко содержит конкретные цифры по нагрузке: сколько запросов в минуту планируется, какой объём данных передаётся за один вызов, какие пиковые значения допускаются. Я всегда запрашиваю эту информацию отдельно. Если поставщик API не может дать SLA по времени ответа — это повод заложить в проект асинхронные очереди сообщений (например, RabbitMQ) и буферизацию данных.
Проблема разрозненности: почему 70% компаний спотыкаются на качестве исходных данных
Второй большой блок оценки ТЗ — это аудит исходных данных, которые предстоит переносить или синхронизировать. И здесь статистика неутешительная: по данным исследований, около 70% компаний сталкиваются с проблемой разрозненности данных между отделами. Продажи живут в одной CRM, финансы — в 1С или SAP, логистика — в Excel-таблицах на сетевом диске, а складской учёт — вообще в legacy-системе, которую никто не хочет трогать.
Когда я берусь за оценку такого проекта, первым делом составляю карту источников. Это таблица из четырёх колонок: система, владелец данных, формат хранения, периодичность обновления. Звучит просто, но именно эта карта вскрывает реальную сложность проекта. Например, выясняется, что данные о клиентах хранятся одновременно в CRM, в бухгалтерии и в таблице у менеджера по продажам, причём в каждой системе — свой набор полей и свои правила обновления.
Что проверять в исходных данных
Главный враг миграции — неполнота и устаревание информации. Если в базе 30% контактов с пустыми email, 15% контрагентов без ИНН и десятки дублей с разницей в одну букву в названии — любая интеграция только ускорит распространение этих ошибок в новой системе. Поэтому в ТЗ должен быть отдельный раздел про этап очистки и нормализации данных: кто отвечает за качество, какие правила валидации применяются, как обрабатываются дубли и конфликты.
Я часто рекомендую заказчикам перед стартом интеграции провести «генеральную уборку» данных: удалить архивные записи, унифицировать справочники, выверить связи между сущностями. Это занимает время, но в перспективе экономит недели на отладке. Без такого этапа проект рискует превратиться в бесконечную череду «а почему в новой системе у Иванова Ивана два разных адреса».
Миграция грязных данных не решает проблему хаоса — она его закрепляет в новой системе. Чистка на входе стоит в 5–10 раз дешевле исправления на выходе.
Кто отвечает за качество
В техническом задании должен быть чётко определён владелец данных со стороны заказчика — конкретный человек или роль, которая принимает решения о том, какие записи считать эталонными, как разрешать конфликты и что делать с неполными данными. Без этого интеграционный проект упирается в бесконечные согласования.
Математика сложности: метрики для оценки интеграционных сценариев
Третий блок оценки — собственно сложность будущей разработки. В ТЗ редко пишут «цикломатическая сложность» или «количество повторно используемых интерфейсов», но именно эти метрики позволяют трезво оценить трудоёмкость. Я использую несколько рабочих показателей.
Базовые метрики для оценки ТЗ
| Метрика | Что показывает | На что влияет |
|---|---|---|
| Количество интегрируемых систем | Масштаб проекта и число точек отказа | Общая стоимость, сроки |
| Количество сущностей для синхронизации | Объём маппинга данных | Трудоёмкость разработки и тестирования |
| Число типовых интеграционных сценариев | Покрытие бизнес-процессов | Время на реализацию каждого сценария |
| Среднее время на один сценарий | Производительность команды | Срок проекта при фиксированном бюджете |
| Цикломатическая сложность до/после | Сложность поддержки кода | Стоимость владения системой |
Когда я получаю эти цифры, становится понятно, где проект «дышит», а где задыхается. Например, если в ТЗ пять систем, 40 сущностей и 25 типовых сценариев — это один класс сложности. Если же десять систем, 100 сущностей и 80 сценариев — это совсем другой порядок цифр и, соответственно, бюджета.
Повторное использование интерфейсов
Отдельное внимание стоит уделить тому, какие контракты и интерфейсы можно переиспользовать. Если в компании уже есть наработанная библиотека коннекторов к 1С, SAP или amoCRM, это серьёзно сокращает сроки. Если же каждый интеграционный проект начинается с нуля — стоит заложить время на создание базовых модулей. Хорошее ТЗ содержит раздел про существующие наработки и стандарты разработки.
Оценка через экспертный чек-лист
Универсальной формулы расчёта сложности интеграции, признанной всеми ИТ-компаниями, не существует — это и к лучшему: единого международного стандарта в этой области пока нет, оценки чаще всего строятся на внутренних чек-листах или экспертных суждениях. Я обычно использую набор из 15–20 вопросов, которые помогают структурировать разговор с заказчиком и подрядчиком. Среди ключевых: какие версии API у всех участников, как часто меняются схемы данных, есть ли вебхуки для уведомлений, как обрабатываются транзакции, что происходит при разрыве соединения.
Стратегия «золотой копии» и управление потоками данных
Четвёртый раздел, на который я обращаю внимание в ТЗ, — описание стратегии миграции и хранения данных. Здесь действует правило «золотой копии», которое звучит просто, но критически важно для минимизации рисков.
Что такое правило «золотой копии»
Согласно этому правилу, в любой момент времени при миграции данных у вас должно быть три версии одной и той же информации: оригинал на старом сервере, промежуточная копия для трансформации и целевая версия в новой системе. Ни одна из них не удаляется до полной валидации результата. Это значит, что в проекте нужно чётко прописать: где физически хранится каждая копия, кто имеет к ней доступ, какова политика резервного копирования.
Когда применяется «золотая копия»
Правило особенно актуально для крупных миграций: переход с одной ERP на другую, перенос данных в облако, консолидация нескольких баз в единое хранилище. Если в ТЗ про правило ничего не сказано, я всегда настаиваю на его включении — иначе при первом же сбое восстанавливать данные будет не из чего.
Идемпотентность при работе с очередями
При интеграции через очереди сообщений (Message Queue, например RabbitMQ) важно использовать шаблон проектирования «Идемпотентные операции». Его суть — обработка одного и того же сообщения несколько раз даёт тот же результат, что и однократная обработка. Это критично для отказоустойчивости: если в сети произошёл разрыв и сообщение доставилось дважды, система не должна задвоить запись в базе. В ТЗ стоит явно указать, какие операции считаются идемпотентными и как это реализуется на уровне кода.
Транзакционная целостность
Отдельный вопрос — что происходит, когда миграция прерывается на середине. Если переносится миллион записей и процесс падает на записи номер 500 000, должна быть возможность продолжить с этого места, а не начинать заново. Для этого используются механизмы чек-поинтов, журналирования и отката на контрольную точку. Хорошее ТЗ описывает эти механизмы, плохое — ограничивается фразой «перенос данных в фоновом режиме».
Разработка плана отката: триггеры и регламенты для критических сбоев
Пятый, и, пожалуй, самый недооценённый раздел ТЗ, — план отката (rollback plan). Это документ, к которому обращаются в самый неподходящий момент: когда переключение на новую систему прошло не по плану, бизнес-процессы встали, а на горячую линию звонят клиенты. Если плана нет — команда импровизирует, и это почти всегда заканчивается дополнительными потерями.
Что должно быть в плане отката
Грамотный rollback plan состоит из трёх обязательных элементов. Первый — триггеры отмены: конкретные критерии, при которых переключение признаётся неудачным и запускается процедура возврата. Например: «Если в течение 30 минут после switch day количество успешных транзакций падает ниже 80% от базового уровня — инициируется откат». Без чётких триггеров команда будет спорить до последнего, откатывать или нет.
Второй элемент — шаги восстановления: пошаговая инструкция, как вернуть старую систему в работу. Здесь важна последовательность: сначала останавливаем запись в новую систему, потом переключаем трафик на старую, потом запускаем синхронизацию потерянных данных. Каждый шаг должен быть описан с указанием ответственного и ожидаемого времени выполнения.
Третий элемент — временные рамки. Сколько времени есть на решение об откате, сколько на само восстановление, какой допустимый простой бизнеса. Эти цифры фиксируются до дня переключения и не подлежат обсуждению в процессе миграции — иначе давление со стороны бизнеса приведёт к принятию эмоциональных решений.
План отката — это не паранойя, а страховка. Решение об откате должно приниматься за минуты по объективным критериям, а не за часы в режиме совещания.
Резервное копирование и SLA
В контексте плана отката важно упомянуть три метрики доступности и восстановления. SLA (Service Level Agreement) — согласованный уровень доступности сервиса, например 99,9% uptime. RTO (Recovery Time Objective) — допустимое время простоя, за которое система должна быть поднята после сбоя. RPO (Recovery Point Objective) — допустимый объём потерянных данных, выраженный во времени (например, не более 15 минут потерь). Все три показателя должны быть прописаны в ТЗ и согласованы с бизнесом.
Тестирование плана отката
Сам факт наличия плана не спасает, если он не протестирован. До дня переключения обязательно проводится репетиция: команда отрабатывает сценарий отката на тестовом стенде, проверяет, что резервные копии разворачиваются, что синхронизация работает корректно, что все ответственные знают свои действия. В хорошем ТЗ этот этап прописан отдельной строкой с конкретными датами и результатами.
Что я рекомендую как практик
Подводя итог, я обычно выделяю пять контрольных точек, по которым заказчик и подрядчик могут за пять шагов проверить зрелость технического задания. Первая — наличие в ТЗ раздела про качество API с конкретными протоколами, форматами и метриками. Вторая — описание этапа очистки и нормализации исходных данных с указанием владельца. Третья — метрики сложности: количество систем, сущностей, сценариев. Четвёртая — стратегия хранения данных по правилу «золотой копии». Пятая — детальный план отката с триггерами, шагами и временными рамками.
Если хотя бы по двум из этих пунктов в ТЗ пусто, проект ещё не готов к старту — вне зависимости от того, насколько убедительно звучит презентация подрядчика. Оценка технического задания на интеграцию и перенос данных — это инвестиция в спокойствие команды и бизнеса. Часы, потраченные на детальный аудит до подписания договора, экономят недели паники и миллионы рублей потерь после него.