Связываем два сервиса, между которыми сегодня работает человек с двумя открытыми вкладками. Данные ходят сами, а каждое событие видно в журнале со статусом доставки.
Почти в каждой компании есть человек, чья настоящая работа - быть переходником. Он открывает CRM и сервис рассылок и переносит контакты из одного в другой, помечая, кому уже писали. Или берёт заказы из магазина и заводит их в кабинете службы доставки, а потом возвращает трек-номера обратно. Раз в день, а в сезон и чаще.
Стоит это дороже, чем кажется. Час в день - это неделя за квартал, и на неё приходится вся статистика опечаток: заказ, перенесённый дважды, оплата, которую не отметили, потому что человек был в отпуске. Сервисы при этом умеют разговаривать друг с другом сами: у большинства есть API, и вопрос только в том, чтобы кто-то один раз описал правила.
Интеграция, которая молча перестала работать, хуже её отсутствия: про ручной перенос все помнят, а про сломавшийся обмен узнают от клиента.
Что чаще всего связываем
Пара сервисов
Что перестаёт делать человек
CRM и сервис рассылок
Переносить контакты и сегменты, помнить, кому уже отправляли
Магазин и служба доставки
Заводить заказы в кабинете перевозчика и возвращать трек-номер
Платёжный сервис и учёт
Сверять поступления и вручную закрывать оплаченные счета
Онлайн-запись и календарь
Дублировать записи клиентов в расписание специалистов
Склад и учётная система
Сводить остатки после каждой приёмки и отгрузки
Сервис заявок и таблица руководителя
Собирать сводку по понедельникам и обновлять её руками
Пара может быть любой. Важно не название сервиса, а есть ли у него API и какая из систем главная по каждому полю.
Как собираем связку
Описываем правилаКакое событие запускает обмен, что именно передаётся, какая система главная по каждому полю и что делать, когда данные разошлись. Полчаса разговора здесь экономят неделю переделок потом.
Проверяем, что умеет APIЧитаем документацию обоих сервисов: ограничения по количеству запросов, права токенов, формат данных и то, чего в API просто нет. Иногда именно на этом шаге задача меняется.
Обкатываем параллельно с людьмиСначала тестовые аккаунты, потом несколько дней обмен работает рядом с ручным переносом. Сверяем, что система делает ровно то же самое.
Включаем контроль и передаёмЖурнал событий, повторы, оповещение ответственному. Показываем, где смотреть статус и как повторить событие руками, чтобы не звать нас по каждому поводу.
Отдельно про надёжность, потому что именно на ней экономят. Сервисы падают, токены протухают, лимиты запросов заканчиваются - обмен должен это переживать. Поэтому каждая связка умеет три вещи: повторить неудачную попытку через нарастающий интервал, не создать дубль при повторе и записать в журнал, что ушло, куда и с каким ответом. Если после серии попыток не получилось, ответственный получает сообщение.
Что делать, когда у сервиса нет API
Сначала ищем выгрузку по расписанию: файл на почту, csv в облако, отчёт по постоянной ссылке. Обмен файлами выглядит некрасиво, но работает годами и почти не ломается.
Смотрим вебхуки и готовые коннекторы: у части сервисов вместо полноценного API есть только они, и для нужного сценария этого хватает.
Проверяем соседей: иногда данные проще забрать из системы, куда сервис их и так отдаёт, чем добывать из него самого.
В крайнем случае автоматизируем интерфейс - робот делает то же, что человек. Так можно, но ломается это при каждом редизайне и стоит дороже в поддержке. Мы говорим об этом до начала работы, а не после.
Начинаем с правил обмена: какое событие, что передаём, кто главный по каждому полю.
Каждое событие пишется в журнал, неудачные попытки повторяются без дублей.
Молчащих сбоев не бывает: если обмен встал, ответственный узнаёт первым.
Когда API нет, называем обходной путь и его настоящую цену в поддержке.
Три варианта связки
Отличаются количеством сценариев и тем, насколько сервисы готовы к обмену: одна задача в одну сторону, полноценный двусторонний обмен или случай, где нормального API нет вовсе.
Одна связка
Для понятной задачи в одну сторону: перенести заявки, отправить заказ, обновить статус.
от 35 000 ₽
Разово. Одна-две недели, если у обоих сервисов есть API.
Описание правил обмена и согласование сценария
Один сценарий между двумя сервисами
Повторы при сбоях и защита от дублей
Журнал событий со статусом доставки
Две недели наблюдения после запуска
Подойдёт, когда сценарий один и он понятен. Не подойдёт, если у сервиса нет API и нужен обходной путь.
Чаще всего берут
Двусторонний обмен
Для пары систем, которые должны видеть изменения друг друга, а не только получать данные.
от 90 000 ₽
Разово. От трёх недель, зависит от количества сценариев и капризности API.
Обмен в обе стороны с правилами приоритета
Несколько сценариев: создание, изменение, отмена
Сопоставление справочников и разбор конфликтов
Перенос накопленных данных при запуске
Панель с журналом и ручным повтором события
Месяц сопровождения
Основной вариант, когда обе системы живые и данные меняются в обеих. Избыточен для выгрузки раз в квартал.
Сервис без API
Для случая, когда нужный сервис не собирался ни с чем дружить.
от 180 000 ₽
Разово. Срок называем после разбора того, что сервис вообще умеет отдавать.
Обмен файлами по расписанию или автоматизация интерфейса
Промежуточное хранилище с историей переданных данных
Усиленный мониторинг: обходные пути ломаются чаще
Инструкция на случай изменений на стороне сервиса
Три месяца сопровождения
Для отраслевых и старых систем без нормального API. Не берите, если API есть у обоих сервисов - переплатите.
Частые вопросы
Сколько времени занимает интеграция двух сервисов?
Простой сценарий в одну сторону - одна-две недели вместе с обкаткой. Двусторонний обмен со справочниками - от трёх недель. Дольше всего идут не работы, а согласование правил: что считать источником правды и что делать при конфликте данных.
Что будет, когда сервис поменяет своё API?
Рано или поздно это происходит у всех. Обмен в этот момент не начинает молча врать - он останавливается и сообщает об ошибке, а события ждут в очереди. Правка под новую версию API занимает обычно несколько часов и входит в сопровождение.
Где живёт интеграция и кому она принадлежит?
Код разворачиваем на вашем сервере или в вашем облаке, ключи и токены остаются у вас. Исходники и описание того, как устроен обмен, передаём вместе с работой: продолжить сможет любой разработчик, не только мы.
Сколько стоит содержать связку?
Первый месяц наблюдения входит в работу. Дальше это либо разовые обращения по факту, либо сопровождение от 25 000 ₽ в месяц, если связок несколько и нужен постоянный присмотр за журналом.
Чем это отличается от интеграционного шлюза?
Точечная связка соединяет два сервиса напрямую и хороша, пока систем две-три. Когда их больше, связи множатся и превращаются в клубок - тогда нужен шлюз с общей очередью событий. Если по описанию видно, что дело идёт к шлюзу, точечную связку продавать не станем.
Смежные услуги
Из того же направления. Полный список с ценами - в каталоге услуг.