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

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

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

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

oracle4engineer
PRO

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
    で構築するマルチクラウドなアプリケーション

    View Slide

  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

    View Slide

  3. 1. Microsoft + Oracleが提供するJava&マルチクラウドのソリューション
    2. マイクロサービス開発フレームワーク – Helidon & Helidon Níma
    アジェンダ
    Copyright © 2023 Oracle and/or its affiliates. All rights reserved.
    3

    View Slide

  4. Copyright © 2023 Oracle and/or its affiliates. All rights reserved.
    Microsoft, Oracleが提供する
    Java&マルチクラウドのソリューション
    4

    View Slide

  5. 単一のプロバイダーを選ぶ理由
    • 「良いベンダーロックイン」を信じる
    • コストは支払ってもいい
    • 複数のクラウドの学習コストが割に合わない
    オンプレミスを継続する理由
    • オンプレミスでしか動かないものがある
    • セキュリティ・コンプライアンスのため
    • データセンターやHWの保守切れがまだ先
    マルチクラウドプロバイダーを選ぶ理由
    • ベンダーロックインを避ける
    • IaaS/PaaS/SaaS最適な利用
    • コストパフォーマンス
    マルチクラウドを選択する背景
    Copyright © 2023 Oracle and/or its affiliates. All rights reserved.
    ソーシング
    (調達)
    アーキテクチャ
    ガバナンス
    インフラベンダーロックインの最小化
    人件費含めたトータルコスト
    最適なサービスをいいとこ取り
    (ベストオブブリード)
    ポリシー・構成の標準化
    BCPの改善(障害対策)
    5

    View Slide

  6. クラウド・パートナーシップ: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

    View Slide

  7. 日本では東京リージョンで使用可能
    Oracle Cloud & Azureのマルチクラウド環境を展開
    Copyright © 2023 Oracle and/or its affiliates. All rights reserved.
    Regions Enterprise customers Latency
    300+
    12 2ms
    7

    View Slide

  8. マルチクラウドおよびハイブリッド・クラウドのポートフォリオ
    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

    View Slide

  9. 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

    View Slide

  10. エンタープライズ・アプリケーションのための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

    View Slide

  11. デモ: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

    View Slide

  12. Copyright © 2023 Oracle and/or its affiliates. All rights reserved.
    マイクロサービス開発フレームワーク –
    Helidon & Helidon Níma
    12

    View Slide

  13. エンタープライズ・アプリケーションの世界の変化
    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

    View Slide

  14. マルチクラウドで構成するエンタープライズ・アプリケーションの構成例
    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 …
    エンドユーザー …

    View Slide

  15. クラウド・ネイティブ時代に最適な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

    View Slide

  16. Helidonのポジショニング
    Copyright © 2023 Oracle and/or its affiliates. All rights reserved.
    Full Stack
    MicroProfile based
    Microframeworks
    Helidon MP
    Helidon SE
    16

    View Slide

  17. 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

    View Slide

  18. 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

    View Slide

  19. 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

    View Slide

  20. 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

    View Slide

  21. 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

    View Slide

  22. 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

    View Slide

  23. 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

    View Slide

  24. 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

    View Slide

  25. OpenTelemetry(OTel)
    • 分散トレーシングやメトリクスなどのデータを収集、処理、エクスポートするためのオープンソースプロジェクト
    • 2019年に、OpenCensus, OpenTracingがOpenTelemetryとして統合
    • MicroProfile 6.0では、OpenTelemetryに対応
    補足:トレーシング(分散トレーシング)標準化について
    Copyright © 2023 Oracle and/or its affiliates. All rights reserved.
    25
    引用:https://microprofile.io/compatible/5-0/ 引用:https://microprofile.io/compatible/6-0/

    View Slide

  26. 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

    View Slide

  27. 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

    View Slide

  28. • 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

    View Slide

  29. Copyright © 2023 Oracle and/or its affiliates. All rights reserved.
    Thank you
    29

    View Slide

  30. View Slide