はじめに
UiPath Appsのアップデートで、Apps上からAttendedを動かすことができるようになりました(2023年8月のリリースみたいなんで結構前ですが)。
従来はUnattendedのみだったので、ロボットを実行し終えるまで時間がかかり、Webアプリケーションとして大きな欠点がある状態でした。
ということで、今回はAttendedで動かしたとき、どれくらい実行速度が改善するかを検証します。
つかうもの
※クラウド環境は2023年12月時点のもの
Automation Cloud(Apps, Orchestrator, Cloud Robot Serverless) Enterprise版
Attended/Unattended Robot v2023.10
検証の仕方
こんな感じのアプリを作ってみました。各ボタンを押すとロボットが動き、実行が終了すると時間が表示されます。
Attendedの実行速度を検証するために、Unattended(サーバレスCloudロボットとセルフホスト)と比べてみます。またワークフローの作り方ですが、Windows/クロスプラットフォームのそれぞれをフォアグラウンドプロセスとバックグラウンドプロセスで作って比べてみます(Appsでフォアグラウンドプロセスはあまり使わないケースかもしれませんが)。
サーバレスCloudロボットは、クロスプラットフォームかつバックグラウンドプロセスのみが対応しているので、それ以外のパターンは無視します。
純粋なApps-ロボット間のリードタイムを計測するために、ワークフローの中身は空にしておきます。
結果
検証結果です。
Attendedの爆速ぶりは明らかでした。実装形態に関わらず1秒以下でロボット実行可能でした。
セルフホストURも健闘しました。これくらいの時間であればAppsで使用できるかもしれません。ただし、セルフホストの場合は用意したPC環境によって大きく結果が変わると思います(私の用意したPCが特別速かった可能性もあります)。
サーバレスCloudロボットは平均10秒近くのオーバーヘッドがかかり、今回の検証では最も悪い成績でした。流石に毎回10秒以上かかっていてはストレスが溜まるので、Apps目的で利用するには厳しいかと思います。仮に使ったとしても非同期実行にするなどしないといけないです。
また、Windowsよりクロスプラットフォームの方が早く、フォアグラウンドプロセスよりバックグラウンドプロセスの方が早い結果となりました。ここは想定通りです。
おわりに
検証結果から明らかなのは、やはりAttended実行は爆速でした。Appsの利用者がAttendedを所有している場合は、Attended実行しか選択肢はないでしょう。
しかし、Attendedは有償ライセンスのため、全社員に使わせるアプリケーションをデプロイする場合は、Apps利用者が必ずしもAttended所有者とは限らないので、この方法は使えません。Apps利用者がAttendedを持っているか・いないかによってAttendedまたはUnattended実行かを分岐するようなロジックは、現時点ではおそらく組めないと思われます(今後のアップデートで可能かもしれません)。
また、必要がない限りフォアグラウンドプロセスを避け、バックグラウンドプロセスで実装することも重要だと思います。