Java仮想マシンを基礎とし、リアクティブで分散され、異なるプログラミング言語が混合されたアプリケーションの構築基盤であるVert.xはバージョン3.3.0をリリースした。
このリリースでは多数の新機能や改善を提供しているが、これらの中の最も重要なものを以下に紹介する。
ネットワーク機能
Vert.x 3.3.0はHTTP2のサポートを組み込みで提供するため、H2CとHTTP2プッシュ機能を含むHTTP2クライアントとサーバを開発することが可能である。
HTTP/2はHTTPリクエストとレスポンスのためのフレームを用いるフレームプロトコルである。このリリースで、アプリケーションはリクエストにcustomFrameHandlerを用いることによりカスタムフレームを受信することが可能になった。このハンドラはカスタムフレームが到着するたびに呼び出される。ドキュメントにはコード例が示されている。
request.customFrameHandler(frame -> {
System.out.println("Received a frame type=" + frame.type() +
" payload" + frame.payload().toString());
});
Socks5とHTTPプロキシのサポートも新機能であり、TCPとHTTPクライアントを設定する際にプロキシ設定を行うことができるようになった。
JavaではDNSの名前解決はブロッキング処理となっているため、処理速度の低いDNSはVert.xのイベントループをかなりの時間ブロックしてしまう。これは、Vert.xのマントラである“決してイベントループをブロックするな”とは対照的である。これを回避するため、Vert.x 3.3.0では非同期DNSレゾルバを統合した。HTTPもしくはTCPクライアントを作成する際に、ホスト名は非同期に解決されるようになった。この機能はTCPやHTTPサーバの初期化中でも同様に使用される。
Vert.xのイベントバスはVert.xアプリケーションの屋台骨である。この機能によりVert.xアプリケーションの各部分でメッセージ通信を行うことができる。従来この通信のTCP関連の設定を行うことはできなかったが、3.3.0ではSSLを含む設定を行うことができるようになり、イベントバス上でセキュアな情報交換が行えるようになった。
システムの統合
Vert.xアプリケーションは一般に幅広いシステムを統合するものであり、Vert.x 3.3.0ではVert.xと他のシステムのがやりとりする方法が改善された。第一に、 Apache Camel,によるブリッジを提供するようになった。Apache Camelは有名な統合フレームワークであり、幅広いアプリケーションと接続するための100以上のコンポーネントを提供している。
Vert.x 3.3.0はブリッジのためにRabbitMQ クライアント、及びAMQPクライアントを提供する。AMQP 1.0はクロスプラットフォームなメッセージングプロトコルで、幅広いユースケースで用いられている。
セキュリティがどんなインターネットアプリケーションでも主要な関心事となっているため、Vert.x 3.3.0ではOAuth 2の認証機構のサポートが加わっている。そのため、アプリケーションはGoogle、LinkedIn、Github、KeyCloak、Twitter、Facebookのような任意のOAuth 2プロバイダと簡単に接続することができる。
マイクロサービス
Vert.xは開発当初からマイクロサービスアーキテクチャの開拓者であるが、マイクロサービス関連のプラクティスは進化しており、Vert.x 3.3.0では下記の機能が提供されている。
- サービス探索
- サーキットブレーカ
サービス探索はサービスの位置透過性を改善するための方法であり、位置をハードコードする代わりに、実行時にサービスを探索する。サービス探索はConsulもしくはKubernetesを用いてサポートする環境を拡張することができる。
Vert.xは常に故障時のことを一級市民として考えているが、ときどきより洗練された故障管理を必要とする。特に、(失敗した)サービスに対して過負荷を掛けることを避けるために、Vert.xはサーキットブレーカのパターンを独自で実装した。
監視
Vert.x 3.3.0は指標の収集機能についても拡張している。もちろんHTTP2のサポートも提供しているが、Vert.xで管理するスレッドの監視機能も改良している。例えば、ワーカキューを監視し、必要に応じてキューのサイズを設定することも可能だ。
JDBC接続プール機能においてもチューニングのための改善されたフィードバック指標を提供する。
Vert.xを用いたプログラミング
Vert.x 3.3.0では並列タスク実行の機能構成に関して開発モデルが改善され、非同期操作を連鎖させるのが容易になった。
アプリケーションのテストは必須であり、Vert.xのユニットは任意のアサーションフレームワークが使用できるように改善された。もうTestContextで提供されるアサーションに限定されることはなく、Hamcrest、AssertJやRest-Assuredを使用することができる。
ここで紹介したのは機能や改善の一端である。もっと多くの機能や改善がVert.x 3.3.0により使用可能であり、例えばJDBCバッチのサポート、Redisの地理命令などがある。さらに詳細な情報はVertx.ioのWebサイトで確認することができる。
Rate this Article
- Editor Review
- Chief Editor Action