Выводим программных роботов на третью космическую скорость, или RPA в Linux

image-loader.svg

Программные роботы (RPA) с каждым годом всё больше проникают в IT-инфраструктуру компаний, а доля роботизированных процессов в бизнесе постоянно растет. Чтобы поддерживать увеличивающееся количество автоматизированных процессов организациям необходимы дополнительные вычислительные ресурсы, а значит и дополнительные расходы на инфраструктуру и лицензии ПО. 

Многие профессиональные RPA-разработчики уже давно мечтают о том, чтобы роботов можно было запускать не только под управлением платной требовательной к ресурсам Windows, но и под бесплатной нетребовательной Linux. В этой статье знакомим читателей с возможностью разработки кроссплатформенных процессов с использованием UiPath и подробно разбираем преимущества от использования Linux-роботов.

Статья написана при поддержке технического эксперта UiPath: Валентина Драздова.

Почему роботы появились именно под Windows?

Программные роботы, выполняющие автоматизацию графического интерфейса, являются проверенным инструментом для простого решения сложных задач автоматизации систем, когда у них нет API, или работа с ним является слишком сложной задачей для существующей команды разработчиков. Как правило, такие задачи возникают в первую очередь при взаимодействии со старыми программами и системами, которые были написаны исключительно под ОС Windows. Даже если такие программы и обладали методами взаимодействия, то как правило это были OLE/COM-объекты, которые несовместимы с большинством современных средств разработки. 

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

Как известно, один робот может выполнять только одну задачу в одну единицу времени. Таким образом, если разработчики создадут слишком много процессов для роботизации — потребуется устанавливать роботов на новые сервера или использовать сервер с поддержкой нескольких сессий, а это затраты на дополнительную аппаратную инфраструктуру и лицензии на операционную систему. 

Кроме того, существует проблема поддержания единого окружения для всех роботов — чем больше компьютеров, на которых установлены роботы, тем больше внимания требуется администраторам для того, чтобы везде были одинаковые версии программ и обновлений.

Возможности Linux-роботов

Начиная с версии 2021.10 UiPath предоставляет возможность использовать Linux-роботов. В отличии от Windows-роботов они создавались в основном для роботизации с использованием веб-технологий (веб-сайты и веб-сервисы), а также вызова готовых интеграционных решений от UiPath.

image-loader.svg

Особенности разработки процессов под Linux

Начиная с версии 2021.10 в UiPath Studio доступны три версии процессов:  

  1. Windows-Legacy — так теперь называются классические процессы, которые разрабатывались в предыдущих версиях продукта;

  2. Windows — новые виды процессов, в отличие от классических процессов они поддерживают компиляцию и используют 64-битное адресное пространство, благодаря чему возможно использование большего количества оперативной памяти, а выполнение ускоряется в разы;

  3. Кроссплатформа — новые виды процессов, поддерживающие запуск на любой операционной системе, где могут быть установлены роботы от UiPath. В отличие от Windows-процессов содержат сокращенный набор действий, который может быть расширен загрузкой дополнительных модулей интеграции через менеджер пакетов. 

Важно отметить, что новые Windows процессы не совместимы с классическими Windows-Legacy процессами. Причиной является используемый набор библиотек:

Эти наборы библиотек изначально не являются совместимыми, но благодаря использованию Windows Compatibility Pack for .NET Core современные проекты Windows могут использовать большинство существующих действий UiPath.

image-loader.svg

Так как кроссплатформенные проекты не могут использовать технологии Microsoft, базовый набор действий является сокращенным: в основном это использование классических действий оркестратора, элементов последовательностей, блок-схем и машин состояний, а также действия для работы с веб-сервисами.

image-loader.svg

Для использования действий интеграции необходимо их предварительно загрузить из менеджера пакетов.

image-loader.svg

А благодаря использованию пакета «UiPath.UIAutomation.Activities» имеется возможность роботизировать веб-сайты с использованием Chromium API. Настройка робота осуществляется таким же образом, как и при разработке роботов под Windows.

image-loader.svg

Если же при разработке робота вам не хватает готовых действий — всегда можно скачать .NET Core библиотеки из менеджера пакетов и написать код на C#. 

image-loader.svg

Настройка и запуск Linux-роботов 

Мир Linux — огромен: существует множество версий операционных систем, каждая из которых в свою очередь обладает богатым набором разнонаправленных дистрибутивов. Разработка и подготовка к эксплуатации универсального программного решения под все современные дистрибутивы Linux — довольно сложная задача, особенно когда речь идет про роботизацию. Поэтому разработчики UiPath решили распространять кроссплатформенных роботов в виде Docker-контейнеров. Сами образы для контейнеров могут быть установлены одной командой:

docker pull uipathprod.azurecr.io/robot/runtime — облегченная версия для использования пакетов упрощенной интеграций, без возможности роботизации браузера

