Интерфейс есть, серверной части нет
Кабинет или приложение делает другая команда, и ей нужен API: понятный, документированный и с тестовым стендом, а не набор адресов в переписке.
Бэкенд — серверная часть, к которой обращаются кабинет, сайт, мобильное приложение, 1С и другие системы: она хранит данные, проверяет права и исполняет правила. Мы разрабатываем REST API с документацией OpenAPI, интеграционные сервисы между системами, бэкенд внутренних сервисов, обработчики событий и очередей. Отдельно закладываем версии, единый формат ошибок, защиту от повторных запросов, ограничение частоты и журнал. Исходники и сервер остаются у вас.
Обследование — 200 000 ₽, 2–3 неделиЛёгкий пилот одного API — 150 000–400 000 ₽Документация OpenAPI и тестовый стенд к приёмке
Кабинет или приложение делает другая команда, и ей нужен API: понятный, документированный и с тестовым стендом, а не набор адресов в переписке.
Выгрузка в таблицу, письмо, загрузка в другую систему. Нужен сервис в центре, который принимает, проверяет, преобразует и передаёт данные.
Обмен писали давно, журнала нет, потерянное сообщение не найти. Нужен сервис, где видна каждая попытка, а недоставленное остаётся в списке, а не исчезает.
Нужны отдельные ключи на каждого, права по операциям, ограничение частоты, документация и возможность отозвать доступ, не остановив остальных.
Задача началась как скрипт по расписанию, теперь это десяток режимов и исключений. Пора разделить приём, обработку и очередь.
Вебхуки площадок и платёжных провайдеров, сигналы оборудования. Нужен приёмник с проверкой подписи (где отправитель её поддерживает), очередью и защитой от дублей.
Состав и проверки при приёмке записываются в обследовании, поэтому на сдаче никто не спорит о том, что считать готовым.
Шесть пунктов, которые записываем в контракт до кода. Подробный разбор каждого есть в статье про проектирование API для интеграций, здесь только что фиксируем и что решаете вы.
Скорость и предел нагрузки зависят от вашего профиля, поэтому в общем виде цифр мы не называем. Вместо этого фиксируем, что и как измеряем.
Протокол испытаний пишется до начала разработки. В нём каждая операция с ожидаемым результатом, включая ошибочные случаи: неверные данные, чужой объект, просроченный ключ, повтор запроса. Автоматические проверки сверяют схемы и коды ответов с описанием OpenAPI и запускаются при каждой сборке, а смысл полей и порядок операций проходят по сценариям протокола.
Для каждой роли и каждого ключа пробуем открыть чужие данные, подставив чужой идентификатор. Это типовая уязвимость API: нарушение авторизации на уровне объектов входит в число главных рисков по списку OWASP API Security, поэтому проверяем её отдельно.
Отключаем смежную систему, обрываем соединение посреди записи, отправляем одно событие дважды, перезапускаем сервис с непустой очередью. Нормальный результат: сообщения не пропадают молча (недоставленное видно в журнале), дублей нет, ответственному ушло оповещение.
Сначала договариваемся о профиле: сколько пользователей и систем обращается, какие операции самые частые, когда бывают пики, как быстро растёт объём данных. Проверяем на стенде, близком по конфигурации к боевому серверу, с обезличенными или сгенерированными данными сопоставимого объёма. В протокол попадают измеренные значения для вашего профиля, а не обещание «выдержит столько-то»; при смене сервера или базы замер повторяется. Нагрузочные испытания относятся к выводу в эксплуатацию, а в пилотах профиль только фиксируется. Узким местом может оказаться база данных или чужая система, а не код сервиса.
Отдельный сервис оправдан, когда систем три и больше и обмены сложнее простой пересылки или когда нужен разбор расхождений постфактум; между двумя системами прямой обмен может оказаться дешевле. Если задача — просто связать 1С с сайтом, CRM или маркетплейсом, начните со страниц про интеграцию 1С и про интеграции и сопровождение.
Стандартный формат там, где он есть, свой код там, где его нет. Для сайта и 1С это разобрано на странице про интеграцию сайта с 1С и в статье про обмен по CommerceML.
Прямых связей становится много, и сервис в центре начинает окупаться: правила преобразования и журнал пишутся один раз. Он принимает данные от любой стороны, приводит к общему виду, хранит очередь и журнал, а каждая система знает только про него. Изменение на одной стороне правится в одном месте. Цена такого решения: ещё один сервис в эксплуатации и точка отказа в центре. Поэтому выбор между прямой связью и сервисом записываем в обследовании вместе с причиной.
Какая система главная при расхождении, решается до написания кода и записывается в схему обмена. Без этого сервис в центре просто быстрее множит дубли. Для связки с CRM схема описана в статье про типовые схемы интеграции 1С с CRM.
Цены — по тарифам. Точная цена только у обследования, дальше вилка, которая сужается по его результатам.
Потребители и их запросы, объекты и операции, права, схема обмена, требования к надёжности, профиль нагрузки, вилка бюджета. Вычитается из первого этапа, если продолжаете с нами.
Если в обмене участвуют 1С, CRM, сайт, склад и платёжный провайдер: схема обменов, матрица источников истины, требования к очередям и журналу.
Сначала контракт OpenAPI, затем набор операций или один обмен на ваших данных, тестовый стенд, журнал, протокол испытаний. Лёгкий пилот от 150 000 ₽ — один API или одна связка на ваших данных, а не готовая интеграционная платформа.
Работающий интеграционный сервис на боевых данных: очередь, повторы, защита от дублей, оповещения, подключение боевых систем, регламент эксплуатации. Это MVP, а не система в ежедневной эксплуатации. Резервные копии с проверкой восстановления, нагрузочные испытания и полный мониторинг относятся к выводу в эксплуатацию; в первой версии — копия по расписанию и оповещение о недоступности.
Рабочая система в ежедневной эксплуатации: опытная эксплуатация, нагрузочные испытания по согласованному профилю, полный мониторинг, резервные копии с проверкой восстановления, обучение, передача исходников и инструкций.
Мониторинг, разбор сбоев, правки при изменениях на чужой стороне. Три пакета часов, ставка сверх пакета — 5 000 ₽ в час.
Выясняем, кто будет вызывать интерфейс и что ему нужно, какие данные и в какой системе главные, каковы пики нагрузки и что должно происходить при сбое. На выходе документ, с которым можно идти в тендер и сравнивать предложения, в том числе не наши.
Порядок один и для пилота: сначала согласованный объём работ (обследование или, для небольшого пилота, разговор и письменный список «входит / откладываем»), затем контракт OpenAPI. Пишем описание и формат ошибок, согласуем их с командой клиента до кода. Это позволяет команде кабинета или приложения начать работу параллельно, на заглушках.
Собираем операции короткими итерациями. Раз в две недели показываем работающую версию на тестовом стенде, проверки на соответствие описанию запускаются при каждой сборке.
Сначала тестовые контуры смежных систем; если их нет, работаем на копии базы в вашем контуре. Потом боевые данные в режиме чтения, без выноса за пределы вашего периметра. На стенде используем обезличенные или сгенерированные данные. Запись на боевую сторону включаем последней, первые обмены смотрим вместе.
Передаём исходники, инструкции и доступ к журналу. Сопровождение у нас или у вас: решаете вы.
Один потребитель с одним ключом и десяток партнёров со своими правами — разный объём проверок и разный объём документации.
У смежной системы может не быть документации, тестового контура или стабильного формата. Тогда часть бюджета уходит на выяснение, как она на самом деле работает.
Очередь, повторы, оповещения, разбор расхождений и защита от дублей увеличивают объём работ по сравнению с обменом «отправил и забыл».
Если справочники ведутся в нескольких местах и противоречат друг другу, первые недели уходят на правила сопоставления, а не на код.
Ресурсы и операции, формат ошибок, ключ идемпотентности, постраничная выдача, вебхуки и документация OpenAPI.
Файлы, порядок запросов, типовые поломки и момент, когда формата уже не хватает.
Кто главный для каких данных, где обмен ломается и когда готового коннектора мало.
Что записать, чтобы оценка и приёмка опирались на один документ.
Сорок минут созвона: кто будет обращаться к интерфейсу, какие системы участвуют, что должно происходить при сбое. По итогам скажем, с какой ступени начинать и в какую вилку это укладывается.
Один API или одна связка проверяются лёгким пилотом: 150 000–400 000 ₽ и 2–8 недель, первым шагом идёт контракт OpenAPI. Точная цена только у обследования: оно стоит 200 000 ₽ за один-два процесса и 350 000 ₽, если в обмене несколько систем, и вычитается из первого этапа, если продолжаете с нами. Дальше цена идёт вилкой, которая сужается по его итогам. Первая версия интеграционного сервиса с очередями и несколькими системами на боевых данных (в тарифах «Пилот, тяжёлый») — 400 000–1 200 000 ₽ за 2–3 месяца. Вывод в эксплуатацию идёт отдельной ступенью от 1 500 000 ₽ этапами по 300 000–700 000 ₽.
Бэкенд — вся серверная часть: данные, правила, фоновые задачи, очереди. API — та её часть, которая открыта другим программам. Бывает бэкенд без внешнего API, если доступ нужен только своему интерфейсу, и бывает API-обёртка над чужой системой.
Не обязательно. По умолчанию берём REST с данными в JSON, он описывается в OpenAPI. Если смежная система умеет только SOAP или файловый обмен, подстраиваемся под неё. Причину выбора записываем в обследовании.
Стандартный обмен закрывает типовую схему между 1С и сайтом. Интеграционный сервис нужен, когда систем три и больше и обмены сложнее простой пересылки, когда данные нужно преобразовывать сложнее стандартного обмена или когда важен журнал каждой попытки и разбор расхождений постфактум.
Ключ идемпотентности для операций записи, проверка подписи входящих событий там, где отправитель её поддерживает, и проверка их идентификатора, очередь с повторами и список недоставленного. Чужая система может упасть, но сообщения не пропадают молча: доставка «не меньше одного раза» плюс защита от дублей, а недоставленное остаётся в списке и в журнале. Если отправитель не умеет повторять запрос, это записывается в схему обмена как риск. Оповещение о сбое уходит вашему ответственному сразу, а не после жалобы клиента.
Заранее и в общем виде не скажем: «выдержит» относится к вашему профилю нагрузки и проверяется, а не обещается. Профиль (пользователи, самые частые операции, пики, рост данных) фиксируем на обследовании, измеренные значения передаём при выводе в эксплуатацию. Если упираемся в базу или в чужую систему, это записывается в протокол.
Да, если есть исходники или их можно восстановить. Сначала разбор состояния: сборка, документация, тесты, схема данных. Потом цена. Брать на доработку то, чего не видели, нельзя.
Сопровождение берём ежемесячно: 20 000, 60 000 или 120 000 ₽ в месяц (до 4, 12 или 25 часов). В часы входят мониторинг очереди и журнала, разбор сбоев и правки при смене формата или сертификата на чужой стороне. Работы сверх пакета — 5 000 ₽ в час, согласуем до начала.
Мы в Ростове-на-Дону, работаем с заказчиками по всей России: удалённо и в вашем контуре. Доступ к системам и обследование согласуем на старте с вашей службой безопасности.