【UiPath】Unattendedを運用する時のPCの選び方

# はじめに
Attendedで運用する際、普段使っている業務用のPCにUiPathをインストールするかと思いますが、Unattended Robotを運用する際、どんなPCを選択すれば良いのでしょうか。
（今、業務で使ってるものをそのまま使う方が圧倒的に多いはずですが、Unattendedを始めるのをきっかけに考えても良いかも）
本記事では様々な選択肢と、それらの特徴について説明します。

# PCの種類
UiPath Robotをインストールする環境は、大きく分けて以下の分類となります。

* 物理PC
* 仮想PC
* 高密度ロボット　※ サーバOS（Windows Server）
* （Cloud Robot）

## 1. 物理PC
CPU、メモリ、HDD（SSD）など物理的に存在するPCです。
おそらく、多くの方が業務用のPCとして使用しているかと思います。
さらに分類すると、デスクトップ型PCとノート（ラップトップ）型PCに分けることができます。

### デスクトップ型PC
Unattendedで運用する際、デスクトップ型PCは向いていません。理由は設置場所に困るからです。特にUnattendedを中～大規模で運用する際、設置場所の問題は顕著です。

### ノート型PC
デスクトップ型PCよりはマシですが、やはり向いていないかと思います。
ノート型PCは省スペースではあり、ラック収納することで複数台数を収めることができますが、中～大規模で運用する際は、やはり設置場所に困ります。
デスクトップ型PCでも言えることですが、知らない間に電源が抜けていて、本番運用中にPCがシャットダウンするケースも起こり得ます。
また、物理PC共通で言えることとして、故障時の機器の入れ替えが面倒です。新しい機器の調達からセットアップして設置、さらには古い機器の廃棄などに結構なリードタイムと手間を要します。

## 2. 仮想PC（VDI）
物理PCとは異なり、サーバ上で仮想化されたデスクトップをクライアント側からリモート操作するものになります。
自社のオンプレ環境上にVDIを構築するパターンや、Azure（Azure Virtual Desktop：AVD）やAWS（Amazon WorkSpaces）などのパブリッククラウドのマネージドサービスを利用するパターンがあります。
Unattendedで運用する場合、仮想PCは向いていると思っています。
大きなメリットは以下の3点です。

* 設置場所が不要
* スケールアップの自由が利く
* スケーラビリティが高い

PCは仮想化されているので、Unattendedを複数台で運用しても設置場所に困ることはありません。また、電源が落ちる心配もありません。
仮想化したPCは性能を比較的自由に設定することができます。特にAzureやAWSのサービスを使う場合は、ランニングコストだけ気にする必要はありますが、自由にスペックを設定することが可能です。
さらに、PCを追加したり、入れ替えたりするのが簡単に行えます。予めRPAをセットアップ済みのイメージを作っておけば、短時間で複製することができます。

自社のオンプレ環境上にVDIを構築するパターンは、サーバ自体の故障やトラブルの可能性がありますが、AzureやAWSなどのサービスを利用するパターンでは、それらの保守運用も手離れします。

Unattendedを中～大規模で運用する場合は、TCO（総所有コスト）的にはAVDがベストな選択だと個人的には思います。

## 3. 高密度ロボット
高密度ロボットは、1つのサーバOS（Windows Server）に複数のロボットを集約して実行することができます。
Windows Serverの他、リモートデスクトップサービス（RDS）を利用するためのクライアントアクセスライセンス (CAL) を別途用意する必要があります。

https://docs.uipath.com/robot/lang-ja/docs/high-density-robots

https://docs.uipath.com/lang-ja/installation-and-upgrade/docs/setting-up-windows-server-for-high-density-robots

複数のロボットを1つのサーバに集約できるので、運用コストの低減が期待できる一方、同時実行数に応じて必要なサーバスペックは変わるため、サイジングには注意が必要です。

## 4. Cloud Robot
Cloud Robotは、UiPath Automation Cloudが提供するマネージドなロボット環境です。自前でPCを用意しなくても、UiPathが環境を用意してくれます。
※ Cloud Robotは、Unattendedライセンスではなく、ロボットユニット（RU）という別のサービスライセンスが必要となります。

### Automation Cloud Robot（仮想マシン）
高密度ロボットをUiPath側がマネージドなサービスとして提供してくれたものだと捉えると良いかもしれません。
プロビジョニングされた仮想マシンは、インターネット経由でリモートデスクトップ接続することが可能です。
インターネット上の環境になるので基本的には社内のオンプレ環境上のシステムにはアクセスできません。アクセスしたいのであれば、別途VPN接続を設定する必要があります。

https://docs.uipath.com/orchestrator/lang-ja/v0/docs/automation-cloud-robots-vm

### Automation Cloud Robot（サーバレス）
サーバマシンを意識することなく使用できる実行環境です。プロビジョニングされた環境にリモートデスクトップ接続することはできません。
バックグラウンドかつクロスプラットフォームに対応したプロジェクト（ワークフロー）のみ実行できます。
仮想マシンと同様、VPN接続することで社内のネットワークにアクセスできます。

https://docs.uipath.com/orchestrator/lang-ja/v0/docs/automation-cloud-robots-serverless

# PCのスペック

https://docs.uipath.com/installation-and-upgrade/lang-ja/docs/robot-hardware-and-software-requirements

インストールすること自体は、公式の最小スペックを満たしていれば問題ありませんが、Unattendedとして運用することを考慮すると、推奨スペック以上は欲しいところです。
特にCPUについては、スペック不足から高騰状態が続くと、アプリケーションのハングアップ（応答なし）を引き起こす可能性を高めます（感覚的にCPU高騰によるハングは1%以下の発生率だと思っていますが、ロボット台数を増えると事象発生の絶対数は増えるので、運用負荷は高まります）。Unattendedは無人運用するので、ハングアップの検知が難しくなります（OrchestratorやRobotにはシステム的に検知する機能はありません）。なので、なるべくハングアップしないように設計しないといけません。
しかしながら、PCのスペックはコストの増加に直結するので（特にAVDなどのマネージドサービスを利用の場合はランニングコストの負担が大きくなります）、どのようにUnattendedを運用するか（台数や運用・監視体制など）を考慮して、決めると良いかと思います（必ずしもハイスペックな環境を用意する必要はありません）。

# おわりに
いかがでしょうか。PC選びの参考になれば幸いです。
※個人的にはAVDとCloud Robot（仮想マシン）のパフォーマンス・コスト比較やってみたいかな