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

マイクロサービス開発フレームワークHelidon Nímaで構築するマルチクラウドなアプリケー...

マイクロサービス開発フレームワークHelidon Nímaで構築するマルチクラウドなアプリケーション/Multicloud Application build with Helidon Nima

2023/04/26に行われたJava on Azure Day 2023で使用したスライドです。

oracle4engineer

April 29, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. Java on Azure Day 2023 OpenAI など最新技術でここまでできる!Java 開発/運用の今と未来 Shuhei Kawamura

    日本オラクル株式会社 ソリューション・アーキテクト本部 クラウドソリューションエンジニア マイクロサービス開発フレームワークHelidon Níma で構築するマルチクラウドなアプリケーション
  2. 自己紹介 Copyright © 2023 Oracle and/or its affiliates. All rights

    reserved. 川村 修平(Shuhei Kawamura) • 日本オラクル株式会社 • ソリューション・アーキテクト本部 • 担当領域 • Cloud Native, App Dev • Data Platform (Spark周り) • AI Services • Search Service with OpenSearch • (趣味) 認証・認可関連(FIDO, OAuth, OpenID Connect, etc.) • 趣味 • サウナ、料理、音楽、スノーボード • コミュニティ • Oracle Cloud Hangout Cafe(OCHaCafe) • CloudNative Days - Observability @shukawam Twitter/GitHub/Qiita 2
  3. Copyright © 2023 Oracle and/or its affiliates. All rights reserved.

    Microsoft, Oracleが提供する Java&マルチクラウドのソリューション 4
  4. 単一のプロバイダーを選ぶ理由 • 「良いベンダーロックイン」を信じる • コストは支払ってもいい • 複数のクラウドの学習コストが割に合わない オンプレミスを継続する理由 • オンプレミスでしか動かないものがある

    • セキュリティ・コンプライアンスのため • データセンターやHWの保守切れがまだ先 マルチクラウドプロバイダーを選ぶ理由 • ベンダーロックインを避ける • IaaS/PaaS/SaaS最適な利用 • コストパフォーマンス マルチクラウドを選択する背景 Copyright © 2023 Oracle and/or its affiliates. All rights reserved. ソーシング (調達) アーキテクチャ ガバナンス インフラベンダーロックインの最小化 人件費含めたトータルコスト 最適なサービスをいいとこ取り (ベストオブブリード) ポリシー・構成の標準化 BCPの改善(障害対策) 5
  5. クラウド・パートナーシップ:2019年よりマルチクラウドの取り組みを推進、数百社のお客様をサポート Oracle + Microsoft Copyright © 2023 Oracle and/or its

    affiliates. All rights reserved. お客様は両クラウドの最適な機能 を使用してアプリケーションおよび データベースを実行可能 • Oracle Cloud Infrastructure • Oracle Autonomous Database • Oracle Exadata • Oracle Applications • Oracle RAC • Oracle Analytics Cloud • And other services… • Azure DevOps • Azure Stream Analytics • Azure Databricks • Azure Kubernetes Service • And other services… パートナーシップのポイント 1. OCI-Azure Interconnect 2. Oracle Database Service for Azure 3. 共同サポート Multicloud with OCI and Azure Microsoft Azure 6
  6. マルチクラウドおよびハイブリッド・クラウドのポートフォリオ Oracle Cloud - 分散クラウド・ソリューション Copyright © 2023 Oracle and/or

    its affiliates. All rights reserved. Azureのお客様向け、フルマ ネージド・サービスOCI Oracle Database Serviceの提供 マルチクラウド・アーキテクチャ 向け、低遅延・セキュアな専 用線接続 リモートでネットワーク接続が ない場所でのOCI クラウド機 能を提供 すべてのOCIサービスを、顧 客のデータ・センターで提供 Exadataのクラウド・サービ スを顧客のデータ・センター で実行 ネイティブVMware環境を OCIで提供 AWSでMySQL HeatWave を提供 New New Multicloud Hybrid Cloud 国や地域の主権や規制に 適合したクラウドをパート ナーより提供 OCIから、他クラウドのサービ スへシームレスに連携 予定 予定 Microsoft Azure Interconnect Oracle Database Service for Azure MySQL HeatWave on AWS OCI CloudHub Dedicated Region Oracle Alloy Exadata Cloud@Customer Roving Edge Infrastructure Oracle Cloud VMware Solution 8
  7. Oracle Interconnect for Azure OCIとMicrosoft Azure間のセキュアで低遅延なプライ ベート相互接続を提供。 数十分で接続設定が行え、クラウドにまたがったシステム を容易に構築できます。また、IDやアクセス管理の連携が 可能。

    Oracle Database Service for Azure OCI上で動作するOracle Database ServiceをAzure からシームレスに使用可能。 Azureの他のサービスと同様に使用でき、Oracle DatabaseをAzure環境に容易に導入可能。 Multicloud with OCI and Azure Copyright © 2023 Oracle and/or its affiliates. All rights reserved. 9
  8. エンタープライズ・アプリケーションのための2つのソリューションで幅広いニーズに対応 Java/Jakarta EEサーバ:Oracle WebLogic Server (Azure Marketplaceから提供) Javaマイクロサービス開発フレームワーク:Helidon (オープンソース) Oracle

    Java Solutions on Azure Copyright © 2023 Oracle and/or its affiliates. All rights reserved. 10 Azure Virtual Machine Azure App Service Azure Kubernetes Service 抽象度 高 Helidon WebLogic Server * Helidon WebLogic Server * Helidon
  9. デモ:ODSAで構築したATP*にJavaアプリケーションから接続する Copyright © 2023 Oracle and/or its affiliates. All rights

    reserved. JavaアプリケーションからATP*への疎通確認 • DBの接続に特殊な設定が不要なことを確認する Microsoft Azure Virtual Machine Autonomous Transaction Processing ATP Autonomous Transaction Processing ATP Virtual Machine 東日本 ap-tokyo-1 (東京) ap-tokyo-1 (東京) @HelidonTest public class OdsaTest { // ... omit @PersistenceContext(unitName = "pu1") private EntityManager entityManager; @Test void test_ODSAでプロビジョニングしたATPに接続ができる() { var start = System.currentTimeMillis(); var queryResult = entityManager .createNativeQuery("SELECT * FROM DUAL") .getSingleResult(); logger.info( String.format("Execution Time: %s[ms]", System.currentTimeMillis() - start)); assertEquals("X", queryResult.toString()); } } OdsaTest.java *: Autonomous Transaction Processing 11
  10. Copyright © 2023 Oracle and/or its affiliates. All rights reserved.

    マイクロサービス開発フレームワーク – Helidon & Helidon Níma 12
  11. エンタープライズ・アプリケーションの世界の変化 Copyright © 2023 Oracle and/or its affiliates. All rights

    reserved. Build Deploy Test Release DevOps Cycle 場所を問わず動作する クラウドネイティブな コンテナの展開 オープンソースの DevOpsツール群の連携 マイクロサービスと サーバーレス・ アプリケーション 複数言語を扱う Polyglotな アプリケーション Micro service 1 Busines s Domain Micro service 2 13
  12. マルチクラウドで構成するエンタープライズ・アプリケーションの構成例 Copyright © 2023 Oracle and/or its affiliates. All rights

    reserved. 14 Microsoft Azure Kubernetes 基盤(AKS) Autonomous Transaction Processing ATP … Build Test Deploy Azure DevOps $ kubectl apply … エンドユーザー … …
  13. クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス開発フレームワーク OracleがホストするOSSプロジェクト • GitHubでソースコードを公開:https://github.com/oracle/helidon • Helidonの商用サポートはWebLogic Server/Coherence/Verrazzanoのサポート契約に含まれる マイクロサービスアプリケーションが必要とする機能を提供するJavaライブラリの集合体 • 単体のJVMとして動作し、アプリケーションサーバ不要、容易なコンテナ化

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

    reserved. Full Stack MicroProfile based Microframeworks Helidon MP Helidon SE 16
  15. Helidon SEとMP • マイクロ・フレームワーク • 超軽量フットプリント • 関数型 • Reactive

    Web Server • Eclipse MicroProfile準拠 • 軽量フットプリント • 宣言型 • Java EEサブセット + マイクロサービス関連機能 Helidon MP Helidon SE フットプリント重視 機能性重視 互換性(MicroProfile準拠)重視 Copyright © 2023 Oracle and/or its affiliates. All rights reserved. ≒ + Eclipse MicroProfile + 拡張機能 17
  16. Helidon SE 3.x Copyright © 2023 Oracle and/or its affiliates.

    All rights reserved. Reactive Web Server Config Tracing OpenAPI Health Check Metrics LRA Scheduling gRPC Server and Client Security GraphQL Fault Tolerance CORS DB Client Web Client Reactive Streams Reactive Messaging WebSocket 18
  17. Helidon MP 3.x Copyright © 2023 Oracle and/or its affiliates.

    All rights reserved. MicroProfile Config MicroProfile Metrics MicroProfile Health Check MicroProfile Tracing MicroProfile Fault Tolerance MicroProfile JWT Auth MicroProfile REST Client MicroProfile Open API MicroProfile Reactive Streams Operators MicroProfile Reactive Messaging MicroProfile GraphQL MicroProfile LRA Jakarta Restful Web Services Jakarta JSON Processing Jakarta JSON Binding Jakarta Persistence Jakarta Transactions Jakarta WebSocket Jakarta CDI CORS gRPC Server/Client MicroProfile Components Jakarta EE Components 19
  18. https://openjdk.org/jeps/444 • Java 19から導入されたJVM上の仮想的なスレッド • Fiber, Coroutine, SemiCoroutine, … •

    thread-per-requestモデルで実装されたサーバーサイド・アプリケーションのスループット向上が目的 • java.lang.Thread APIを使う既存コードは最小限の修正でVirtual Threadsを扱える • 既存のJDKツールを用いたトラブルシューティング、デバッグ、プロファイリングは容易に行えるように JEP 444: Virtual Threads Copyright © 2023 Oracle and/or its affiliates. All rights reserved. OSスレッド OSスレッド JVMスレッド JVMスレッド OSスレッド OSスレッド JVMスレッド JVMスレッド JVM スレッド JVM スレッド ・・・ JVM スレッド JVM スレッド ・・・ 1 1 N 今までのJavaのスレッド Virtual Threads M N 20
  19. Virtual Threadsによるthread-per-requestモデルの採用 • https://helidon.io/nima • νήμα(nima)は、ギリシャ語で「糸、毛糸、編み糸」という意味 • Virtual ThreadsベースのJavaのマイクロサービス開発フレームワーク •

    HelidonのエコシステムにおけるNetty*の置き換えがゴール • 非同期スタイルの複雑な実装なしに高いスループットを実現 • 2023年4月現在:テクノロジープレビュー版をHelidon 4.0.0-ALPHA6で公開中 • https://github.com/helidon-io/helidon/releases/tag/4.0.0-ALPHA6 • 提供機能: • HTTP/1, HTTP/2, gRPC, Metrics, Health Checks, Tracing, Fault Tolerance, Testing Integration, … *: イベントドリブンな非同期通信を行うアプリケーションを開発するためのフレームワーク Helidon Níma Copyright © 2023 Oracle and/or its affiliates. All rights reserved. 21
  20. MicroProfile - Health Kubernetesなどのコンピューティングノードの状態を調査するプロセスに対してヘルスチェック情報を提供する Health Checks Copyright © 2023 Oracle

    and/or its affiliates. All rights reserved. @Liveness @ApplicationScoped public class CustomLivenessCheck implements HealthCheck { @Override public HealthCheckResponse call() { return HealthCheckResponse .named("CustomLivenessCheck") .up() .withData("time", System.currentTimeMillis()) .build(); } } HealthCheckインタフェースを実装したクラスに @Liveness, @Readiness and/or @Startup アノテーションをつける { "status": "UP", "checks": [ { "name": "CustomLivenessCheck", "status": "UP", "data": { "time": 1681141164513 } } ] } /health/live Annotation Path Function @Liveness /health/live Liveness @Readiness /health/ready Readiness @Startup /health/started Startup 22
  21. MicroProfile - Metrics Metrics = システムの情報を収集後、付加情報を付与して数値に変換したもの Polyglot環境に適したモニタリングを可能にする • JMX(Java Management

    Extensions) はJVM前提… ヘルスチェックとは異なる目的を持つ • 長期的なトレンド把握 • キャパシティ・プランニング、潜在的問題の早期把握 • スケジューリング・システムと連動したスケーリング OpenMetrics • CNCF(Cloud Native Computing Foundation) のサンドボックス・プロジェクト • クラウド・ネイティブのメトリクスを大規模に伝送するためのデファクト・スタンダードを規定 Metrics Copyright © 2023 Oracle and/or its affiliates. All rights reserved. # TYPE base_thread_count gauge # HELP base_thread_count Displays the current number of live threads including both daemon and nondaemon threads base_thread_count 21 Helidonは、/metricsで Prometheus形式 or JSON形式のメトリクスを提供 23
  22. MicroProfile - OpenTracing Trace = コンポーネント間を跨ぐイベントまたはトランザクションの因果連鎖の指標 OpenTracing(※補足あり) • トレーシング(分散トレーシング)のためのAPI仕様およびフレームワーク •

    Jaeger, Zipkinなど様々なバックエンドに対応 • トレーシング(分散トレーシング)において、ベンダーニュートラルな仕様を規定 Helidonは、OpenTracing準拠の分散トレーシングのためのAPIを提供 JAX-RS/Jakarta RESTfulアプリケーションは追加的なコードを必要とせずにリクエスト境界でSpan情報を提供 Tracing Copyright © 2023 Oracle and/or its affiliates. All rights reserved. Request Output 処理 A 処理 B 処理 C 処理 D ・・・ 24
  23. Microsoft Azure デモ:ODSA(ATP) + Helidon Nímaで作るマルチクラウドなアプリケーション Copyright © 2023 Oracle

    and/or its affiliates. All rights reserved. Kubernetes基盤(AKS) monitoring Autonomous Transaction Processing ATP apps Health Checks (Liveness/Readiness) Metrics Tracing K6 (OSSの負荷試験ツール) Visualize 26 vus=5, duration=5m
  24. Microsoft + Oracleが提供するJava、マルチクラウドのソリューション • WebLogic Server & Helidon → VM,

    AKS, App Service (Helidonのみ) • Oracle Interconnect for Azure → AzureとOCI間のセキュアで低遅延なプライベートな相互接続を提供 • Oracle Database Service for Azure → Azureの他のサービスと同様に、OCI上で動作するOracle Database ServiceをAzureからシームレスに使用可能 マイクロサービス開発フレームワークHelidon • マイクロサービスアプリケーションが必要とする機能を提供するJavaライブラリの集合体 • MP, SEのモデルを提供 • Helidon 4.0より、Virtual ThreadsベースのHelidon Nímaがリリース予定 まとめ Copyright © 2023 Oracle and/or its affiliates. All rights reserved. 27
  25. • JEP 444: Virtual Threads (Second Preview) • https://openjdk.org/jeps/444 •

    Loom – Fibers, Continuations and Tail-Calls for the JVM • https://openjdk.org/projects/loom/ • Helidon • https://helidon.io/#/ • https://oracle-japan-oss-docs.github.io/helidon/docs/v3 • https://helidon.io/nima • Helidon Níma – Helidon on Virtual Thread • https://medium.com/helidon/helidon-n%C3%ADma-helidon-on-virtual-threads-130bb2ea2088 参考情報 Copyright © 2023 Oracle and/or its affiliates. All rights reserved. 28