Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Helidon 概要

Helidon 概要

oracle4engineer

December 21, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. エンタープライズ・アプリケーションの世界の変化 Copyright © 2024, Oracle and/or its affiliates. 2 Build

    Deploy Test Release DevOps Cycle 場所を問わず動作する クラウドネイティブな コンテナの展開 オープンソースの DevOps ツール群の連携 マイクロサービスと サーバーレス・ アプリケーション 複数言語を扱う Polyglot な アプリケーション Micro service 1 Busines s Domain Micro service 2
  2. Javaのマイクロサービス・フレームワーク OracleがホストするOSSプロジェクト • GitHubでソースコードを公開:https://github.com/helidon-io • Helidonの商用サポートはWebLogic Server/Coherenceのサポート契約に含まれる マイクロサービスアプリケーションが必要とする機能を提供するJavaライブラリの集合体 • 単体のJVMとして動作し、アプリケーションサーバ不要、容易なコンテナ化

    • 必要なコンポーネントを追加して拡張することも可能 マイクロサービスの開発・運用を支援する機能を提供 • OpenMetrics(監視)、OpenTelemetry(追跡)、OpenAPI(API公開) • 耐障害性/回復性: ヘルスチェック、サーキット・ブレーカ 2つのプログラミングモデルを提供 • Helidon MP:宣言的記法(Java EE開発者フレンドリー) • Helidon SE:関数的型記法 Project Helidon 4.0 Copyright © 2024, Oracle and/or its affiliates. 3
  3. Helidonのポジショニング 4 Copyright © 2024, Oracle and/or its affiliates. Full

    Stack MicroProfile based Microframeworks Helidon MP Helidon SE
  4. Helidon SE と MP 5 • マイクロ・フレームワーク • 超軽量フットプリント •

    関数型 • 仮想スレッドを利用したWebサーバ • Eclipse MicroProfile 準拠 • 軽量フットプリント • 宣言型 • Java EEサブセット + マイクロサービス関連機能 Helidon MP Helidon SE フットプリント重視 機能性重視 互換性(MicroProfile準拠)重視 Copyright © 2024, Oracle and/or its affiliates. ≒ + Eclipse MicroProfile + 拡張機能
  5. Helidon MP が準拠する業界規格 • マイクロサービス環境の中で動作するJavaアプリケーションの開発に必要な機能を規定 • マイクロサービス各種仕様に準拠 • マイクロサービスのデザインパターンを実装 •

    業界規格フレームワークの恩恵 • 開発者はビジネスロジックの実装に集中でき、効率的な開発ができる • 基盤となる実装は、MicroProfileプロバイダの品質維持・向上を期待できる • ベースは JavaEE (JakartaEE) のサブセット – アプリケーション・サーバー開発経験者が取り組みやすい Eclipse MicroProfile Copyright © 2024, Oracle and/or its affiliates. 6 Open Telemetry OpenAPI Circuit Breaker Bulk Head Health Check マイクロサービス各種仕様に準拠 マイクロサービスのデザインパターンを実装 OpenMetrics
  6. • Helidon は ライブラリをパッケージングした Java SE アプリケーションとして実行される • Helidon アプリケーションは個々の

    Java VM 上で実行(Java VM は共有されない) • 複数の パッケージング・オプション、Dockerにも対応 – ビルド・ツールを使って簡単に作成 多彩なパッケージング Copyright © 2024, Oracle and/or its affiliates. 7 実行可能 Jar Jlink ランタイム・イメージ GraalVM ネイティブ・イメージ Container Application Java Runtime Linux Container Custom Java Runtime Linux Container Native Application Linux Application
  7. 周辺 システム Cloud Services WebLogic Helidon ~ OCI上でのアプリケーション構成例 Copyright ©

    2024, Oracle and/or its affiliates. 8 App #1 デプロイメント App #2 デプロイメント App #3 デプロイメント App #4 デプロイメント フロント層 バック層 データ永続化層 OCI Database サービス • レプリカセットの維持(再起動) • ローリングアップデート • スケーリング APIs for Business Load Balancer API Gateway APIs for IT ReplicaSet Autonomous Database Streaming No SQL Database Functions Container Engine For Kubernetes Container Engine For Kubernetes Exadata Cloud Database Cloud Service MySQL Database Service Browser(SPA) Mobile App IoT App App App App App App App App App App App App ReplicaSet ReplicaSet ReplicaSet
  8. HelidonはOpen Sourceのプロジェクト • Apache 2.0 License Open Sourceとしてのサポートを提供中 • Web

    Site with guides and tutorials: https://helidon.io • StackOverflow: https://stackoverflow.com/tags/helidon • Public Slack channel: https://helidon.slack.com • GitHub issues tracker: https://github.com/oracle/helidon/issues Oracleによる商用サポートについて • WebLogic Server/Coherenceライセンス保有のお客様にHelidonのサポートを提供中 Helidonのサポートについて 9 Copyright © 2024, Oracle and/or its affiliates.
  9. クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク マイクロサービス環境に適したアプリケーションを効率的に開発 • SEとMPの二つのエディションを用意 – 要件に応じた使い分け MicroProfileによる仕様標準化の恩恵、ロックインの回避 • Metrics, Health,

    OpenAPI, OpenMetrics, OpenTelemetryなどはノー・コーディングで利用可能 • 開発者はビジネスロジックの開発に専念できる • ベンダーの健全な競争の下で、フレームワーク実装の品質向上が見込める 実際のプロジェクトで必要となる拡張機能の提供 – セキュリティ、データベース接続、etc. 多くの実績の中で育まれたJavaのエコシステム • IDE、ライブラリ、モニタリング・プロファイリング・デバッギング、etc. • GraalVMの活用 まとめ - Helidonを採用すべき理由 10 Copyright © 2024, Oracle and/or its affiliates.
  10. Helidon 4.0.0 Helidon MP を構成するコンポーネント Copyright © 2024, Oracle and/or

    its affiliates. 15 MP Config Metrics Health Check Fault Tolerance JWT Auth JAX-RS CDI JSON-P / B Open API Open Telemetry REST Client SE SE CORS WebSocket gRPC + オリジナル JavaEE由来 MicroProfile Sandbox Reactive Streams Operators Reactive Streams Messaging OCI Object Storage, Vault, ATP GraphQL SE MicroProfile = JPA Bean Validation JTA Kafka/JMS Connector SE SE Scheduling DB Client HashiCorp Vault Web Client SE For SE For SE SE SE SE Helidon オリジナル SE Long Running Actions SE For SE SEにも同等の機能あり SE向けに提供 (MPでも利用可) Open Tracing (Deprecated) SE
  11. 1ステートメントで起動できるREST APIサーバー Helidon SE – 関数スタイルのシンプルなRESTサーバー開発 16 public static void

    main(String[] args) throws Exception { WebServer webServer = WebServer .builder() .routing(Main::routing) .build() .start(); } static void routing(HttpRouting.Builder router) { // パスやレスポンスを登録するrouting設定を定義 router.get("/*", (req, res) -> res.send("WebServer Works!")); } Helidon SE Copyright © 2024, Oracle and/or its affiliates.
  12. アノテーションでPOJO(=普通のJavaクラス)がRESTサービスに! Helidon MP – MicroProfileを使ったRESTサーバー開発 17 @ApplicationScoped @Path("/echo") public class

    EchoResource{ @Inject @ConfigProperty(name = “echo.reply", defaultValue = "Hi!") private String reply; @POST @Produces(MediaType.APPLICATION_JSON) public Response handleRequest(Message message, @Context UriInfo uriInfo) { JsonObject json = Json.createObjectBuilder() .add("url", uriInfo.getRequestUri().toASCIIString()) .add("text", message.text) .add(“reply", reply) .build(); return Response.ok(json.toString()).build(); } } CDI JSON-B JSON-P JAX-RS JAX-RS CDI JAX-RS JAX-RS MicroProfile Config Java EEから必要十分な仕様を 引き継いだ、分かりやすくて 非常に強力なマイクロサービス 開発フレームワーク Copyright © 2024, Oracle and/or its affiliates. Helidon MP
  13. 様々な認証・認可スキームに対応 / IDCSを使った認証・認可を効率的に開発可能 JWT Provider HTTP Basic Authentication HTTP Digest

    Authentication Header Assertion HTTP Signatures ABAC Authorization Google Login Authentication Provider OIDC (OpenID Connect) Authentication Provider IDCS Role Mapping Provider • IDCSのユーザー/グループを使ったアクセス制御 Helidonが提供するSecurity Providers Copyright © 2024, Oracle and/or its affiliates. 18 Identity Provider Helidon OpenID Connect 認証シーケンス Browser OIDC (Open ID Connect) Authentication Provider を使ったユーザー認証 user/group scope * IDCS = Oracle Identity Cloud Service @GET @Path("/admin-role") @Authenticated @RolesAllowed("admin") public void somemethod() { return; } IDCSで定義した adminロールに マッピングする MicroProfileの ソースコードの例
  14. CDI extensions • HikariCP data sources • Oracle UCP data

    sources • Jedis clients • OCI Object Storage clients • Java Transaction API (JTA) objects Java Persistence API (JPA)のサポート • JDBC Driver (DataSource) + JTA Extension + Hikari Connection Pool Extension + EclipseLink JPA Extension データの永続化/キャッシュが必要な場合に便利な機能 19 CDI extension = CDIのライフサイクルイベントを受け取って独自の実装を追加するための仕様 JPA = Javaオブジェクトをデータベースに永続化するための仕様 JTA (Java Transaction API) = トランザクションを管理するための仕様 Helidon MP JDBC Driver Java Transaction API EclipseLink (JPA) Entity App Hikari Connection Pool application.yaml persistence.xml Helidon MPによるJPA/JTAサポート Copyright © 2024, Oracle and/or its affiliates. Helidon MP
  15. ※現在はExperimentalのステータス gRPCのサーバー&クライアント実装を簡単に開発できる SE、MP両エディションでサポート • SE – リアクティブ・スタイル • MP –

    POJO + アノテーション • 従来からのProtobufサービス/スタブも利用可能 ペイロード・タイプは Protocol Buffers と Java Serialization をサポート Security, Telemetry, Health Check機能を提供 もちろんRESTサービスと共存(サーバー・ポートは別) gRPC のサポート 20 gRPCとは? • CNCF(Cloud Native Computing Foundation)のインキュベーション・プロジェクト • マイクロサービス間で効率的な通信を実現するためのしくみ @RpcService(name = "helloworld.Greeter") @ApplicationScoped public class GreeterService{ @Unary(name = "SayHello") public HelloReply sayHello(HelloRequest req) { return HelloReply .newBuilder() .setMessage("Hello " + req.getName()) .build(); } } Helidon MPのコーディング例 Copyright © 2024, Oracle and/or its affiliates.
  16. MicroProfile Reactive Messaging 準拠のKafka Connector MicroProfile Reactive MessagingをベースにKafkaとの送受信機能を提供 • アノテーションを使って簡単に送受信を実装

    Kafkaの接続情報は設定ファイル内で指定 • アプリケーションはKafka接続への依存性を排除できる OCI Streaming ともKafka互換APIを使って通信可能 Helidon Kafka Connector Copyright © 2024, Oracle and/or its affiliates. 21 Helidon Kafka Connector Producer Helidon Kafka Connector Consumer Kafka-pub Kafka-sub MicroProfile Reactive Messaging MicroProfile Reactive Messaging Kafkaへの送信 Kafkaからの受信
  17. Annotation, LRA Coordinator アノテーションを使ったプログラミング・モデル LRAの一連のライフサイクル処理を Annotation を使って 定義する LRA Coordinator

    がトランザクションの状態を管理 • すべてのLRAトランザクションを追跡し、LRAトランザク ションがキャンセルまたは完了したときに参加者の補 償RESTエンドポイントを呼び出す • Narayana coordinator互換の Helidon LRA Coordinatorを提供 MicroProfile Long Running Actions (LRA) Copyright © 2024, Oracle and/or its affiliates. 23 Coordinator Annotation Description @LRA LRAのライフサイクルを制御する @Compensate LRAがキャンセルされた場合に呼び出される @Complete LRAがクローズされた場合に呼び出される @Forget LRAに割り当てられたリソースを解放する @Leave LRAとの関連が無くなった場合に呼び出される @Status LRAのステータスを報告する @AfterLRA LRAが最終ステートに到達した際に呼び出される @LRA(LRA.Type.REQUIRES_NEW) @Path("/cdi") @PUT public void doInTransaction(@HeaderParam(.. Helidon MP
  18. 分散トレーシングに加えてサーバーメトリクス/リソース収集をサポート OCI Application Performance Monitoringでは、Helidon専用のJavaライブラリを提供 • アプリケーションの変更無しで、分散トレーシングやメトリクス監視が可能 OCI APM Java

    Tracer を使った Helidon アプリケーションのモニタリング Copyright © 2024, Oracle and/or its affiliates. 24 分散トレーシング : スパン 分散トレーシング : トポロジー サーバーリソースのモニタリング アラートの設定
  19. Eclipse MicroProfile準拠のフレームワークが最適 Java EE標準企業が選択すべき次世代フレームワークは? Copyright © 2024, Oracle and/or its

    affiliates. 25 • Java EEが現行標準フレームワーク • Java EEの開発・運用スキルを保有 • マイクロサービス志向 - 高頻度リリース、変更の局所化 - コンテナ化/軽量フットプリント - CI/CDとの連携・DevOpsとの親和性 • APIファースト - サービス定義の明確化と共有化 - モジュール(API)の再利用性向上 • SPA(Single Page Application) - UIの柔軟性向上、高機能化 - フロントエンドとバックエンドの分離 技術 トレンド バック グラウンド Eclipse MicroProfile規格が要件にフィット • マイクロサービスのためのフレームワーク - 軽量フレームワーク、Java SEベース - REST APIを効率的に開発可能 - CI/CDとの親和性が高い - Metrics, Health, OpenTelemetryなど運用監視に 必要な機能を標準実装 - Cloud Native Computing Foundation(CNCF)の 各種規格への準拠 = Interoperability高 • ベースとなる規格はJava EEのサブセット - Javaスキル保有者の学習コスト低 • 共通規格 = ベンダ・ロックインを回避 Helidon MP
  20. Oracle主導で開発されるOSS GraalVM:Java SE互換の次世代多言語プログラミング実行環境 Copyright © 2024, Oracle and/or its affiliates.

    26 GraalVMによる3つのイノベーション • Javaアプリを安定・高速実行 • Javaで書かれた新たなJITコンパイラ • JavaアプリのNative Image化 • 事前にマシン語にコンパイル(Ahead-of-Time Compilation) • 起動時間の極小化とメモリフットプリントの削減 • 複数プログラミング言語を実行可能なランタイム • Java, JavaScript, Ruby, Rust, C, C++… • 単一プログラム内で、複数言語を絡めた記述が可能 Community Edition(GPLv2)とEnterprise Edition • EEは最適化されたパフォーマンスとサポートを提供 • EEはOracle Cloud Infrastructureで無償利用可能 HotSpot JVMCI (JITコンパイラをJavaで実装するためのインターフェース) Graal GraalVM Javaアプリ Truffle Sulong JS Ruby R C C++ HotSpot Compiler I/F C2 (for Server) Javaアプリ Native image SubstrateVM Javaアプリ (マシン語) シングルバイナリ
  21. Our mission is to help people see data in new

    ways, discover insights, unlock endless possibilities.