BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MicroProfile 1.2の最新情報

MicroProfile 1.2の最新情報

ブックマーク

原文(投稿日:2017/11/30)へのリンク

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

EclipseファウンデーションはMicroProfileのバージョン1.2をリリースした。以下の4つの新しいAPIを含む。

Health Check APIは処理ノードが停止もしくはシャットダウンに瀕しているかを確認し、新しい正常なインスタンスのノードで置き換える。ビルトインのクラスアノテーション@Healthを含む。クラスはHealthCheckインタフェースを実装し、call()メソッドをオーバライドしなければならない。

Health Metrics APIはよく知られたモニタリングエンドポイントとメトリクスを各処理ノード用に提供する。クラスやメソッドに追加できる以下のビルトインのアノテーションを導入する。

  • @Counted - メソッドやコンストラクタ、型をカウンタとしてマークする。
  • @Gauge - メソッドをゲージとしてマークする。
  • @Metered - メソッドやコンストラクタがどのくらいの頻度で呼び出されたか測定、追跡するようマークする。
  • @Timed - アノテーションを付けたオブジェクトのメソッドやコンストラクタが呼び出しの完了までにどのくらいかかったか計測し追跡するようマークする。
  • @Metric - メトリックがインジェクトまたは登録されるよう要求する。

Fault Tolerance APIは新しいポリシーを導入する。付随して、クラスやメソッドに追加できるアノテーションも導入する。

  • @Timeout - 必要なタイムアウト時間を定義する。
  • @Retry - リトライが必要なときの条件を定義する。
  • @Fallback - 実行が失敗した際の代わりの解決策を提供する。
  • @Bulkhead - システムのオーバーロードや待ち続けることを防ぐ。
  • @CircuitBreaker - システムの残りが機能するよう失敗を分離する。

JSON Web Token (JWT) Propagation APIは相互運用のための一連の標準を含むトークンベースの認証/認可システムである。

Config 1.1 APIは、実行時に設定値をインジェクトするよう設計されており、バグフィックス向けにアップデートされた。拡張された仕様と連動するように、今までなかった重大な機能を追加するよう設計されている。

ウェブサイトのとおり、利点として以下のことが追加されている。

  • エンタープライズJavaでのマイクロサービス実装のため、より多くの機能を提供する
  • 異なるMicroProfile実装間での相互運用性で、ユーザがアプリケーションにおいて1つもしくは複数のMicroProfile実装を選択する自由を提供する
  • 各API向けの一貫した成果物のセット。互換性テストキット(TCK)やJavadoc、PDFドキュメント、API Mavenアーティファクトの統合、Gitタグ、ダウンロード可能なもの(仕様やソースコード)を含む

MicroProfileのロードマップでは次のバージョンMicroProfile 1.3を2017年12月15日にリリースするスケジュールを計画しているが、以下の新しいAPIが入るはずだ。

MicroProfile 2.0は、2018年3月31日のリリースが計画されているが、以下のJava EE 8 APIのアップグレードが含まれるはずだ。

  • JSON-B 1.0
  • JSON-P 1.1
  • CDI 2.0
  • JAX-RS 2.1

MicroProfileは2016年9月の発足以来Javaをマイクロサービスに適応させることに尽力してきた。最新バージョンについてのより詳細はMicroProfile 1.2の仕様にある。

IBM所属でCDIとMicroProfileの開発リードであるEmily Jiang氏と、Payara所属でJavaミドルウェアのコンサルタントであるMichael Croft氏は、InfoQにこの最新リリースについて語った。

InfoQ「新しいEE4Jプロジェクトに関してあなたの考えはどのようなものでしょう?」

Emily Jiang氏「新しいEE4Jプロジェクトはすばらしいオープンソース主導です。これは、受け入れることができるライセンス条項の下ではJava EEのTCKが利用できなかった方たちを含む、すべてのコミュニティのためになります。プロジェクトではすばやく、柔軟で、オープンで、うまくやっていくよう努力します。これがJava開発者のためになることは間違いありません。願わくば、リリース頻度がとても改善されて、Java EEのリリースサイクル時期が年に4、5回までいければいいのですが。TCKの開放は全アプリケーションサーバにとってよいことです。ライセンス費用によりTCKには違反していたけれども、手間をかけて自分自身を認証してきたアプリケーションサーバにとってはとくにそうです。

より多くのJavaコンテナやフレームワークのコミュニティがオープンでパブリックな活動領域で協力するため、そしてJava開発者とオープンに対話するために団結するのを見たいと願っています。開発者全員がプロジェクトに貢献し、問題を挙げ議論すべきです。私は新しいEE4Jプロジェクトに対してとても楽観視していますし、そこへの貢献を楽しみにしています。」

