私は会社の複雑なシステムの構築を担当しており、いくつかの調査の結果、Camunda が私の要件のほとんどに適合すると判断しました。しかし、私の要件のいくつかは一般的ではありません.ユーザーガイドを読んだ後、同じことを行う方法がたくさんあることに気付きました.似たような。
まず、Camunda BPM の上に特定のアプリを構築する予定です。ワークフローと BPM を使用しますが、必ずしも BPM/Camunda が提供するすべてのものを使用するわけではありません。これは、Camunda にバンドルされているほとんどの Web アプリ (タスク、モデラーなど) を、少なくともエンド ユーザーに対して使用する予定がないことを意味します。さらに複雑なことに、複数のテナントを動的にサポートする必要があります。
そのため、すべての要件を指定してから、うまくいけば、私よりも経験豊富な誰かが、これを機能させるための最適なアーキテクチャ/ソリューションを説明できるようにします。
どうぞ:
- Camunda BPM の上に構築された単一のアプリ
- ハイパフォーマンス
- ワークロード (数か月後、1 日あたり 10,000 個の新しいプロセス インスタンス)。
- ユーザー (1,000 人から開始、~ 50,000 人になると予想)。
- 複数のテナント (10 から開始、最大 1,000 になると予想)
- 動的に管理されるテナント (プロセス定義の作成、デプロイ)
- クラスターにデプロイされます
- PostgreSQL
- できればWildFly 8.1
いくつかの調査の後、これが私の考えです
- ワンプロセス申請
- テナントごとに 1 つのプロセス エンジン
- マルチテナンシーのデータ分離: スキーマまたはテーブル レベル。
- 最初は高可用性のためにクラスタリング (2 ノード) し、テナントの量とワークロードが増加し始めたらノードを追加します。
疑問
- camunda にユーザー/グループを管理させるべきですか、それともアプリでこれをより適切に管理するべきですか? この場合、Camunda はユーザー X の存在を知らなくても、「ユーザー X はタスク Y を完了しました」と言えますか?
- 動的マルチテナンシーについてはどうですか? その場でテナントを作成し、アプリケーション サーバーを再起動した後でもそれらのテナントを永続化することはできますか? 再起動後のプロセスの再展開についてはどうですか?
- ノード上でのエンジンの分割については、どの時点で検討する必要がありますか? 動的なマルチテナントでこれを行う方法を理解するのは難しいですが、さらに... これは、高いワークロードとテナント数の増加に対処する正しい方法ですか?
- プロセス・アプリケーションを 1 つだけセットアップした場合、クラスター環境で他の処理を行う必要がありますか?
1 つのテナント、1 つのプロセス エンジンのみを使用し、テナントに関連するすべてをアプリ内で論理的に処理することを除外しているわけではありませんが、これが非常に (非常に!) 面倒になる可能性があることは理解しています。
すべての回答を歓迎します。うまくいけば、この問題への適切なアプローチを実現できます。