Выводим программных роботов на третью космическую скорость, или RPA в Linux
Программные роботы (RPA) с каждым годом всё больше проникают в IT-инфраструктуру компаний, а доля роботизированных процессов в бизнесе постоянно растет. Чтобы поддерживать увеличивающееся количество автоматизированных процессов организациям необходимы дополнительные вычислительные ресурсы, а значит и дополнительные расходы на инфраструктуру и лицензии ПО.
Многие профессиональные RPA-разработчики уже давно мечтают о том, чтобы роботов можно было запускать не только под управлением платной требовательной к ресурсам Windows, но и под бесплатной нетребовательной Linux. В этой статье знакомим читателей с возможностью разработки кроссплатформенных процессов с использованием UiPath и подробно разбираем преимущества от использования Linux-роботов.
Статья написана при поддержке технического эксперта UiPath: Валентина Драздова.
Почему роботы появились именно под Windows?
Программные роботы, выполняющие автоматизацию графического интерфейса, являются проверенным инструментом для простого решения сложных задач автоматизации систем, когда у них нет API, или работа с ним является слишком сложной задачей для существующей команды разработчиков. Как правило, такие задачи возникают в первую очередь при взаимодействии со старыми программами и системами, которые были написаны исключительно под ОС Windows. Даже если такие программы и обладали методами взаимодействия, то как правило это были OLE/COM-объекты, которые несовместимы с большинством современных средств разработки.
Однако, простота разработки программных роботов и возможность использования готовых интеграционных решений, позволяющих не писать огромные модули с кодом, привела к тому, что роботов начали применять даже в тех случаях, когда непосредственное взаимодействие с графическими интерфейсами не требуется.
Как известно, один робот может выполнять только одну задачу в одну единицу времени. Таким образом, если разработчики создадут слишком много процессов для роботизации — потребуется устанавливать роботов на новые сервера или использовать сервер с поддержкой нескольких сессий, а это затраты на дополнительную аппаратную инфраструктуру и лицензии на операционную систему.
Кроме того, существует проблема поддержания единого окружения для всех роботов — чем больше компьютеров, на которых установлены роботы, тем больше внимания требуется администраторам для того, чтобы везде были одинаковые версии программ и обновлений.
Возможности Linux-роботов
Начиная с версии 2021.10 UiPath предоставляет возможность использовать Linux-роботов. В отличии от Windows-роботов они создавались в основном для роботизации с использованием веб-технологий (веб-сайты и веб-сервисы), а также вызова готовых интеграционных решений от UiPath.
Особенности разработки процессов под Linux
Начиная с версии 2021.10 в UiPath Studio доступны три версии процессов:
Windows-Legacy — так теперь называются классические процессы, которые разрабатывались в предыдущих версиях продукта;
Windows — новые виды процессов, в отличие от классических процессов они поддерживают компиляцию и используют 64-битное адресное пространство, благодаря чему возможно использование большего количества оперативной памяти, а выполнение ускоряется в разы;
Кроссплатформа — новые виды процессов, поддерживающие запуск на любой операционной системе, где могут быть установлены роботы от UiPath. В отличие от Windows-процессов содержат сокращенный набор действий, который может быть расширен загрузкой дополнительных модулей интеграции через менеджер пакетов.
Важно отметить, что новые Windows процессы не совместимы с классическими Windows-Legacy процессами. Причиной является используемый набор библиотек:
Эти наборы библиотек изначально не являются совместимыми, но благодаря использованию Windows Compatibility Pack for .NET Core современные проекты Windows могут использовать большинство существующих действий UiPath.
Так как кроссплатформенные проекты не могут использовать технологии Microsoft, базовый набор действий является сокращенным: в основном это использование классических действий оркестратора, элементов последовательностей, блок-схем и машин состояний, а также действия для работы с веб-сервисами.
Для использования действий интеграции необходимо их предварительно загрузить из менеджера пакетов.
А благодаря использованию пакета «UiPath.UIAutomation.Activities» имеется возможность роботизировать веб-сайты с использованием Chromium API. Настройка робота осуществляется таким же образом, как и при разработке роботов под Windows.
Если же при разработке робота вам не хватает готовых действий — всегда можно скачать .NET Core библиотеки из менеджера пакетов и написать код на C#.
Настройка и запуск 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.
После того, как будет настроена папка с требуемой 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-роботов мы решили роботизировать следующий тестовый сценарий:
Робот-диспетчер под управлением MS Windows загружает список контрагентов из внутренней базы в CRM, формирует из этого списка очередь транзакций, в параллельном режиме ожидает завершения каждой транзакции, записывая результат обработки обратно в CRM.
При поступлении заданий в очередь триггер запускает роботов-исполнителей.
Пока очередь транзакций не закончилась — каждый робот будет брать уникальную транзакцию из очереди, проверять контрагента в веб-клиенте 1С и веб-сервисе, возвращая отчет о проверке в результат транзакции.
Инфраструктура: 1 Windows-робот, 3 Docker-контейнера с Linux-роботами, работающие на том же компьютере, где работает Windows-робот.
Запущенные Linux-роботы именуются в UiPath Orchestrator по названию запущенного контейнера (Имя узла):
За всеми тремя роботами можно наблюдать одновременно с использованием VNC-клиентов:
Скорость выполнения задания, связанного с роботизацией браузера в кроссплатформенном варианте практически не отличается по скорости выполнения современных Windows-процессов, но количество ресурсов, требуемых для исполнения в разы меньше:
За счет возможности одновременного запуска сразу нескольких роботов на одном компьютере, достигается позитивный эффект: не требуется дополнительная инфраструктура, не требуются дополнительные лицензии. Использование Docker-образов гарантирует единое окружение во всех роботах, не требуется заниматься контролем версий программ и обновлений. Так же важным преимуществом использования данного подхода является возможность быстрого развертывания большого количества роботов на нескольких серверах простыми командами, описанными выше.
Что нас ждет в будущем?
Разработчики UiPath не ограничиваются только созданием роботов для Linux, уже сегодня имеется возможность установки полного решения по роботизации предприятий UiPath Automation Suite на Linux-серверах. Это решение представляет собой полную копию UiPath Cloud, которую можно установить на вашей инфраструктуре.
В дополнении к серверным компонентам, уже сейчас UiPath ведет активную работу над разработкой веб-версии студии UiPath. В имеющейся на данный момент альфа-версии веб-студии UiPath имеется возможность создания кросс-платформенных процессов. Данный подход позволит в будущем избавится от необходимости выделения отдельного места разработчика, что сократит расходы на инфраструктуру и лицензии.
Таким образом UiPath задает тренд на полную платформонезависимость для RPA-решений, что в долгосрочной перспективе позволит существенно экономить ресурсы и роботизировать еще больше процессов.