Michael Croft氏「個人的に、とても興奮しています。思うにこの1年あたりで業界で私たちが見てきたことは、概してオープンソースソフトウェアの強さ、特にオラクルやIBMのようなビッグプレーヤがコミュニティにプロジェクトを寄贈したときの強さです。JSFの場合、そのエキスパートグループメンバの何人かがすでにコミュニティの試みとして仕様を前に進めていくアイデアを挙げていました。EE4Jで、人々が関与する際の参入障壁が著しく低くなり、すでにメーリングリストやGitHubで強い反応が見られます。」

InfoQ「EE4Jへの貢献という観点では、MicroProfileはどのような役割を果たすと思いますか?」

Jiang氏「MicroProfileは1年間至る所に出ていました。1年以内にMicroProfile 1.0 (CDI 1.2、JAX-RS 2.0、JSON-P 1.0)、MicroProfile 1.1 (Config 1.0)、MicroProfile 1.2 (Config 1.1とFault Tolerance 1.0、Health 1.0、Metrics 1.0、JWT 1.0)と継続してリリースしました。リリースした仕様はJava EEでのマイクロサービス開発で長く望まれていた機能です。たとえばConfig JSRはJCPで10年以上前に提案されています。しかしその後さらに2回試みたにもかかわらず受理されませんでした。

対して、MicroProfile Configはパブリックにリリースされるまでほんの数ヶ月しかかかっていませんし、とてもよいフィードバックを受け取っています。MicroProfileコミュニティはとてもイノベーティブであり純粋に開発者主導です。起こっていることはすべて誰でも見られる状態なのです。これはすばやく、柔軟で、オープンで、うまくやっていく手法のよい例です。似た目標であり双方ともEclipseの下にあるので、EE4Jは将来MicroProfileの技術を簡単に採用できます。」

Croft氏「MicroProfileの活動はより早いイノベーションのペースへの要望から生まれました。開始直後からMicroProfileが独り立ちする意図はありますが、Java EE APIを使って始めており、まだJava EEに近いことは認めます。

MicroProfileの役割はすでに最初のAPIから見て取れます。MicroProfile内で開発されたAPI - Config - はEclipseへの移行が発表される直前にJSRとして承認されました。2つのプロジェクトが相互に関係する方法は明らかにたくさんあります。しかしそれがそのような形になるのかを考えるということがまだ残っています。

私の意見ではMicroProfileは独立して継続していくために必要なことをすべて持っています。すでに大部分はJava EE/EE4Jと互換性があり、それゆえにMicroProfileで開発される仕様はすべて比較的単純にEE4Jに提出できます。」

InfoQ「読者はMicroProfile 1.3のリリースでOpen Tracing API 1.0とOpen API 1.0にどんなことを期待できますか?」

Jiang氏「MicroProfile Open Tracingはサービスの境界をまたいでマイクロサービスのリクエストフローをたどるモデルを定義します。複数のサービスを通じてのリクエストフローがあるマイクロサービスアーキテクチャでは普通のことです。この仕様はopentracing.ioに基づいたAPIを定義します。そしてサービスが簡単に分散トレーシング環境に入れるよう振る舞いを指定します。この仕様はマイクロサービスがアノテーションを使って分散トレーシングを利用できる簡単な方法を定義します。この仕様が提供するすばらしい機能の1つとしては、JAX-RSアプリケーションをまったくコードを変更することなく分散トレーシングに自動的に追加できるというものです。

MicroProfile Open APIは統一されたJava APIを提供することを目標としています。これはOpenAPIのv3仕様で定義されたものです。このAPIは全アプリケーション開発者がAPIドキュメントを公開するために使います。OpenAPI v3仕様自身は言語から独立していますが、JavaベースのOpen APIを進化させたいという要求があります。アプリケーションサーバに採用するためです。この仕様はSmartBearが提供するSwaggerライブラリに基づいています。SmartBearはMicroProfileメンバです。MicroProfile Open API仕様はマイクロサービス開発によりフィットするようAPIをさらに改善します。

MicroProfile Open Tracing APIやOpen APIに加え、MicroProfileはもう1つの仕様、MicroProfile REST Clientを作成しました。これもMicroProfile 1.3リリースに向けて計画しています。この仕様はHTTPでのRESTfulサービス呼び出しに対し型安全なアプローチを提供します。この仕様はRESTクライアントに焦点を当てており、より簡単にクライアントを作成できることを目指しています。RESTクライアントは、アプリケーションサーバにおいてクライアント-サーバ間のコミュニケーションを処理するところだからです。」

Croft氏「この点について実は直近の隔週会議で議論がありました。MicroProfile 1.3は現在12月のリリースを目標にしており、締切に間に合うものか各プロジェクトの状態を見ています。現時点では、OpenAPIとOpenTracing、Typesafe REST Client APIはすべてリリースできる可能性が高いように見えます。OpenAPI仕様はかなり大きいので、そこでの大きな仕事はTCKです。仕様自身はSwaggerから始まったOpenAPIのバージョン3と互換性を持たせています。すでに多くの開発者が慣れているものです。

