概要
前回の記事では、Eclipse MicroProfileの始め方をご紹介しました。今記事では、そもそもEclipse MicroProfileとはなにか?を紹介します。
生まれたきっかけ
もともとはJavaEEの仕様策定のプロセスが遅い、リソースを十分に供給できていないと危機感を持った複数のベンダーとJavaコミュニティによって生まれました。
特徴としては、JAX-RSやCDIなど、JavaEEの中で慣れ親しんだ仕様を一部取り込みつつ、マイクロサービスアーキテクチャで必要な機能を独自で取り込んでいくというものとなります。
※現在の公式サイトのWhitePaparから抜粋
その後、2017年1月ごろ、Eclipse Foundation傘下に正式に加わった物となります。
仕様に準拠しているプロダクト、実装
これも上述のホワイトペーパーを抜粋すると以下の通りとなっています。
ここで注目すべきは以下の通りです。
- JBoss EAPはJavaEEサーバにも関わらず、MicroProfileにも準拠している
- Open LibertyはJavaEE のWebProfile仕様準拠にも関わらず、MicroProfileにも準拠している
- 日本国内のJavaEEサーバベンダーで対応しているのは富士通社のみ
Eclipse MicroProfile3.0の仕様一覧
最後に、簡単にではありますが、各種仕様について一言ずつ説明していきます。
Eclipse MicroProfile Config
クラウド上やマイクロサービスとしてアプリケーション設定をしやすくします。
具体的には、アプリ内に設定をハードコードしてしまうと、環境によってアプリを都度ビルドする必要が出てきてしまうため、起動時の引数や、環境変数の内容で設定を上書きできるようにすることができます。SpringBootでも同じような機能がありますね。
Eclipse MicroProfile Fault Tolerance
マイクロサービスとしてアプリケーションを作る際に、別のサービスとの関連と、ビジネスロジックを分離することを目的とした機能です。具体的な機能としては、TimeOut、RetryPolicy、Fallback、Bulkhead、Circuit Breakerなどがあります。
Eclipse MicroProfile Health
マイクロサービスとして呼ばれるサービスとして、そのサービスが応答できる健康な状態かどうかを示す機能を提供する仕様です。Up、Downだけでなく、捕捉情報も含めて返却することができます。
Eclipse MicroProfile JWT Authentication
OpenID Connect (OIDC) と JSON Web Tokens (JWT)を使って認証機能を提供します。
role based access control (RBAC)で作られるマイクロサービスとして提供されることを前提としています。
Eclipse MicroProfile Metrics
運用時に必要なメトリクスを提供する機能を示した仕様です。
Eclipse MicroProfile OpenAPI
マイクロサービスをOpenAPI仕様であるOpenAPI v3 specificationに則るAPIドキュメンテーションを出力できるような機能を提供する仕様です。
Eclipse MicroProfile OpenTracing
マイクロサービスでは、どのサービスが遅延しているか、どのサービスがどんな頻度でエラーとなっているかを可視化しておくことが重要です。トレース結果を出力することができます。
Eclipse MicroProfile Rest Client
JavaEEのJAX-RS 2.1 APIのRest Client作成をベースとしてよりtype-safeに実装することができるようにする機能を提供する仕様です。
JavaEEから継承している仕様
- CDI 2.0
- JAX-RS 2.1
- JSON-B 1.0
- JSON-P 1.1
- Common Annotations 1.3
## まとめ
今回はコード無しで、Eclipse MicroProfileについて説明しました。
UberJarの話とかすっとばしましたが、なんとなく全体像は分かったのではないでしょうか。
JavaEEで慣れ親しんだ仕様+マイクロサービスで必要な機能ということで有用なものもあったかと思います。個人的にはConfigとかは、マイクロサービス関係なく、どんなアプリでもこの機能があると開発が楽になるものと思うので、他でも楽に使えると良いかと思いました。