2017-10-30 1 views
0

マイクロサービスに関するアーキテクチャ上の質問があります。私たちは2つの異なるデータソースを持っています(2つのテーブルにはいくつかの類似フィールドがありますが、それらの間には接続はありません)。私たちはこれらのデータだけを読みたいと思っています。これらのソースごとにマイクロサービス(モデルオブジェクトに沿って)を作成するのがよい方法ですか、それともデータを処理する汎用サービスを持つ汎用モデルを作成するのに十分ですか?データ型ごとのマイクロサービス

答えて

0

正解はプロジェクト/製品とニーズによって異なります。

マイクロサービスはビジネス機能の周りに配置されています。これにより、開発者がそれを消費するのを助けるサービスコンテキストが得られます。汎用サービスにはこのコンテキストがありません。

たとえば、わかりやすいために、従業員情報を持つ顧客情報を持つテーブルが2つあるとします。私たちはテーブルからのみ読んでいます。

マイクロサービスアーキテクチャーは、読み取り操作と読み取り操作の2つのサービスを提供します。

したがって、開発者はcustomer.listAll()とemployee.listAll()などを呼び出します。しかし、文脈は明確です。

汎用サービスを使用すると、次のコードが返されることがあります。 service.listAll(customers)。パラメータはコンテキストを運ぶようになりました。大量の異なるタイプ/テーブルを持つシステムでは、これは電話をかける大きな手間になることがあります。ジェネリックサービスには、特定のもので一般的ではないservice.listCustomers()またはservice.listEmployees()はありません。

理解しにくいAPIは使いにくく、ジェネリックサービスは最初は少し簡単ですが、最終的に複雑さが増します。メンテナンス非開発は、ソフトウェアの中で最も長く、最も高価な部分です。

これは別のポイントで触れます。包括的なサービスのすべてを持つということは、顧客サービスにバグがある場合、従業員サービスを修正するために従業員サービスを停止する必要があることを意味します。このバグは、両方のサービスに影響を与える可能性もあります。 Microservicesは、アプリケーションを停止させることなくサービスを停止することができるため、この問題は発生しません。

一般的なパターンを使用してマイクロサービスを実装することができます。言い換えれば、従業員と顧客サービスの両方が、彼らの操作においてDOAパターンを使用することができる。コードは何らかの方法でライブラリ間で共有できますが、完全に独立したものになります。

+0

詳細な回答ありがとうございました! – David

関連する問題