2023/04/26に行われたJava on Azure Day 2023で使用したスライドです。
Java on Azure Day 2023OpenAI など最新技術でここまでできる!Java 開発/運用の今と未来Shuhei Kawamura日本オラクル株式会社ソリューション・アーキテクト本部クラウドソリューションエンジニアマイクロサービス開発フレームワークHelidon Nímaで構築するマルチクラウドなアプリケーション
View Slide
自己紹介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@shukawamTwitter/GitHub/Qiita2
1. Microsoft + Oracleが提供するJava&マルチクラウドのソリューション2. マイクロサービス開発フレームワーク – Helidon & Helidon NímaアジェンダCopyright © 2023 Oracle and/or its affiliates. All rights reserved.3
Copyright © 2023 Oracle and/or its affiliates. All rights reserved.Microsoft, Oracleが提供するJava&マルチクラウドのソリューション4
単一のプロバイダーを選ぶ理由• 「良いベンダーロックイン」を信じる• コストは支払ってもいい• 複数のクラウドの学習コストが割に合わないオンプレミスを継続する理由• オンプレミスでしか動かないものがある• セキュリティ・コンプライアンスのため• データセンターやHWの保守切れがまだ先マルチクラウドプロバイダーを選ぶ理由• ベンダーロックインを避ける• IaaS/PaaS/SaaS最適な利用• コストパフォーマンスマルチクラウドを選択する背景Copyright © 2023 Oracle and/or its affiliates. All rights reserved.ソーシング(調達)アーキテクチャガバナンスインフラベンダーロックインの最小化人件費含めたトータルコスト最適なサービスをいいとこ取り(ベストオブブリード)ポリシー・構成の標準化BCPの改善(障害対策)5
クラウド・パートナーシップ:2019年よりマルチクラウドの取り組みを推進、数百社のお客様をサポートOracle + MicrosoftCopyright © 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 Interconnect2. Oracle Database Service for Azure3. 共同サポートMulticloud with OCI and Azure Microsoft Azure6
日本では東京リージョンで使用可能Oracle Cloud & Azureのマルチクラウド環境を展開Copyright © 2023 Oracle and/or its affiliates. All rights reserved.Regions Enterprise customers Latency300+12 2ms7
マルチクラウドおよびハイブリッド・クラウドのポートフォリオOracle Cloud - 分散クラウド・ソリューションCopyright © 2023 Oracle and/or its affiliates. All rights reserved.Azureのお客様向け、フルマネージド・サービスOCI OracleDatabase Serviceの提供マルチクラウド・アーキテクチャ向け、低遅延・セキュアな専用線接続リモートでネットワーク接続がない場所でのOCI クラウド機能を提供すべてのOCIサービスを、顧客のデータ・センターで提供Exadataのクラウド・サービスを顧客のデータ・センターで実行ネイティブVMware環境をOCIで提供AWSでMySQL HeatWaveを提供New NewMulticloudHybrid Cloud国や地域の主権や規制に適合したクラウドをパートナーより提供OCIから、他クラウドのサービスへシームレスに連携予定予定Microsoft AzureInterconnectOracle DatabaseService for AzureMySQL HeatWaveon AWSOCI CloudHubDedicated Region Oracle Alloy ExadataCloud@CustomerRoving EdgeInfrastructureOracle CloudVMware Solution8
Oracle Interconnect for AzureOCIとMicrosoft Azure間のセキュアで低遅延なプライベート相互接続を提供。数十分で接続設定が行え、クラウドにまたがったシステムを容易に構築できます。また、IDやアクセス管理の連携が可能。Oracle Database Service for AzureOCI上で動作するOracle Database ServiceをAzureからシームレスに使用可能。Azureの他のサービスと同様に使用でき、OracleDatabaseをAzure環境に容易に導入可能。Multicloud with OCI and AzureCopyright © 2023 Oracle and/or its affiliates. All rights reserved.9
エンタープライズ・アプリケーションのための2つのソリューションで幅広いニーズに対応Java/Jakarta EEサーバ:Oracle WebLogic Server (Azure Marketplaceから提供)Javaマイクロサービス開発フレームワーク:Helidon (オープンソース)Oracle Java Solutions on AzureCopyright © 2023 Oracle and/or its affiliates. All rights reserved.10Azure Virtual Machine Azure App ServiceAzure Kubernetes Service抽象度 高HelidonWebLogicServer *HelidonWebLogicServer *Helidon
デモ:ODSAで構築したATP*にJavaアプリケーションから接続するCopyright © 2023 Oracle and/or its affiliates. All rights reserved.JavaアプリケーションからATP*への疎通確認• DBの接続に特殊な設定が不要なことを確認するMicrosoft AzureVirtual MachineAutonomousTransactionProcessing ATPAutonomousTransactionProcessing ATPVirtualMachine東日本 ap-tokyo-1 (東京)ap-tokyo-1 (東京)@HelidonTestpublic class OdsaTest {// ... omit@PersistenceContext(unitName = "pu1")private EntityManager entityManager;@Testvoid 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 Processing11
Copyright © 2023 Oracle and/or its affiliates. All rights reserved.マイクロサービス開発フレームワーク –Helidon & Helidon Níma12
エンタープライズ・アプリケーションの世界の変化Copyright © 2023 Oracle and/or its affiliates. All rights reserved.BuildDeployTestReleaseDevOpsCycle場所を問わず動作するクラウドネイティブなコンテナの展開オープンソースのDevOpsツール群の連携マイクロサービスとサーバーレス・アプリケーション複数言語を扱うPolyglotなアプリケーションMicroservice 1BusinessDomainMicroservice213
マルチクラウドで構成するエンタープライズ・アプリケーションの構成例Copyright © 2023 Oracle and/or its affiliates. All rights reserved.14Microsoft AzureKubernetes 基盤(AKS)AutonomousTransactionProcessing ATP…Build Test DeployAzure DevOps$ kubectl apply …エンドユーザー ……
クラウド・ネイティブ時代に最適な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 HelidonCopyright © 2023 Oracle and/or its affiliates. All rights reserved.15
HelidonのポジショニングCopyright © 2023 Oracle and/or its affiliates. All rights reserved.Full StackMicroProfile basedMicroframeworksHelidon MPHelidon SE16
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.≒ + EclipseMicroProfile+ 拡張機能17
Helidon SE 3.xCopyright © 2023 Oracle and/or its affiliates. All rights reserved.Reactive Web ServerConfigTracingOpenAPIHealth CheckMetricsLRASchedulinggRPC Server and ClientSecurityGraphQLFault ToleranceCORSDB ClientWeb ClientReactive StreamsReactive MessagingWebSocket18
Helidon MP 3.xCopyright © 2023 Oracle and/or its affiliates. All rights reserved.MicroProfileConfigMicroProfileMetricsMicroProfileHealth CheckMicroProfileTracingMicroProfileFaultToleranceMicroProfileJWT AuthMicroProfileREST ClientMicroProfileOpen APIMicroProfileReactive StreamsOperatorsMicroProfileReactive MessagingMicroProfileGraphQLMicroProfileLRAJakarta RestfulWeb ServicesJakarta JSONProcessingJakarta JSONBindingJakartaPersistenceJakarta TransactionsJakarta WebSocketJakarta CDICORSgRPCServer/ClientMicroProfile Components Jakarta EE Components19
https://openjdk.org/jeps/444• Java 19から導入されたJVM上の仮想的なスレッド• Fiber, Coroutine, SemiCoroutine, …• thread-per-requestモデルで実装されたサーバーサイド・アプリケーションのスループット向上が目的• java.lang.Thread APIを使う既存コードは最小限の修正でVirtual Threadsを扱える• 既存のJDKツールを用いたトラブルシューティング、デバッグ、プロファイリングは容易に行えるようにJEP 444: Virtual ThreadsCopyright © 2023 Oracle and/or its affiliates. All rights reserved.OSスレッド OSスレッドJVMスレッド JVMスレッドOSスレッド OSスレッドJVMスレッド JVMスレッドJVMスレッドJVMスレッド・・・ JVMスレッドJVMスレッド・・・11 N今までのJavaのスレッド Virtual ThreadsMN20
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ímaCopyright © 2023 Oracle and/or its affiliates. All rights reserved.21
MicroProfile - HealthKubernetesなどのコンピューティングノードの状態を調査するプロセスに対してヘルスチェック情報を提供するHealth ChecksCopyright © 2023 Oracle and/or its affiliates. All rights reserved.@Liveness@ApplicationScopedpublic class CustomLivenessCheck implements HealthCheck {@Overridepublic 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/liveAnnotation Path Function@Liveness /health/live Liveness@Readiness /health/ready Readiness@Startup /health/started Startup22
MicroProfile - MetricsMetrics = システムの情報を収集後、付加情報を付与して数値に変換したものPolyglot環境に適したモニタリングを可能にする• JMX(Java Management Extensions) はJVM前提…ヘルスチェックとは異なる目的を持つ• 長期的なトレンド把握• キャパシティ・プランニング、潜在的問題の早期把握• スケジューリング・システムと連動したスケーリングOpenMetrics• CNCF(Cloud Native Computing Foundation) のサンドボックス・プロジェクト• クラウド・ネイティブのメトリクスを大規模に伝送するためのデファクト・スタンダードを規定MetricsCopyright © 2023 Oracle and/or its affiliates. All rights reserved.# TYPE base_thread_count gauge# HELP base_thread_count Displays the current number of live threadsincluding both daemon and nondaemon threadsbase_thread_count 21 Helidonは、/metricsでPrometheus形式 or JSON形式のメトリクスを提供23
MicroProfile - OpenTracingTrace = コンポーネント間を跨ぐイベントまたはトランザクションの因果連鎖の指標OpenTracing(※補足あり)• トレーシング(分散トレーシング)のためのAPI仕様およびフレームワーク• Jaeger, Zipkinなど様々なバックエンドに対応• トレーシング(分散トレーシング)において、ベンダーニュートラルな仕様を規定Helidonは、OpenTracing準拠の分散トレーシングのためのAPIを提供JAX-RS/Jakarta RESTfulアプリケーションは追加的なコードを必要とせずにリクエスト境界でSpan情報を提供TracingCopyright © 2023 Oracle and/or its affiliates. All rights reserved.Request Output処理 A処理 B処理 C処理 D・・・24
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/
Microsoft Azureデモ:ODSA(ATP) + Helidon Nímaで作るマルチクラウドなアプリケーションCopyright © 2023 Oracle and/or its affiliates. All rights reserved.Kubernetes基盤(AKS)monitoringAutonomousTransactionProcessing ATPappsHealth Checks(Liveness/Readiness)Metrics TracingK6(OSSの負荷試験ツール)Visualize26vus=5,duration=5m
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 DatabaseServiceをAzureからシームレスに使用可能マイクロサービス開発フレームワークHelidon• マイクロサービスアプリケーションが必要とする機能を提供するJavaライブラリの集合体• MP, SEのモデルを提供• Helidon 4.0より、Virtual ThreadsベースのHelidon Nímaがリリース予定まとめCopyright © 2023 Oracle and/or its affiliates. All rights reserved.27
• 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
Copyright © 2023 Oracle and/or its affiliates. All rights reserved.Thank you29