- PVSM.RU - https://www.pvsm.ru -
В мире API, сервисных архитектур и облачных решений многое доступно вообще без программирования. Однако, компании все еще тратят драгоценное время разработчиков на рутинные задачи по интеграции. Мы хотим рассказать об одной из платформ, которая позволяет нам подключить новомодный маркетинговый сервис или проверить гипотезу максимально быстро и без участия разработки.
Всем привет! Меня зовут Юра Буйлов, и я отвечаю за разработку в CarPrice. Компания развивается динамично, поэтому скорость проведения экспериментов для нас играет важную роль. Сегодня хочу рассказать о простом инструменте, который избавляет разработчиков от бесконечного потока простых однотипных задач по интеграции с внешними сервисами.
Рынок изобилует сервисами, позволяющим менеджерам строить простые цепочки действий, например:
Мы уже активно использовали Zapier для подобных задач, но нам важны self-hosting, масштабируемость и отсутствие ограничений по количеству обрабатываемых задач. Так мы стали искать инструмент для простых и быстрых интеграций, который был бы полезен и менеджерам, и разработчикам. Сам подход не нов и напоминает упрощенную реализацию EIPs (Enterprise Integration Patterns). Естественно, мы попробовали несколько решений из мира “кровавого энтерпрайза” (Mulesoft, Jboss Fuse, WSO2, Servicemix, Corezoid). Вели переговоры с вендорами проприетарного ПО. Все не то: долго, дорого, сложно или неудобно.
Так мы пришли к Huginn.
Для капитальной интеграции мы используем RabbitMQ с адаптерами для каждого сервиса, критичного для работоспособности системы.
Настроен мониторинг размера очередей, доступности сервисов и работоспособности компонент. Однако вносить изменения и поддерживать документацию в актуальном состоянии в такой схеме накладно.
Huginn же используем для экспериментов и простых быстрых интеграций без высоких требований к надежности:
Изначально Huginn – это платформа, которая задумывалась для запуска агентов, которые выполняют ваши задания в интернете. Парсят странички, отслеживают события и выполняют действия от вашего имени. Агенты создают и принимают события, передавая их друг другу по цепочке.
Huginn предоставляет множество встроенных агентов, которые мы можем использовать как настраиваемые элементы своего Pipeline. Агенты могут запускаться по расписанию или принимать события от других агентов, обрабатывать и передавать результат дальше по цепочке.
Для полноценной интеграции нам не хватало только агента, который умеет отслеживать изменения в базе и мы написали его сами, благо в Huginn очень удобно писать своих агентов.
huginn_mysql2_agent [1]
Как оказалось, большинство кейсов мы покрываем тремя агентами:
Ниже представлена одна из первых реализованных цепочек. Агент ежеминутно проверяет новые аукционы в БД по created_at, далее по внутреннему API получает всю информацию по авто и отправляет сообщение в Telegram.
Самое примечательное – это то, что интерфейсы интуитивно понятны, а актуальная конфигурация визуализирована в виде графа. Поэтому подобная интеграция не требует ресурсов разработки и делается силами менеджеров и интернет-маркетологов.
Ниже пример реализации эксперимента по доставке персональных рекомендаций дилерам по sms. Для каждого нового аукциона получаем по API внутренней рекомендательной системы (LSTM RNN) список дилеров, из БД получаем номер телефона, сокращаем ссылку на аукцион с помощью urlshortener и отправляем sms через внешний сервис рассылки.
Далее представлена часть схемы интеграции с маркетинговыми инструментами – сервисом exponea. В ходе ее реализации ни один разработчик не пострадал – реализация и поддержка силами одного менеджера.
Самый простой способ попробовать Huginn – развернуть его в docker.
docker run -it --name huginn
-p 3000:3000
-e ADDITIONAL_GEMS="huginn_mysql2_agent(git: https://github.com/yubuylov/huginn_mysql2_agent.git),huginn_jsonapi_agent(git: https://github.com/yubuylov/huginn_jsonapi_agent.git)"
huginn/huginn
http://localhost:3000/ [3]
Логин: admin, Пароль: password
Можно использовать внешнюю базу MySQL и отдельно запускать разные инстансы для web интерфейсов и обработчиков событий, что позволяет с легкостью масштабироваться.
Спасибо за внимание. Надеюсь, данная заметка будет полезна, а Huginn кому-то поможет освободить немного времени для крутых проектов!
Оф.репозиторий: github.com/huginn/huginn [4]
Установка в docker: github.com/huginn/huginn/blob/master/doc/docker/install.md [5]
Production environment: github.com/huginn/huginn/tree/master/docker/single-process [6]
Список агентов: huginnio.herokuapp.com/agents [7]
Автор: yubuylov
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/257314
Ссылки в тексте:
[1] huginn_mysql2_agent: http://huginnio.herokuapp.com/agents#Mysql2Agent
[2] liquid шаблонов: https://shopify.github.io/liquid/
[3] http://localhost:3000/: http://localhost:3000/
[4] github.com/huginn/huginn: https://github.com/huginn/huginn
[5] github.com/huginn/huginn/blob/master/doc/docker/install.md: https://github.com/huginn/huginn/blob/master/doc/docker/install.md
[6] github.com/huginn/huginn/tree/master/docker/single-process: https://github.com/huginn/huginn/tree/master/docker/single-process
[7] huginnio.herokuapp.com/agents: http://huginnio.herokuapp.com/agents
[8] Источник: https://habrahabr.ru/post/330382/
Нажмите здесь для печати.