ロボットタイプ

ここでは、 Robotic Crowd が提供するロボットの技術的な仕様について説明しています。開発者レベルの前提知識が必要になります。ですが、一般のユーザーの方は、最後の比較表のみご覧いただければと思います。

ロボット

Robotic Crowd でロボットというのは、独立した計算領域のことを指しています。ワークフローが実行されるとロボットの計算領域が確保されます。この領域は、コンテナーと呼ばれる技術を用いて全てのロボット間は論理的に分離されています。ロボットの使うCPUやメモリも独立しており互いに影響が無いように設計されています。

一つのコンテナに一つのワークフローが実行されますので、2つのワークフローを同時に実行する際には、ロボットは2台必要になります。基本プランでは、ロボットを2台提供しております。3つ同時に実行したい場合は、ロボットを3台に増やす必要があります。

瞬発的なロボットの需要に対応するために、ロボットレスというモードも提供しております。

ロボットタイプ

Robotic Crowd で用意しているロボットの種類には3種類あります。一つは、マルチモードと呼ばれるロボットタイプで、各タスクの進行をデータベースで管理し、タスクを実行するごとにアプリケーションを起動する作りとなっております。もう一つは、シングルモードと呼ばれるロボットタイプで、各タスクは、単一のプロセスで一気に処理されます。タスクの進捗はデータベースではなくコンテナのメモリ上で管理されています。最後に、ロボットレスと呼ばれるロボットタイプです。こちらは、ロボットをサーバーレス環境を用いて実行し、弾性的な需要に対応可能です。動作としてはシングルモードとほぼ同じものになっておりますが、メモリや実行時間に制限があります。また、ロボットレスでは、VPN接続やIP固定化には対応していません。

以下、詳細に説明します。

マルチモード

マルチモードでは、ロボットのタスクの進捗は、データベースで管理されています。データベース自体は、全てのロボットで共有されているので、データベースの高負荷は、ロボットのタスク進行のボトルネックとなる可能性があります。データベースの負荷は、常に監視しており常に余裕があるようにたもっております。

マルチモードでは、タスク実行の計画がデーターベースに保存されるため、ワークフローの進捗を全体の見取り図から把握することができます。一方で、データベースの更新や、タスク毎にアプリケーションを実行していることからタスク間を遷移する速度は、遅くなっています。タスク間は、多くても0.5秒程度で遷移されますが、タスク数が多くなると全体のスピードに影響します。マルチモードでは、一度のワークフローのタスク数の上限を5,000としています。

マルチモードでの変数の管理は、Linux OSの環境変数の機能を利用して行われます。Linux OSの環境変数には、上限のサイズがあり上限サイズを超えるとタスク実行時にエラーが発生します。このエラーは、コンテナログ内で確認できます。マルチモードでは大きな変数を取り扱う際は、ファイルを経由して取り扱うことを推奨しています。変数は呼び出されると、設定ファイル上で動的に変換され文字列として置換されます。

マルチモードは、タスク毎に専用のアプリケーションを実行できる利点があるため、将来的には、特別なアプリケーションの操作ができるようなロボットになっていく予定です。(例えば、embulkの実行など)

もし、マルチモードでスピードの問題が発生したり、タスク数上限の問題が発生していればシングルモードの利用を検討してください。

シングルモード

シングルモードでは、ロボットの進捗は、ロボット内のメモリ上に展開され管理されます。タスクの進捗管理にデータベースが利用されないので、ロボット間の影響はほとんど全て排除されているようになっております。

シングルモードでは、タスク実行計画はメモリ上に展開され、先にログ等で実行計画を俯瞰することができませんが、高速に実行されます。また、メモリの許す限りタスクを実行できるので、タスク数には実質制限なく、いくらでも実行できます。

基本的な用途では、シングルモードの利用を推奨していおります。

ロボットレス

ロボットレスは、実行されるモードとしてはシングルモードと同様になります。このロボットは、Robotic Crowd で管理構築しているサーバーレス環境で実行されます。

ロボットレスは、時間あたりの利用料金は、基本ロボット(マルチモード、シングルモード)よりも割高になりますが、瞬時に1,000台までロボットをスケールしたり減らしたりできるという点がございます。

ロボットレスは、別途お申込みが必要ですので興味のあるユーザー様は営業、または、チャットでお問い合わせください。

各ロボットタイプの互換性

各ロボットタイプは、同じプログラムを元にしていますが、プログラムを実行している環境が異なっているため変数の保存や 変数の呼び出しなど一部互換性が無いところがございます(シングルモードだと動くがマルチモードだとエラーになる、またはその逆など)。

また将来的に互換しない機能を提供する可能性もあります(シングルモードでは使えないアクションの提供)。

現状、各モードで互換するように設計しておりますが、互換しないなどありましたらチャットでお問い合わせください。

項目

マルチモード

シングルモード

ロボットレス

VPN/固定IP

対応

対応

利用不可

実行時間の上限

10時間(認証切れ)

10時間(認証切れ)

15分(異常終了)

タスク間の遷移スピード

ゆっくり

高速

高速

タスク数の上限

5,000

なし

なし

変数の変換

文字列として置換

オブジェクト、配列、数値、文字列

オブジェクト、配列、数値、文字列

変数の上限

環境変数の上限サイズ

なし

なし

対応アクション数

変わらず(将来的に増える見込み)

変わらず

変わらず

各ロボットタイプの変数の取り扱い方について

マルチモード

StoreValueアクション

  • 保存する値の型は全てString型となる

  • オブジェクト型のデータは、JSON文字列に変換され保存される

RunScriptアクション

  • RunScript内で呼び出した変数のデータ型は、JSONパース処理した後の型になる

テンプレートリテラル

  • テンプレートリテラル ${...} 内で呼び出した変数のデータ型は、保存された時と同じ型になる

シングルモード

StoreValueアクション

  • 保存する値は全て、元のデータ型のまま保存される

RunScriptアクション

  • RunScript内で呼び出した変数のデータ型は、保存された時と同じ型になる

テンプレートリテラル

  • テンプレートリテラル${...}内で呼び出した変数のデータ型は、保存された時と同じ型になる

ロボットレス

シングルモードと同じ。