9. 9
オープン・ソース (github.com/oracle/helidon)
• 2019/02/15 に1.0.0をリリース
マイクロサービスを開発するためのJavaライブラリの集合体
JVM上の単体アプリケーションとして動作
従来からの一般的なツール・基盤で開発&デプロイ可能
• Java SE, Maven/Gradle, Docker, Kubernetes, etc.
Helidon とは?
※ Helidonは ギリシア語でつばめ(swallow)を意味します
Docker Image
Kubernetes
Helidon jars
OS base image
Library jars
App classes
Pod Pod Pod
Replica Set
Java SE runtime
20. Helidon MP Components
MP Config Metrics
Health
Check
Fault
Tolerance
JWT Auth
JAX-RS CDI JSON-P / B
Open API
Open
Tracing
REST Client
SE SE
SE
JPA
gRPC
JTA
SE
+
20
MicroProfile =
この機能を実際にどう使うかということですが、様々な監視モジュールやエージェントがこのパスのRESTをたたいてヘルスチェックを行うことができる
KuberenetesにはLivenessProbeとReadinessProbeというのがあって、この仕組みをばっちり使うことができる
200 OK
503 Service Unavailable
Helidon MPでもGraalVMのnative imageの作成ができるようになります
CDIの参照実装であるWeldをカスタマイズしたものを使っていて、native imageを作成できますけどCDI compatibleです。native imageをビルドする際に標準的なCDIのアプローチを使ってCDIの依存性を解決しています。
Helidon DB Client – ノンブロッキング、リアクティブなDBアクセス、Java SEでリアクティブ処理を行うためのFlow API(Publisher/Subscriber)を使った実装、JDBCとMongoDBをサポート
Reactive Streams Operators /Reactive Messaging などのリアクティブ処理を実現するMicroProfileのオプショナル仕様のサポートと、さらにKafka Connectorの提供
CLIを使ってプロジェクトライブラリの依存関係の管理やデプロイターゲット毎(Docker imageやnative image)のビルド作業を効率化してくれる
Verrazzano という聞きなれない言葉がでてきました – Oracleがこれからリリースする新しいソリューションの名前です。
---
CDI Extentionの実装方法について一つ注意点があります。CDIの起動シーケンスがnative imageのビルド時と実行時に分かれるため、ビルド時に接続する先のシステムの接続を確認したりするようなことはできません。
One of these restrictions is how a CDI extension behaves - the CDI startup sequence is separated - everything until deployBeans happens at build time, everything else (validateBeans, endInitialization) at runtime of the image.