2017-04-13 3 views
1

現在、複数のWebサービスと共通のEJBコードを複数のWeblogic 12cプラットフォームで実行しているMonolith Java/J2EEベースのアプリケーションをリファクタリングする戦略に取り組んでいますMicroServices。共通のEJBコードには、各Webサービスに固有のセッションBeanがあり、複数のサービスによってアクセスされる共通のコードもあります。共通のEJBコードをリファクタリングするための最良の方法は何ですか?私が見つけたオプションのいくつかはモノリスアプリケーションをリファクタリングする際に、共通のEJBコードをマイクロサービスとしてリファクタリングする方法

です。1.共通のEJB Beanを共有ライブラリとして再構築し、EARとして展開します。ここでの質問はどのようにしてWebサービスがBeanを検索するのですか?(CDIは動作しません

2.一般的なEJB BeanをJARファイルとしてパッケージ化し、すべてのWebサービスAPP-INF/libディレクトリを含める - このオプションを使用すると、さまざまな種類のコードを複数作成することができますサービス

複数のMICRにモノリスを分割する他のオプション

+0

あなたは物事がどのように見えるかの図を投稿することができれば... – efekctive

+0

私はあなたが間違って端から始めていると思います。最初に共通のコードからマイクロサービスを作成する必要があります。 – efekctive

答えて

0

を提案して下さいoservicesは、ネットワーク上で通信する複数のアプリケーションをもたらすはずです。したがって、マイクロサービスの内部は、他のマイクロサービスの観点からは不透明です。この場合、共有/共通コードは、それを使用するすべてのマイクロサービスにコピー/貼り付けする必要があります。これは、デカップルのように、相互にマイクロサービスが必要なので、が独立して進化します。は、マイクロサービスアーキテクチャを使用することの利点の1つです。たとえば、将来、プログラミング言語をJavaからJavaScriptまたはPHPに変更することができます。に気づくでしょう。

この詳細については、here、33ページ「DRYとマイクロサービスの世界におけるコード再利用の危険」を参照してください。

+0

Constantin GALBENUの提案に感謝しました。私はあなたが提案したオプションにも傾いていましたが、私が見た唯一の欠点はアプリケーションサーバー上にあるJARのコピーであり、影響を受けるサービスを構築し、 JARの変更(Weblogicはバージョン管理の良い方法を提供します)。 – govephasu

0

古いEJBを使用してリファクタリングするのではなく、進化した設計アプローチはどうですか?

実際、多くのマイクロサービスグル​​ープは、より長期的に進化するのではなく、多くのサービスを廃止することを明示的に期待してこれをさらに進めています。

GuardianのWebサイトは、モノリスとして設計され、構築されたが、マイクロサービスの方向に進化しているアプリケーションの良い例です。モノリスは依然としてウェブサイトの中心ですが、モノリスのAPIを使用するマイクロサービスを構築することで、新しい機能を追加することを好みます。

From Martin Fowler

+0

それは良い点です。私はいつも進化のデザインに従ってきました。私はモノリスアプリケーションを構築するために悪い設計をしています。モノリス上に構築された新しい機能が、モノリスのリファクタリングには、再利用可能なジャーとして多くの作業が必要です。追加されたマイクロサービスの構築に使用できます。 – govephasu

+0

新しいコードはまだ書かれていないため、依存関係はありません。どこにコードを置くのかを決めるのはあなただけです。そして、他のものはモノリスに残ることがあります。 RESTインタフェース。 – ytg

関連する問題