Сайт сервиса доставки воды является важной частью основного бизнес-процесса предприятия «Вода Новокурьинская». Посетители, которые приходят на сайт благодаря активностям интернет-маркетинга, должны увидеть безупречный функционал заказа, учитывающий в реальном времени программу лояльности клиента, дату и адрес доставки и открытые временные слоты для него. А затем увидеть реальный статус заказа и получить возможность изменить его, если это допустимо правилами.
Сайт novo-voda разработан на платформе 1С Битриксе, ERP-система тоже 1С. Но интеграция «из коробки» работала некорректно: часть заказов передавалась с задержкой или терялась, данные, статусы и номера заказов различались в двух системах, а пользователи не видели историю и актуальное состояние заказа.
Мы предложили реализовать в проекте асинхронную интеграцию через сервер очередей RabbitMQ. Не спешите закрывать страницу, далее объясним смысл каждого слова.
- Асинхронная означает, что система-отправитель данных не висит в ожидании немедленного ответа от системы получателя — она отдает данные в очередь и продолжает свою работу. Система, читающая очередь, обрабатывает пакеты в своём темпе.
- Двусторонняя означает, что обмен идёт в обе стороны: система A может отправлять сообщения системе B, а система B — системе A.
- Сервер очередей RabbitMQ. Это программное обеспечение, которое позволяет обмениваться данными между различными системами, стандартизируя обмен и максимально исключая влияния одной системы на другую.
Денис, руководитель отдела разработки и сопровождения:
«Реализация такой интеграции делает системы независимыми друг от друга. Например, ты можешь сменить ERP на другую и тебе не придётся переделывать ничего на стороне сайта, пакеты в очередь ты отправляешь того же формата. То же самое и при смене сайта: тебе не нужно что-то переделывать на стороне ERP. Это удобное решение для интернет-магазинов и других веб-сервисов, связанных с внутренними ИС.»
Какие преимущества получил бизнес
- Скорость и устойчивость. Асинхронность позволяет сайту сразу подтвердить приём заказа и показать, например, статус «В обработке», не дожидаясь ответа от ERP. Всплеск заказов не валит ERP, система не «зависает» под нагрузкой.
- Страховка при сбое. В реальной жизни сервисы могут сломаться: у ERP плановая перезагрузка, сетевой сбой или высокая нагрузка. Очередь RabbitMQ сохраняет сообщение: даже если ERP в этот момент «отвалилась», сообщение дождётся её возвращения в строй и будет обработано.
- Гибкость. Сайт может собирать заказы постоянно, а ERP обрабатывает их в своём ритме (например, по расписанию или при появлении свободного курьера). Очередь сглаживает эти пики: сообщения накапливаются и забираются системой, когда она готова.
- Автономность. Системы не вызывают друг друга напрямую. Сайт кладёт сообщение в очередь, ERP забирает его, когда сможет. Это упрощает развитие: если позже вы добавите мобильное приложение для клиентов или систему отслеживания курьеров, им достаточно будет подписаться на ту же очередь — не придётся переписывать логику сайта или ERP.
Процесс:
- Разработали подробное техническое задание, описали события, порождающие обмен данными и сами данные, определили формат пакетов для обмена информацией. (Пакеты - файлы определённого формата, содержащие сведения, которые необходимо передать в другую систему. Формат файла согласовывается при разработке, чтобы обе системы его понимали)
- На стороне 1С модернизировали систему, добавили компоненты, позволяющие работать с очередями, читать и писать пакеты.
- На стороне сайта удалили старую интеграцию и реализовали новую. А потом всё тщательно тестировали по заранее разработанной методике и программе испытаний.
- Попутно реализовали новый функционал гибкой настройки индивидуальных условий доставки.
И теперь личный кабинет передает в 1С новые и изменённые заказы, данные клиентов и запросы истории. В обратную сторону (то есть из 1С в интерфейс личного кабинета) поступают статусы заказов, история, а также обновление товаров, адресов, интервалов доставки и экспедиторов. Корректность контролируется уникальным идентификаторами сообщений и логированием ошибок. Интеграция учитывает сложную бизнес-логику: доступность доставки по адресу, актуальные интервалы, ограничения на изменение и отмену заказа, статус оплаты и повторное оформление.
Результат – обмен стал надежным, клиенты вовремя получают воду. Наша разработка функционирует уже 8 лет и всё это время помогает обеспечивать корректную работу системы, пройдя многие изменения внутренних систем, бизнес-процессов, требований к доставке, сохраняя стабильное функционирование.