Интеграции · API

Интеграция сервисов по API

Связываем два сервиса, между которыми сегодня работает человек с двумя открытыми вкладками. Данные ходят сами, а каждое событие видно в журнале со статусом доставки.

Почти в каждой компании есть человек, чья настоящая работа - быть переходником. Он открывает CRM и сервис рассылок и переносит контакты из одного в другой, помечая, кому уже писали. Или берёт заказы из магазина и заводит их в кабинете службы доставки, а потом возвращает трек-номера обратно. Раз в день, а в сезон и чаще.

Стоит это дороже, чем кажется. Час в день - это неделя за квартал, и на неё приходится вся статистика опечаток: заказ, перенесённый дважды, оплата, которую не отметили, потому что человек был в отпуске. Сервисы при этом умеют разговаривать друг с другом сами: у большинства есть API, и вопрос только в том, чтобы кто-то один раз описал правила.

Интеграция, которая молча перестала работать, хуже её отсутствия: про ручной перенос все помнят, а про сломавшийся обмен узнают от клиента.

Что чаще всего связываем

Пара сервисовЧто перестаёт делать человек
CRM и сервис рассылокПереносить контакты и сегменты, помнить, кому уже отправляли
Магазин и служба доставкиЗаводить заказы в кабинете перевозчика и возвращать трек-номер
Платёжный сервис и учётСверять поступления и вручную закрывать оплаченные счета
Онлайн-запись и календарьДублировать записи клиентов в расписание специалистов
Склад и учётная системаСводить остатки после каждой приёмки и отгрузки
Сервис заявок и таблица руководителяСобирать сводку по понедельникам и обновлять её руками

Пара может быть любой. Важно не название сервиса, а есть ли у него API и какая из систем главная по каждому полю.

Как собираем связку

  1. Описываем правилаКакое событие запускает обмен, что именно передаётся, какая система главная по каждому полю и что делать, когда данные разошлись. Полчаса разговора здесь экономят неделю переделок потом.
  2. Проверяем, что умеет APIЧитаем документацию обоих сервисов: ограничения по количеству запросов, права токенов, формат данных и то, чего в API просто нет. Иногда именно на этом шаге задача меняется.
  3. Обкатываем параллельно с людьмиСначала тестовые аккаунты, потом несколько дней обмен работает рядом с ручным переносом. Сверяем, что система делает ровно то же самое.
  4. Включаем контроль и передаёмЖурнал событий, повторы, оповещение ответственному. Показываем, где смотреть статус и как повторить событие руками, чтобы не звать нас по каждому поводу.

Отдельно про надёжность, потому что именно на ней экономят. Сервисы падают, токены протухают, лимиты запросов заканчиваются - обмен должен это переживать. Поэтому каждая связка умеет три вещи: повторить неудачную попытку через нарастающий интервал, не создать дубль при повторе и записать в журнал, что ушло, куда и с каким ответом. Если после серии попыток не получилось, ответственный получает сообщение.

Что делать, когда у сервиса нет API
  • Сначала ищем выгрузку по расписанию: файл на почту, csv в облако, отчёт по постоянной ссылке. Обмен файлами выглядит некрасиво, но работает годами и почти не ломается.
  • Смотрим вебхуки и готовые коннекторы: у части сервисов вместо полноценного API есть только они, и для нужного сценария этого хватает.
  • Проверяем соседей: иногда данные проще забрать из системы, куда сервис их и так отдаёт, чем добывать из него самого.
  • В крайнем случае автоматизируем интерфейс - робот делает то же, что человек. Так можно, но ломается это при каждом редизайне и стоит дороже в поддержке. Мы говорим об этом до начала работы, а не после.
  1. Начинаем с правил обмена: какое событие, что передаём, кто главный по каждому полю.
  2. Каждое событие пишется в журнал, неудачные попытки повторяются без дублей.
  3. Молчащих сбоев не бывает: если обмен встал, ответственный узнаёт первым.
  4. Когда API нет, называем обходной путь и его настоящую цену в поддержке.

Три варианта связки

Отличаются количеством сценариев и тем, насколько сервисы готовы к обмену: одна задача в одну сторону, полноценный двусторонний обмен или случай, где нормального API нет вовсе.

Одна связка

Для понятной задачи в одну сторону: перенести заявки, отправить заказ, обновить статус.

от 35 000 ₽

Разово. Одна-две недели, если у обоих сервисов есть API.

  • Описание правил обмена и согласование сценария
  • Один сценарий между двумя сервисами
  • Повторы при сбоях и защита от дублей
  • Журнал событий со статусом доставки
  • Две недели наблюдения после запуска

Подойдёт, когда сценарий один и он понятен. Не подойдёт, если у сервиса нет API и нужен обходной путь.

Чаще всего берут

Двусторонний обмен

Для пары систем, которые должны видеть изменения друг друга, а не только получать данные.

от 90 000 ₽

Разово. От трёх недель, зависит от количества сценариев и капризности API.

  • Обмен в обе стороны с правилами приоритета
  • Несколько сценариев: создание, изменение, отмена
  • Сопоставление справочников и разбор конфликтов
  • Перенос накопленных данных при запуске
  • Панель с журналом и ручным повтором события
  • Месяц сопровождения

Основной вариант, когда обе системы живые и данные меняются в обеих. Избыточен для выгрузки раз в квартал.

Сервис без API

Для случая, когда нужный сервис не собирался ни с чем дружить.

от 180 000 ₽

Разово. Срок называем после разбора того, что сервис вообще умеет отдавать.

  • Разбор возможностей сервиса: выгрузки, вебхуки, коннекторы
  • Обмен файлами по расписанию или автоматизация интерфейса
  • Промежуточное хранилище с историей переданных данных
  • Усиленный мониторинг: обходные пути ломаются чаще
  • Инструкция на случай изменений на стороне сервиса
  • Три месяца сопровождения

Для отраслевых и старых систем без нормального API. Не берите, если API есть у обоих сервисов - переплатите.

Частые вопросы

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

Из того же направления. Полный список с ценами - в каталоге услуг.