小規模なアプリケーションやマイクロサービスでモノリスアプリケーションを分解する作業をしています。いつものように、ドメインを特定し、それらを小さなアプリケーションとデータベースに分割するのは簡単な場合と難しい場合があります。
私はいくつかのドメインを見つけました(例として2つ紹介します)。これらはすべて、一連のエンティティ(ケアの単位またはいわゆるケアユニット)の使用を共有しています。これらの治療室は、データ統合ツール(SSIS)によって時々更新されます。データベースには100万を超えるケアユニットがあります。以下の例では、さまざまなドメインがこれらのケアユニットにどのように作用するかがわかります。
これらのケアユニットをすべてのドメインに複製することもできますが、同期の問題などを考慮すると、これはかなり複雑になると思います。現時点では、SQL Serverで単純なjoin
クエリを使用して、これらのドメイン間の集計を実行できます。大量のデータを複製せずに私が望むものを達成する他の方法はありますか?そうでない場合、ドメイン間でテーブルを同期するための推奨される方法は何ですか?
このアプリケーションは、SQL Serverをデータベースとして使用してc#.netで記述されています。したがって、これらのテクノロジーを使用した回答が推奨されますが、必須ではありません。
マイクロサービスのポイントは、大規模なソフトウェアシステムの一部を独立して開発および運用できるようにすることです。このプロジェクトのyour目標は何ですか、これを行う理由は何ですか?
マイクロサービスは、notdataモデルのサブツリーです。それは全体のクローズドで機能が完全な部分であり、一般的なデータはもちろんのこと、他のシステムへの要求/応答依存性は(理想的には)ありません。繰り返しになりますが、これはランダムなルールではありません。サービスを個別に進化させて操作できるようにする必要があります。これにより、そのようなシステムを維持できるようになります。
したがって、適切な分離を実現するために、潜在的な境界に関する質問を次に示します。
チートできるツールはいくつかありますが、正気を保つには、慎重に使用する必要があります。これらのツールは次のとおりです。
マイクロサービスがデータの他のサービスにアクセスすることは公平です。マイクロサービスアーキテクチャで分散データを処理する方法については、 sagaパターン を調べます。