私は、バッチベースシステムのマイクロサービスアーキテクチャを調査しています。
これが現在の設定です:
コード:内部接続された5つのシステムがあり、それらは1つのシステムから別のシステムにデータを渡します。現在、ロジック全体がPL/SQL、Hadoop(Hive、Impala、Sparkなど)およびシェルスクリプトとしてOracleに組み込まれています。
Communications:これらのシステムは、クロスDBテーブルの許可を通じてデータを共有するか、データをファイルにエクスポートして相互に送信します。
トリガー:これらのシステムは、カスタムワークフローエンジンを介してトリガーを送信するか、プロセスが反復モードでいくつかのファイルを検索します。
ここで主な質問に行きます:これらのプロセスをマイクロサービス(コード)に変換してKafka(通信とトリガー)を使用して、データを共有し、より分散された適切な振り付けのプロセスフローを実現できます。例を挙げれば、1つのシステムがプロセスを終了すると、データをKafka=で使用できます(これはトリガーおよびプロデューサーとして機能します)。ファイル内のデータまたはデータベースを個別にヒット。
コメントに基づいて編集:バッチベースのシステムのマイクロサービスベースのアーキテクチャに関する洞察を探しています現在のセットアップに関係なくまたはまったく新しいシステムを構築していると思います。
リンク/ブログ、ツール、テクノロジーを通じての提案は大歓迎です。
それはまともな考えです。しかし、あなたの懸念(苦痛な点)は何ですか?マイクロサービスは主に次のようになります。
a)より複雑(結局のところ分散システムです)
b)より保守しやすい
c)より柔軟(将来的にシステムの一部を再設計することに関心があることを確認したように、進化の観点)
私はあなたがバッチベースのシステムを求めているのと同じデザインを使用しました。悪くはないです。そして、私が本当に気に入っているのは、複数のコンポーネントが単一のイベントをリッスンする方法です(ここで魔法が発生すると思います)。この本をご覧ください:Apache Kafkaを使用したストリーミングサービスのイベント駆動システムの概念とパターンの設計。いくつかの章では少し疲れますが、そのほとんどは本当に良いです。それはいくつかの面も見落としていると思いますが、それはあなたに多くの洞察を与え、かなりシンプルです。
利用可能な設計の選択肢はたくさんあり、多くは要件に依存します(システムのサイズ、速度、容量、リアルタイムまたはほぼリアルタイム、または24時間遅れ、拡張性、信頼性など)。
私は間違いなくEnterprise Integration Patternsと読みます---おそらくEvent Streams in Action正しい決定を下すためにあなたの震えに適切なツールを持っています