現在のモノリシックベースのアーキテクチャからマイクロサービスアーキテクチャに(ゆっくりと)移行しようとしています。私はマイクロサービスアーキテクチャに関する調査を行ったので、以下で説明するアーキテクチャに関するフィードバックをコミュニティから入手したいと考えています。
これは、約10〜20人のユーザーが内部で使用するWebアプリケーションです。このアプリケーションは、レポートをグラフと表形式で表示し、機能をpdf/xsl/csvにエクスポートします。やがてアプリケーションは成長し、より多くの機能が追加されます。
私が考えていたのは、レポート(MS)とエンジン(MS)の異なる目的に役立つ2つのマイクロサービス(MS)を持つことです。
主要ライブラリ:Spring Boot、Spring Rest、Maven、JDBCテンプレート
アーキテクチャ:DAO、サービス、およびレストコントローラ
アプリケーションサーバー:Tomcat(埋め込み)
ビジネスルールやその他のロジックのためにサービスに渡される複雑なSQLクエリのため、DAOレイヤーはJDBCテンプレートを使用します。サービスレイヤーからデータを取得し、エンジンとレポート間のインターフェイスとして機能するRest Controller
主要なライブラリー:Spring Boot、Spring Rest、Maven、JSP、JavaScript/Jquery /アーキテクチャー:サービス、コントローラー、フロントエンド・テクノロジーアプリケーション・サーバー:Tomcat(組み込み)
レポートの代替技術(MS):
AngularJS 2、NodeJS、JavaScript/Jquery/HTML/CSS
サービスレイヤーはREST APIを介してEngine(MS)から情報をリクエストします。データはコントローラーに渡され、適切なビュー(JSP、JavaScript/jquery/css/htmlなどの組み合わせ)に提供されます。
また、AngularJS 2またはNodeJSとJavaScriptを使用して、JavaテクノロジーとTomcatアプリケーションサーバーを、フィードバックが得られたらすぐに置き換えることも検討しています。
これまでのところ、私はこのデザインで高レベルの長所と短所を特定しました。
1)JavaテクノロジーをAngular2バージョンに置き換えることはお勧めしません。代わりに、Angular-2をJavaアプリ内に組み込んでください。Angularは、そのフレームワークに多くの劇的な変更を加えています。将来、アプリケーション開発者がangularバージョンを最新のものにアップグレードすることは、複雑で退屈な作業になる可能性があります。
2)データベース領域についてもう1つ提案があります。また、[〜#〜] redis [〜#〜]を非SQLデータリポジトリとして、アーキテクチャの独立した独立した層として追加する必要もあります。 REDISは、次のようなアプリのパフォーマンス向上により、さまざまな機能を実現するのに役立ちます
REDISには、かさばるデータセットであっても、非常に高速な読み取りと書き込みを実行する機能があります。
Javaアプリケーションは、次の場所にある使用可能なAPIを使用してREDISサーバーと通信できます。
https://redis.io/clients#Java