docker pull registry.uipath.com/robot/uiautomation-runtime: latest21.11-preview — полная версия с возможностью роботизации браузера и запуском VNC-сервера для подключения и контроля исполнения действий роботом

Для запуска робота необходимо использовать ключ Template-машины (компьютера) с Unattended-лицензией, которая будет добавлена в одну из папок UiPath Orchestrator. При запуске робота должна быть использована специальная учетная запись «Robot account / Учетная запись робота»,   создание которой доступно только с версии 2021.10.

image-loader.svg

После того, как будет настроена папка с требуемой Template-машиной и учетной записью робота, можно запускать контейнер с Linux-роботом.   

Запуск контейнера осуществляется следующей командой:

docker run -e LICENSE_AGREEMENT=accept -e ORCHESTRATOR_URL=»АДРЕС ВАШЕГО ОРКЕСТРАТОРА» -e MACHINE_KEY=»КЛЮЧ МАШИНЫ-ШАБЛОНА (TEMPLATE)» -tid ИМЯ_ОБРАЗА

Для запуска VNC-сервера в полной версии необходимо использовать дополнительные аттрибуты:

--env VNC_ENABLED=true — включить VNC-cервер

-p ВАШ ПОРТ:5900 — VNC-сервер в Docker-контейнере работает на порту 5900, вы можете указать тот порт, который свободен на вашей машине для подключения к нему при помощи VNC-клиента.

Пример команды для запуска:

docker run -e LICENSE_AGREEMENT=accept -e ORCHESTRATOR_URL=»https://cloud.uipath.com/*****/DefaultTenant/orchestrator_/» -e MACHINE_KEY=»6593****---****-****ae98d3a1» -p 50000:5900 --env VNC_ENABLED=true -tid registry.uipath.com/robot/uiautomation-runtime: latest21.11-preview

Сразу после запуска робот подключится к оркестратору и будет готов выполнять задания. 

Важным преимуществом использования Linux-контейнеров является то, что они могут быть запущены почти под любой современной ОС. То есть, если вы хотите начать пользоваться Linux-роботами, вы можете установить их даже на существующую инфраструктуру под управлением ОС Windows.

Linux-роботы в действии

Для того, чтобы продемонстрировать преимущество применения Linux-роботов мы решили роботизировать следующий тестовый сценарий:

  1. Робот-диспетчер под управлением MS Windows загружает список контрагентов из внутренней базы в CRM, формирует из этого списка очередь транзакций, в параллельном режиме ожидает завершения каждой транзакции, записывая результат обработки обратно в CRM.

  2. При поступлении заданий в очередь триггер запускает роботов-исполнителей.

  3. Пока очередь транзакций не закончилась — каждый робот будет брать уникальную транзакцию из очереди, проверять контрагента в веб-клиенте 1С и веб-сервисе, возвращая отчет о проверке в результат транзакции.

Инфраструктура: 1 Windows-робот, 3 Docker-контейнера с Linux-роботами, работающие на том же компьютере, где работает Windows-робот.

image-loader.svg

Запущенные Linux-роботы именуются в UiPath Orchestrator по названию запущенного контейнера (Имя узла):

image-loader.svg

За всеми тремя роботами можно наблюдать одновременно с использованием VNC-клиентов:

Скорость выполнения задания, связанного с роботизацией браузера в кроссплатформенном варианте практически не отличается по скорости выполнения современных Windows-процессов, но количество ресурсов, требуемых для исполнения в разы меньше:

image-loader.svg

За счет возможности одновременного запуска сразу нескольких роботов на одном компьютере, достигается позитивный эффект: не требуется дополнительная инфраструктура, не требуются дополнительные лицензии. Использование Docker-образов гарантирует единое окружение во всех роботах, не требуется заниматься контролем версий программ и обновлений. Так же важным преимуществом использования данного подхода является возможность быстрого развертывания большого количества роботов на нескольких серверах простыми командами, описанными выше. 

Что нас ждет в будущем?

Разработчики UiPath не ограничиваются только созданием роботов для Linux, уже сегодня имеется возможность установки полного решения по роботизации предприятий UiPath Automation Suite на Linux-серверах. Это решение представляет собой полную копию UiPath Cloud, которую можно установить на вашей инфраструктуре. 

В дополнении к серверным компонентам, уже сейчас UiPath ведет активную работу над разработкой веб-версии студии UiPath. В имеющейся на данный момент альфа-версии веб-студии UiPath имеется возможность создания кросс-платформенных процессов. Данный подход позволит в будущем избавится от необходимости выделения отдельного места разработчика, что сократит расходы на инфраструктуру и лицензии.

image-loader.svg

Таким образом UiPath задает тренд на полную платформонезависимость для RPA-решений, что в долгосрочной перспективе позволит существенно экономить ресурсы и роботизировать еще больше процессов. 

© Habrahabr.ru