(BluePrism)スケーリングしやすいプロセス設計(案)
こんばんは、おむおむです。
比較的サクっと作ったロボちゃんが
当初の試算より大幅な削減効果が出そうでウキウキです。
ウキウキ過ぎて雨季になりました。(?)
自分用のメモ用に記事を殴り書きしてみます。
概要
・自動化対象処理のケース数に波がある。 ・繁忙期には1台では足りない、でも閑散期は何台も必要ない。 ・スケジュールでちまちま同時実行数を増減したくない。 ・なるべく手をかけずスケーリングしたい!
こんなこと、思ったことありませんか。
ありますよね(圧)
そんなときのために、ちょうどよさそうな実装方法を考えました。
※考えただけなのでちゃんとした運用はしてないです。
自己責任でよろ☆
実装イメージ
こんな感じです。
順を追って説明していきます。
保留中のケース数を取得する
まず、処理対象のデータを格納したワークキューから
保留中のケース数を取得します。
これは特に問題ないでしょう。
パラレル実行するかどうかを判定する
ミソはここです。
予め、数値型の環境変数を作成しておきます。
この環境変数は、
「プロセスをパラレルで実行する必要があるかどうか」
という判定を行うための基準となる数値です。
ワークキューでは1ケースあたりの平均処理時間を
自動的に算出してくれるので、
「SLAを満たすためには、XX件以上のときはパラレル実行が必要」
という計算が比較的に容易にできると思います。
環境変数として外に出しておくことで、
いちいちプロセスを開かなくても
容易にスケーリングの条件を調整することができます。
環境ロックを取得する
もう一つのミソが、環境ロックです。
説明するまでもないと思いますが、
Blue Prism には排他制御を行うための
環境ロックという機能が存在します。
この機能を使用することで、単一のランタイムリソースだけが
このプロセスの後続の処理を実行できるように
制御をかけることができます。
ロックが取得できなかった場合は、
フラグ型のグローバルデータアイテムなんかを用意して
メインページで終了に流すようなフローにするなどがよいでしょう。
スケジュールの作成
スケジュールはこんな感じ。
1つのタスク内に複数のセッションを張ってあげるだけで、
処理件数が規定数以上なら自動的にパラレル実行してくれます。
やったぜ☆
まとめ
・デフォの機能を組み合わせるだけで柔軟なスケーリングが可能
・まだまだBlue Prism の可能性は無限大☆
今の現場での稼働も残りわずか。
有終の美を飾るぞ~