2017-02-06 7 views
2

今後のアーキテクチャは、ドッカー/マイクロサービスに移行することです。現在、JBoss EAP 6.4(EAP 7にアップグレード可能)とTomcatを使用しています。Dockerコンテナに適したアプリケーションコンテナはどれですか?

私によれば、JEEコンテナはマイクロサービス環境のためには重すぎる(遅い、より多くのメモリ、高いメンテナンスなど)。しかし、私はEAP 7が非常に速く軽量であり、マイクロサービスの開発に使用できると言われました。ドッカー/マイクロサービス用のEAP 7 vs Tomcat 8を決定する上でのあなたの意見は何ですか?コストとスピードが考慮されます。

+0

助けてもらえますかhttp://wildfly-swarm.io https://github.com/wildfly-swarm/wildfly-swarm-examples/tree/master/docker/docker-jaxrs –

答えて

3

本当にそれほど重くない従来のアプリケーションサーバーを使用する以外に、マイクロコンテナと呼ばれるJava EEのさまざまな味を試すことができます。

Java EEは単なる一連の標準です。 API仕様の標準結果であり、誰もが自由に仕様を実装できます。アプリケーションサーバー(AS)は、主にこの機能の微調整されたコレクションです。これらのAPIは何の理由もなく生きていませんでした。これらは、プロジェクトで一般的に使用される機能を表します。アプリケーションサーバーは、それらの機能の「管理されたセット」とみなすことができます。このアプローチには多くの利点があります - ASには多くのユーザーがいるため、時間の経過とともに十分にテストされています。機能を自分で配線すると、バグが発生する可能性があります。

Dockerを使うと、アプリケーションがその依存関係を持つ新しい時代が訪れました。多くの場合、アプリケーションにすぐに対応できるすべての機能を備えた、本格的なアプリケーションサーバーの必要性はもはや必要ありません。過去に、アプリケーションサーバーは、アプリケーションに必要なサービスを正確には把握していませんでした。したがって、すべてが束ねられました。WildFlyのようなより革新的なASの一部は、必要なサービスだけをインスタンス化しました。また、Monolith Application Serverを少し緩和したJava EEプロファイルもあります。

現在のところ、Docker内のアプリケーション(JDK、ライブラリ、AS)と一緒にアプリケーションを出荷しています。または、そこに向かっています。したがって、正確な量をバンドルする努力は論理的な選択です。しかし、それは "大きな"ものですが、ASの機能の必要性は依然として重要です。標準や共通の努力に基づいて共通の機能を開発することは、まだ良い考えです。これは、もはや1つの大きなパッケージとして配布するオプションではないようであり、APIのほとんどを非アクティブにする可能性があります。この努力は多くの名前を持っている、それは、Java EEサーバーは、何を使用するのは疑問であるので、光があるマイクロコンテナ、uberjarクリエイター...

ことelse。 * Spring BootはJava EEに基づいていません。また、Getting Startedガイドにあるデフォルト設定では、Tomcatは内部的に使用されています。

キーポイントは、お使いのJava EEアプリケーションは、独立したJava EEアプリケーションとして開発する必要がありますされています。 「ちょうど十分な」機能でそれをラップすることは、これらのマイクロソリューションに委任されます。これは、少なくとも私の謙虚な意見では、正しい道のりです。このようにして、本格的なASソリューションとマイクロソリューションの両方との互換性を保ちます。すべての依存関係を含むuber-jarは、ビルドプロセス中またはビルドプロセス後に作成できます。

WildFly SwarmまたはPayara Microは、必要なサービスだけを実行しているアプリケーションを「スキャン」することができます。実際のアプリケーションでは、実際のアプリケーションでは、量産時のメモリ占有量を100 MBに抑えることができます。これはおそらくあなたが望むものです。あなたがSpringを必要とするなら、Spring Bootは同様のことをすることができます。しかし、私の経験では、Springのブートはmuch more heavyweightで、メモリは現代のJava EEよりも空いています。なぜなら、明らかにSpringが内部にあるからです。もしメモリ消費量がseeking lightweigtnessならば、Java EE、特にWildFly Swarm(またはWildFly)マイクロそれらは私の好きなASであり、本当に、本当に小さくすることができます。私はWildFly Swarmが始めるのがはるかに簡単だと言うでしょうが、Payara microはもっと読みが必要ですが、興味深い機能を提供します。どちらもラッパーとして機能することができます。ビルド段階の後で現在のプロジェクトをラップするだけで、何も変更する必要はありません。

Payara Micro even provides Docker imagesすぐに使える!ご覧のとおり、Java EEは成熟しており、Dockerの土地に入る準備ができています:)

非常に信頼性の高いリソースの1つは、Adam Bienです(例:Java EE micro/nanoservices video)。見てみましょう。

+0

私の意見では、アプリケーションサーバ/マイクロサーバ/リリースサイクルが短いものは、Dockerの年齢では良いです。開発者は、管理者と異なり、依存関係を迅速かつ簡単に交換することができます。このようにして、最新の機能を備えた最新バージョンはほぼ即時に生産されます:) WildFlyは比較的短いリリースサイクルを持つコンテナの1つで、他のものについてはわかりません。 –

+0

WildFlyは年間2回、WF Swarmは年に12回、Payaraは年に4回(サポート担当者の場合は12倍)、TomEEは年に4回リリースします。短いリリースサイクルが必要な場合は、今日は幅広いオプションがあります。 – OndrejM

+0

2年に1回のメジャーリリースがなくなるため、これは前進です。 –

10

EAP7とTomcat 8は、複数回回答のある年齢の質問here,hereおよびhereです。

Tomcatは、EAP7が永続性、メッセージング、Webサービス、セキュリティ、管理などのJava EE 7のすべての機能を提供するアプリケーションサーバーであるWebコンテナです。EAP7には、Webプロファイルとフルプロファイル。 Webプロファイルは、トリマーバージョンであり、通常はWebアプリケーションを構築するために必要な関連実装のみが含まれています。 Full Profileは、あなたが期待しているように、プラットフォームの完全な栄光を含んでいます。したがって、EAP 7 Web Profileを使用すると、膨大な音量を大幅に削減できます。

Tomcatの場合、同等の機能を持ち、関連するすべてのJARをアプリケーションにパッケージするには、Springのようなものを使用する必要があります。

これらの議論は、新しいプロジェクトを開始し、Java EEまたはSpringリソースを手元に置いているときに、通常は役に立ちます。

  • EAP 6.4を使用していると思われる理由は次のとおりです。 EAP 7への移行はシームレスです。 Dockerを使用すると、アプリケーションをパッケージ化するのとは異なるスタイルになります。既存のすべての監視、クラスタリング、ロギングは引き続き機能します。 Tomcatと一緒に行くなら、Springのやり方を学ばなければなりません。時間とリソースがあり、実験したい場合は、そのルートに行くこともできます。しかし、あなたがそれから得たいものについて考えてみてください。
  • EAP 7は、コンテナおよびクラウドの展開に最適化されています。特に、OpenShiftでサービスとして利用できるため、OOTBで動作することがわかります。
  • EAP 7では、EAP 6.4よりもレイテンシとスループットが大幅に向上します。詳細はhttps://access.redhat.com/articles/2607521をお読みください。

また、TomEEも考えられます。 Tomcatに統合されたJava EEスタックを提供します。

@フェデリコが推奨するもう1つのオプションは、WildFly Swarmの使用を検討してください。次に、Java EEプラットフォームのどの部分をカスタマイズするかを実際に開始することができます。そして、あなたの展開モデルはJARファイルを使用しています。

Dockerを使用してパッケージ化する場合、それらはすべてベースイメージを提供し、アプリケーションをバンドルする必要があります。ドッカーイメージの

  • サイズ:ここではmicroservices用ドッカーイメージを使用するための重要な考慮事項のカップルがあるコンテナが突然死亡したり、オーケストレーションフレームワークは、別のホスト上でそれを再スケジュールすることもできます。画像のサイズが大きくなるほど、ダウンロードにかかる時間が長くなります。これは、より大きなイメージのためにサービスの起動時間がより長くなることを意味します。これはまた、アプリの動的スケーリングが効果的であるのに時間がかかることを意味します。
  • イメージの起動時間:イメージがダウンロードされた後、コンテナがすぐに起動することがありますが、アプリケーションが「準備完了」状態になるのにどれくらい時間がかかりますか?

私はTomcat/SpringよりもJava EEスタックをよく知っており、WildFlyは引き続きお気に入りのアプリケーションサーバーです。

関連する問題