四半期毎のデリバリモデルを継続して、先月、Wildfly 16がリリースされた。2,000件に及ぶイシューやリクエストやバグが、クローズあるいは解決されている。今回のリリースには、独自のWildglyサーバ構築のためのプロビジョニングツールであるGalleonや、JDK12との互換性に加えて、メッセージングおよびクラスタサポートなど、いくつかの拡張も含まれている。
Javaアプリケーションサーバは、独自の機能やAPIを備えて提供されていることが少なくないが、その中にはアプリケーションが使用するものと、使用しないものがある。Wildflyチームはこの問題を理解しており、"フリーサイズ(one size fits all)"ソリューションではない、汎用的なプロビジョニングツールとしてGalleonを開発したのだ。このツールを使って適切なコンフィギュレーションを行えば、不要なライブラリをディスクに置くことなく、必要なテクノロジのみを提供するサーバ
を容易に構築することができる、とWildflyプロジェクトのリーダであるBrian Stansberry氏は言う。
より明確な説明のために、WildflyのJAX-RSとログ機能のみ使用する、RESTベースのマイクロサービスアプリケーションを想定しよう。Galleonを使って次のコマンドを実行すれば、独自のWildflyサーバの構築が可能になる。
galleon.sh install wildfly:current --dir=micro-wildfly-server --layers=jaxrs,logging
この機能は、Galleonがレイヤと呼ぶものを使用して実現される。レイヤとは、EJBやJPAのように、事前定義されたテクノロジないしコンフィギュレーションのセットである。レイヤは他のレイヤに依存することができる。Galleonは自動的に、推移的なものを含むすべての依存関係を解決して、スリム化された最小限のサーバをプロビジョニングする。
最終的なイメージの全体サイズとフットプリントの削減を支援することから、Galleonは特に、コンテナの生成に最適である。
Wildflyチームは、最新版LTSリリースのJavaを使用してWildflyを実行するように推奨する一方で、最新のJVMでも実行可能なように努力している。Stansberry氏によれば、最新のJVMで自身のアプリケーションを評価したいと考えている開発者に対して、Wildflyが開発プラットフォームとして見られるようにしたいと考えている
からだ。
Wildfly 16がリリースされた時点では、JDK 12はまだリリース候補(Release Candidate)フェーズにあったが、このバージョンで行われたすべてのテストの結果、JDK 12でも正常に動作することが確認されている。
今回のリリースでは、プラットフォームに対するメッセージングやクラスタリングの改善も多数実施されている。
メッセージに関しては、メッセージ駆動Bean(MDB)と組み込みブローカのメモリ使用量が改善された。具体的には、MDBが複数のデリバリグループによってコントロール可能になり、すべてのデリバリグループがアクティブである場合にのみデリバリが実行させるようになった。さらに、組み込みブローカがメッセージのドロップや拒否といったブローカ輻輳時の処理を適用する前の、最大メモリ使用量を、ユーザが設定できるようになった。
クラスタの面では、mod_clusterの背後にあるクラスタによるトラフィック処理の改善と、高可用性(HA)シングルトンのデプロイメントあるいはサービスの、プライマリプロバイダを検出するツーリングの改善が実現された。具体的に言うと、mod_clusterとしてクラスタを追加した新たなWildflyサーバでは、すべてのトラフィックを一度に処理するのではなく、ロードバランサと連携しながら、サーバへのトラフィックを段階的に増加させる方法が採用されている。これにより、過剰なトラフィックによってサーバが過負荷になる可能性の低減が可能となった。
さらにCLIでは、クラスタの任意のメンバに接続して、HAシングルトンのデプロイメントないしサービスの、プライマリの位置を特定することが可能になった。これまでのCLIでは、どのサービスあるいはデプロイメントがデプロイされたかを表示するのみで、どのノードないしインスタンスがプライマリであるかは示されていなかった。
Wildflyについてより詳しく知りたい、あるいはより多くを知りたい場合は、ドキュメントやガイドを調べてほしい。