Typesafe REST Clientはプログラムを書く支えとなるインタフェースを定義することで、リモートのRESTサービスを利用する際の型安全な方法を開発者にもたらすことを目標にしています。OpenAPI仕様との緻密な調整はいくつかあるかもしれませんが、このあたりのことに対するしっかりした議論は1.0以降リリースのために延期してきました。投資する領域として可能性があるものの1つとしては、OpenAPIの定義からRESTクライアントのインタフェースを生成する方法というものです。これはツールの方が自然にフィットするかもしれませんが。

最後にOpenTracingはMicroProfileにOpenTracing標準をもたらします。これはZipkinやJaegerのようなトレーシングの実装と互換性があります。」

InfoQ「Java SEの新しいリリースサイクルはMicroProfileやEE4Jに影響するでしょうか?」

Jiang氏「Java SEでの新しい、より早いリリースサイクルはMicroProfileとEE4Jの開発にとてもよい方向で影響します。これが意味するのは、新しい、または更新された仕様が最新のJava SEの機能を利用できるということです。現在のMicroProfileプログラミングモデルは最低Java 8を必要とします。いくつかのすばらしい機能、たとえばFunctionalInterfaceやインタフェースのデフォルト実装などはMicroProfile仕様で広く使われています。」

Croft氏「私たちの顧客からJava SE関連で多くの質問を受けてきました。しかしこうした関心はまさにPayara ServerやPayara Microに関連しています。思うに、同じようにJava SEの変更が、仕様それ自身に影響するというよりもEE4JとMicroProfileの変更に影響する可能性が高いです。

とは言え、MicroProfileの本来の目的はイノベーティブになることと未来に目を向けることです。なので私は来年2018年に起こるJava SEの変更関連の議論のうちいくつかに期待しています。Java 8は来年9月にJava 11(現時点ではこう呼ばれています)が新しいLTSリリースとなるために公式アップデート終了となるからです。」

InfoQ「MicroProfileとJava 9の互換性はどう見越していますか?」

Jiang氏「MicroProfileのグーグルグループでまだこのトピックは議論していません。Java 9での1つ重要な要素として、Java 9がJava 8ほど長くサポートされないだろうということです。6ヶ月ごとのリリースサイクルのためです。このあとは、まだわかりません。このことはMicroProfileに影響します。MicroProfileでJava 9を採用する時期は、Open LibertyやWildfly Swarm、TomEE、PayaraといったアプリケーションサーバがJava 9をサポートする時期となります。」

Croft氏「Java 9以降の互換性は実装者にとって大いに問題となるでしょう。Payara ServerでのOSGiやその他の既存のモジュールシステムがすでにあるからです。指定されたLTSリリースがないので、Java 9への公式サポートがあるのか疑問です。なので将来のJavaのバージョンへの公式サポートとしては9月からのJava 11が選ばれるのではないかと思います。」

InfoQ「IBMでの現在の責務は何ですか?つまり、日々どんな作業をしていますか?」

Jiang氏「IBMのMicroProfile開発リードそしてCDIアーキテクトとして、MicroProfileの議論に積極的に参加し、さまざまな仕様に貢献しています。この仕様がどのようにOpen Libertyで実装されるのかの管理もしています。MetricsやHealth、REST Client、Open Tracingといった他の仕様への貢献だけでなく、MicroProfile ConfigとFault Tolerance仕様をリードしています。MicroProfileコミュニティへの影響力が大きいメンバーであるので、私はコミュニティとして作業のやり方を絶え間なく改善しようと試みることでMicroProfileをすばやく、リーンなものとし続けることにも尽力しています。私はMicroProfileのプログラミングモデルに関してとても情熱を持っています。MicroProfileについて多くのカンファレンス(Devoxx US、Devoxx UK、JAX London、Voxxed Belgrade、EclipseCon Europe)で話してきましたし、将来のリリースでの仕様の改善方法についてフィードバックを集めています。またConfigurationのJSRの共同スペックリードです。この役割では、MicroProfile Configでしてきたことを標準化しようと試みています。Config JSRとMicroProfile Configの同調を保つことも目的としてあります。ゆえに、Config JSRに追加された新しい機能はMicroProfile Configにも作られるでしょう。」

InfoQ「Payaraでの現在の責務は何ですか?つまり、日々どんな作業をしていますか?」

Croft氏「私の現在の責務はとても広範です!Payaraのサポートチームの責任者として働いているので、最初の責任は私たちの顧客に対して、そして私たちのコミュニティに対してです。幸い、チームと私たちの開発チームの両方にものすごく優秀で熱心な同僚がいて、一緒に働いているという特権があります。みんなで協力して、製品への商用サポートやドキュメント作成、ブログ投稿、カンファレンス登壇、MicroProfileへの貢献、コミュニティのサポート、そういったことに関することすべてをカバーしています!とても忙しいですが、私たちのユーザベースからのコメントを聞くのはとてもありがたいことです。」

リソース

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT