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

OCI Cloud Native 2023

OCI Cloud Native 2023

2023/03/08 に行われた OCHaCafe Premium #6 の資料です。

oracle4engineer

March 09, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. OCI Cloud Native 2023 Oracle Cloud Hangout Café – Premium

    #6 Shuhei Kawamura/Takuya Niita/Kyotaro Nonaka/Yutaka Ichikawa Oracle Corporation Japan March 8, 2023
  2. Copyright © 2023, Oracle and/or its affiliates 2 Agenda 1.

    OCW Feedback and more – by 川村 2. Container Instances & Virtual Nodes – by 仁井田 3. OCI Queue – by 野中 4. OCI DevOps – by 市川
  3. OCW Feedback and more Shuhei Kawamura Cloud Solution Engineer Solutions

    Architect, Oracle Corporation Japan March 8, 2023
  4. Copyright © 2023, Oracle and/or its affiliates 4 • 所属

    • 日本オラクル株式会社 • ソリューション・アーキテクト本部 • 担当領域 • Cloud Native, App Dev • Data Platform(Spark 周り) • AI Services • Search Service with OpenSearch • (趣味) 認証・認可関連 • コミュニティ • OCHaCafe • CloudNative Days – Observability 川村 修平 (Shuhei Kawamura) @shukawam Twitter/GitHub/Qiita 参加登録お待ちしています…!
  5. Copyright © 2023, Oracle and/or its affiliates 5 OCHaCafe Premium

    #3 (2021/03) から“かなり”進化しました
  6. Copyright © 2023, Oracle and/or its affiliates 6 OCI Cloud

    Native Landscape (2023/03 現在) OCI Core Infrastructure OCI Cloud Native Landscape 開発・運用管理ツール アプリケーション実行基盤 API 管理 Oracle Functions API Gateway サービス間連携 オブザーバビリティ OCI DevOps OCI Registry Resource Manager OCI Service Mesh OCI Workflow* Container Engine for Kubernetes (Managed/Virtual Nodes*) メッセージング Queue Streaming Service Connector Hub Notifications Application Performance Monitoring Logging Monitoring Events WebLogic Server for OCI/OKE MicroTx 開発フレームワーク Helidon MP/SE Micronaut Compute Database Network Storage Container Instances xxx: OCHaCafe Premium #3 から新たに追加された(予定含む)サービス *: Coming Soon!
  7. Copyright © 2023, Oracle and/or its affiliates 7 OCI Data

    Platform Landscape (2023/03 現在) OCI Core Infrastructure OCI Data Platform Services メタデータ管理 収集 蓄積/管理 提供 可視化/分析/データサイエンス Data Catalog Data Integration GoldenGate GoldenGate Stream Analytics Streaming Object Storage ADW/ATP Exadata Database MySQL Heatwave Big Data Data Flow ADW/ATP Exadata Database MySQL Heatwave Big Data Data Flow Analytics Artificial Intelligence Data Science Query * Cloud SQL Oracle Machine Learning / AutoML Compute Database Network Storage xxx: OCHaCafe Premium #3 から新たに追加された(予定含む)サービス *: Coming Soon!
  8. Copyright © 2023, Oracle and/or its affiliates 8 OCW Feedback

    – Application Development 注目度の高い内容を厳選してご紹介…!
  9. Copyright © 2023, Oracle and/or its affiliates 9 ▪ ユースケース

    • OCI の各サービスとのオーケストレーションとそれに伴うタスク処理の自動化 例:インフラストラクチャのプロビジョニング、移行、およびパッチ適用の自動 化、機械学習モデルのトレーニングタスク処理の自動化など ▪ 特徴 • OCI サービスとのオーケストレーション • スケジュールおよびイベントドリブンにワークフローをトリガー • ビジュアルデザインによるワークフローの作成と監視 • 組み込み済みのフロー制御 • 組み込み済みのリトライ・ロジックと拡張可能なエラー処理 • コンテキストとデータの管理 • ワークフローのバージョン管理 ▪ 価格 2023 年 3 月時点では、Limited Availability(制限付き利用)プログラム を通じて利用可能となる予定 OCI Workflow 開発者およびアーキテクト向けのグラフィカルなフロー・デザイナーを備えたサーバーレス・ワークフローエンジン https://www.oracle.com/cloud/cloud-native/workflow/ OCI Workflow Visual Example Virtual Machine Container Engine For Kubernetes Object Storage Virtual Cloud Network Load Balancer Database Data Science Oracle Machine Learning IAM Workflow Functions
  10. Copyright © 2023, Oracle and/or its affiliates 10 参考:OCI Workflow

    のデモ動画 https://www.youtube.com/watch?v=WlAyEezfQ4s OCI Workflow と AI Vision(Document Understanding) + α を組み合わせて、提出された免許書や入力情報をもとに 信頼度チェックをワークフローとして行うサンプル
  11. Copyright © 2023, Oracle and/or its affiliates 11 • JDK

    8 と JDK 17 の リリースの間の 7 年間に Java にもたらされた大幅なメモリ管理とパフォーマンスの改善を JDK 8 の ワークロードにも享受できるようになる • e.g. ZGC ガベージ コレクタ (JDK 11 から搭載された低遅延ガベージコレクタ) • JDK 8 で実行するアプリケーションにコード変更無しで適用可能 • JDK 8 で稼働し続ける必要のある ワークロードにパフォーマンス向上の手段を提供 • 対象 • Java SE サブスクリプションをお持ちのお客様 • Oracle Java on OCI を実行しているお客様 • My Oracle Supportから入手 Java SE Subscription Enterprise Performance Pack JDK 17 のパフォーマンスを JDK 8 サーバーのワークロードに レスポンス タイム メモリー フットプリント GC ポーズタイム Oracle によるテスト結果
  12. Copyright © 2023, Oracle and/or its affiliates 12 • GraalVM

    EE は Java SE Subscription に含まれる • Oracle Cloud Infrastructure (OCI) の利用者は GraalVM EE を OCI 上で無償利用可能(ライセンスとサポート) GraalVM Community Edition を OpenJDK に寄贈 https://www.graalvm.org/2022/openjdk-announcement/ GraalVM 22.3 Community Edition (CE) Enterprise Edition (EE) ライセンス GNU General Public License V2 with the “Classpath” Exception 商用ライセンス -------------------------- Oracle Technology Network (OTN) ライセンス (開発/テスト) ベースJDKs OpenJDK 11.0.17, 17.0.5, 19.0.1 Oracle JDK 8u351, 11.0.17, 17.0.5, 19.0.1 サポート コミュニティ・サポート Oracleによる商用サポート Renaissance Suite (JVMベンチマーク) で 計測した対 OpenJDK スピードアップ 1.04x 1.3x Docker コンテナ・イメージ ✔ ✔ 特許取得の高度なコンパイラ最適化 ✔ ネイティブ・イメージの最適化 - 圧縮されたポインタによる低メモリ使用 - プロファイルガイド最適化による性能向上 - G1ガベージ・コレクションによる低遅延 ✔ Java One 2022 で CE を OpenJDK に 寄贈することを発表
  13. Copyright © 2023, Oracle and/or its affiliates 13 参考:GraalVM 最新事情

    https://speakerdeck.com/oracle4engineer/graalvm-whats-new
  14. Copyright © 2023, Oracle and/or its affiliates 14 OCW Feedback

    – Data + AI Platform 注目度の高い内容を厳選してご紹介…!
  15. Copyright © 2023, Oracle and/or its affiliates 15 オブジェクトストレージ上のファイルデータへのクエリ機能 •

    RDB では不可能な大規模データの分析を可能に • DB 内のデータとオブジェクトストレージのデータ結合や ETL 処 理など、データの移動を伴わない柔軟なデータ分析が可能 • CSV、Parquet、Aurora および Redshift のバックアップ形式 に対応 • 400TB のデータを対象にした TPC-H ベンチマークで、競合 他社よりも高速な処理結果(ロードとクエリ) 機械学習による自動化機能のエンハンス • 機械学習ベースの自動化機能「MySQL Autopilot」をエン ハンス • 従来の自動プロビジョニング、自動クエリ実行計画改善機能 の強化に加え、スキーマの自動推論、アダプティブ・サンプリン グ、自動ロード、アダプティブ・データフローなどの新機能を実装 MySQL HeatWave Lakehouse オラクル、400TBのワークロードにおいてSnowflakeの17倍、Redshiftの6倍高速 なクエリ性能を提供する「MySQL HeatWave Lakehouse」を発表
  16. Copyright © 2023, Oracle and/or its affiliates 16 Oracle と

    NVIDIA のパートナーシップの締結を発表: • NVIDIA のアクセラレーテッド・コンピューティング・スタックを 全てOCI に導入 • ベアメタル、ネットワーク、ストレージと組み合わせることで 大規模な AI トレーニングとディープラーニング推論のため の選択肢を幅広く、簡単に利用可能に! OCI サービス関連情報: • NVIDIA AI Enterprise *の次期リリースを OCI で利用可 能にする計画 • OCI Data Flow にて、NVIDIA RAPIDS の早期利用の 開始 • OCI DataScience にて、NVIDIA A100 Tensor Core GPUを備えた BM.GPU.GM4.8 のサポートを提供予定 https://www.oracle.com/news/announcement/ocw-oracle-and-nvidia- partner-to-speed-ai-adoption-2022-10-18/ NVIDIA Partnership Oracle と NVIDIA が企業向けの AI 採用を加速するために提携 BM.GPU4.8 Eight NVIDIA A100 40 GB BM.GPU.GM4.8 Eight NVIDIA A100 80 GB GPUメモリー Eight GPUs, 40 GB each Eight GPUs, 80 GB each GPUメモリー帯域幅 Eight 1.6TB/s Eight 2 TB/s CPU Two 32c AMD EPYC Rome Two 64c AMD EPYC Milan システム・メモリー 2 TB DDR4 Storage Eight 6.8 TB NVMe SSDs Cluster NIC Eight 2 x 100 Gbps NICs 価格 (per GPU/hour) $3.05 $4.00 * NVIDIA AI Enterprise: NVIDIA が最適化し、認定し、サポートする AI およびデータ分析 ソフトウェアからなるクラウドネイティブ エンドツーエンド スイート
  17. Copyright © 2023, Oracle and/or its affiliates 17 • ETL、ML/DL

    処理を高速化 • プライス・パフォーマンスを最適化 • コード変更の必要なし • 簡単な Data Flow アプリケーション設定だけで利用可能 • エグゼキュータ/ドライバに適切な GPU シェイプを選択 • Spark 構成オプションを追加するだけで OK OCI Data Flow – Spark アプリケーションを GPU で高速化 NVIDIA RAPIDS Accelerator for Apache Spark を装備したサーバレス Spark 環境 OCI Data Flow Object Storage Streaming Data Flow Autonomous Data Warehouse streaming read/write read/write GPU Instances RAPIDS PARIDS Accelerator for Apache Spark Apache Spark 3.x Application Spark SQL DataFrames ML/DL Frameworks
  18. Copyright © 2023, Oracle and/or its affiliates 18 And more…

    (Application Development) 2021 年(OCHaCafe Premium #3)からの注目アップデート情報 ※時間も限られているので、サーバレス関連(OCI Functions/API Gateway)に絞ってご紹介
  19. Copyright © 2023, Oracle and/or its affiliates 19 • Function

    の実行前に決められた数(=PCUs*)の各種リソースの割り当てを事前に済ませておくことで初回実行時の レイテンシーを低減させるための機能 • コールドスタート問題の対応策として有効 • Provisioned Concurrency を適用した、未使用の Function リソースに対しては、25% のリソース利用料が発生 プロビジョニングされた並行性(Provisioned Concurrency)のサポート OCI Functions 各種リソースの割り当て 関数コードの実行 一般的な Function 実行 Provisioned Concurrency を 利用した Function 実行 関数実行前に一定数のリソース (PCUs*)を割り当てる *PCUs(Provisioned Concurrency Units): 事前に完了させておくリソース割り当て数 関数コードの実行
  20. Copyright © 2023, Oracle and/or its affiliates 20 OAuth 2.0

    対応 • JWT/非 JWT 形式のアクセストークンを認可サーバーの OAuth 2.0 イントロスペクション・エンドポイントを用いて検証 可能な API Gateway を作成可能に • ※ 対応前は、JWT 形式のアクセストークンを JWKS or 静的キー + Payload の検証のみ対応 OpenID Connect 1.0 対応 • トークンが存在しない or 無効時のポリシーとして、OpenID Connect 1.0 の認可コードフローを用いた ID/アクセストー クンの取得が可能に • ※ 対応前は、HTTP 401 – Unauthorized の返却のみをサポート • API Gateway が OpenID Connect – Relying Party の構成をとる ユースケース • OAuth 2.0/OpenID Connect 1.0 を実装なし(設定レベル)で使用したい • レガシーな API サーバーの OAuth 2.0/OpenID Connect 1.0 対応を実施したい OAuth 2.0/OpenID Connect 1.0 のサポート API Gateway NEW!! NEW!! NEW!! JWT とか OAuth とか OIDC とかはこちらから… >> https://thinkit.co.jp/article/21142
  21. Copyright © 2023, Oracle and/or its affiliates 21 実装が手間な API

    の認証を API Gateway にオフロードする デモ:OIDC を用いてセキュアに API を公開する User OIDC - Enduser API Gateway OIDC-RP Functions Functions Functions Country Application Autonomous Transaction Processing ATP JWKS OpenID Connect 1.0 – AuthN Code Flow https://<api-gw-host>/ochacafe/country Identity Domains OIDC - OP Provisioned Concurrency 使ってます!
  22. Copyright © 2023, Oracle and/or its affiliates 23 OCI AI

    Services 専門知識不要で AI 関連サービスを開発者が利用可能に AI Services Digital Assistant Language Speech Vision Anomary Detection Forecasting チャット・ボットの開発・運用 に必要な機能を提供 事前学習済みのモデルを用 いた言語解析機能を提供 音声や動画ファイルのトラン スクリプション機能を提供 事前学習済みのモデルを用 いた画像分類、物体検出 の機能を提供 ※Data Labelingを併用したカスタムモデルの作 成も可能 時系列データに基づいた異 常検出モデルを提供 時系列予測と予測結果の Explainabilityを提供 coming soon Document Understanding 事前学習済みのモデルを用 いたドキュメント分析機能を 提供
  23. Copyright © 2023, Oracle and/or its affiliates 24 • Data

    Science のノートブック・セッションを Data Flow へ接続し、対話形式で実行可能な Spark 環境をサポート • Jupyter notebook から Spark クラスタを対話的に操作するためのツール群である Sparkmagic が組み込み済み • 大規模なデータ処理を Data Science から Data Flow にオフロード可能 OCI Data Science と OCI Data Flow の連携をサポート Data Flow + Data Science User Data Science Spark magic Apache Livy Remote Spark Context Executor Executor Data Flow Data Flow コントロール・プレーン データ・プレーン … Driver HTTP リモート(Data Flow)で計算処理を 実行し、結果をDSへ返却する
  24. Copyright © 2023, Oracle and/or its affiliates 25 • Spark

    3.2.1 で Data Flow を実行する場合、デフォルトで Delta Lake がサポートされるように • Delta Lake • Lakehouse アーキテクチャを構築できるオープンソースのストレージフレームワーク • 既存の Data Lake(Object Storage, S3, HDFS, etc.)上で以下の機能を提供 • ACID トランザクションのサポート • スケーラブルなメタデータの処理 • スキーマのばらつきの自動処理(≒ 取り込み中に不正なレコードが挿入されることを防止できる) • タイムトラベル(≒ ロールバックや履歴の監査証跡をサポート) • merge/update/delete の操作をサポート(※素のSparkでは、”overwrite”, “append”のみがサポート)による複雑なユースケースの実現 詳細: https://docs.oracle.com/ja-jp/iaas/data-flow/using/delta-lake-about.htm Delta Lake のサポート Data Flow
  25. Copyright © 2023, Oracle and/or its affiliates 27 自己紹介 仁井田

    拓也 • 日本オラクル株式会社 • ソリューション・アーキテクト本部 • AppDev/Container/FaaS/(a little)ML… • 前職は某SIer • Oracle歴/Cloud Native歴:4年弱 • ジブリ大好き • OCHaCafeは11回目の登壇(R:9回/P:2回) @takuya_0301
  26. OCIで選択可能な幅広いアプリケーションインフラストラクチャ Copyright © 2023, Oracle and/or its affiliates 29 Container

    Instances DIY K8s/Docker on VM or BM OKE with Customer- managed Nodes Serverless OKE (Virtual Nodes) OCI Functions MORE AGILITY Coming Soon!! 既存サービス/機能 Virtual Machine Bare Metal Managed Kubernetes(OKE) Compute Containers Functions MORE CONTROL New!!
  27. インフラ管理不要(サーバレス)のコンテナ実行環境 30 Copyright © 2023, Oracle and/or its affiliates OCI

    Container Instances ▪ ユースケース コンテナオーケストレーション(Kubernetes)を必要としないコ ンテナアプリケーションのデプロイ 例)API、Web アプリ、継続的インテグレーション・デリバリー (CI/CD)の ジョブ、開発・テスト環境など ▪ 特徴 • セキュアに分離、最適化されたコンテナ実行環境 • ユーザによる仮想マシンの管理、パッチ適用、トラブル シューティングが不要 • コンテナを即座に実行可能 ▪ 価格 通常のComputeと同様(OCPU/メモリ課金) ※ Serverless Container Instancesに対する課金はなし Container Instances Container Container Container Webアプリ Web API CI/CD ビルドジョブ 物理マシン 仮想マシン コンテナランタイム コンテナ アプリケーション Oracle Managed OCIR Docker Hub pull pull pull Other Container Registries
  28. インスタンスに指定可能なパラメーター • インスタンス名 • 配置先のドメイン(可用性ドメイン/障害ドメイン) • シェイプ • 2023/3時点ではE3/E4のみ •

    CPU/メモリはフレキシブルに指定可能 • VCNの作成および既存VCNの選択 • インスタンスに割り当てるIPアドレスはプライベート/ パブリックを選択可能 • NSG(ネットワーク・セキュリティ・グループ)の指定 • DNSレコードの設定 • VNICでのソース/宛先チェック OCI Container Instancesのプロビジョニング ーインスタンスの設定ー Copyright © 2023, Oracle and/or its affiliates 31
  29. コンテナに指定可能なパラメーター ※コンテナは1インスタンスに複数指定可能 • コンテナの再起動ポリシー • 常時(Always)/なし(Never)/失敗時(OnFailure) • コンテナイメージの指定 • OCIR

    • 外部レジストリ • 環境変数 • リソース・スロットル • コンテナが利用可能な最大vCPU/メモリを数もしくは パーセンテージで指定可能 • 起動オプション • ENTRYPOINTをオーバーライド OCI Container Instancesのプロビジョニング ーコンテナの設定ー Copyright © 2023, Oracle and/or its affiliates 32
  30. 1. コンテナ・オーケストレーション (Kubernetes など) を必要としないコンテナ化されたアプリケーション 2. 迅速なインスタンスの作成と破棄が求められるワークロード • APIサーバ/Web アプリケーション

    • 一時的なワークロード • CI/CD パイプライン・ジョブ • 開発/テスト環境 • データ/メディア処理 • 自動化タスク 3. サーバー/VM 上で直接実行されるスタンドアロン コンテナ・ワークロード e.g., スケールアウトが考慮されていないレガシー・アプリケーションをコンテナ化してサーバレスで運用負荷軽減 OCI Container Instances のユースケース Copyright © 2023, Oracle and/or its affiliates 33
  31. Copyright © 2023, Oracle and/or its affiliates 34 Container Instances

    demo Oracle Cloud Hangout Café Premium – OCI Cloud Native 2023
  32. 1. OCI LoadBalancer(OCI LB)とは統合されていない(負荷分散が不可) • 複数のContainer InstancesをOCI LBのバックエンドに紐づけることは可能(IPアドレスで紐付け) • 水平オートスケールするわけではないので、

    Container Instances数はユーザ側で管理 • 将来的には水平スケールとOCI LBとのネイティブに統合する予定 2. OCI DevOpsサービス(CI/CDサービス)とは統合されていない • OCI DevOpsのデプロイ対象としてContainer Instancesを選択することは不可 • デプロイメント・パイプラインにて、シェルコマンドを実行可能なステージ(Shell Stage)を利用可能 • OCI CLIを利用してビルドしたコンテナイメージでContainer Instancesをプロビジョニングすることは可能 3. 永続化ができない • 現時点では、15GBのエフェメラル・ストレージが利用可能 • OCI Container Instancesに対してBlock Volumeのアタッチが不可(ロードマップ) • 永続化する場合は、外部データベースなどを利用 OCI Container Instances の制約事項(2023/3現在) Copyright © 2023, Oracle and/or its affiliates 35
  33. インフラ管理不要(サーバレス)の Worker Node オプション 36 Copyright © 2023, Oracle and/or

    its affiliates OKE (Oracle Container Engine for Kubernetes) Virtual Nodes ▪ ユースケース Worker Nodeの運用にコストをかけずに運用したい Worker Nodeの運用コスト増大を防ぎたい ▪ 特徴 • Worker Node の管理が不要のサーバレス Worker Node 環境 (Master Node は従来通りマネージドで提供) • スケーリング、アップグレード、トラブルシューティングなどの Worker Node 運用上のコストを自動化 • コンテナアプリケーションが消費するリソース (CPU/メモリ) に 基づいたきめ細やかな従量課金 ▪ 価格 Pod が利用するリソース (CPU/メモリ) による課金 ※具体的な価格はまだ未発表 Container Engine For Kubernetes Managed Node Pool Virtual Node Pod 自動 スケール Node 自動 スケール Coming Soon!! Virtual Node
  34. Copyright © 2023, Oracle and/or its affiliates 38 1. OCI

    Queue Service の概要 2. OCI Queue Service の技術コンセプト 3. Demo 4. OCI Queue Service と OCI Streaming Service アジェンダ
  35. Copyright © 2023, Oracle and/or its affiliates 40 メッセージ基盤の分類 分散ストリーミング

    • 点と(複数の)点を接続 • ブローカー通信 • リアルタイム/高スループット • メッセージの再利用性 • 順序保証 • 例) OCI Streaming (Kafka) メッセージキュー • 点と点を接続 • ブローカー通信 • 非同期通信 • 一度だけのメッセージ処理 • 処理の保証 • 自動スケール • 例) OCI Queue メッセージブローカー • 点と(複数の)点を接続 • ブローカー通信 • Pushベース/非同期 • 緩い順序保証 • 例) Oracle TEQ (AQ) (ストリーミング) Web サービス • 点と点を接続 • 直接の通信 • 同期通信 • 例) HTTP Web Services, gRPC
  36. 非同期メッセージングをサーバレスに実現する、ハイパフォーマンス・メッセージキュー OCI Queue Service ▪ ユースケース • アプリケーションを分離し、疎結合なアーキテクチャを構築 • 信頼性の高いスケーラブルなメッセージ基盤の活用

    ▪ 特徴 • フルマネージド、オートスケール • OCI Streaming を補完する適用領域 • オフセット カーソル 無し、メッセージ消費は逐次確認 • パーティション無し、需要に応じてオートスケール • at-least-once 配信、配信順序はベストエフォート • Dead Letter Queue (DLQ) の提供 (異常終了メッセージを退避) • キューメッセージの暗号化 • HTTPとSTOMPプロトコルをサポート ▪ 価格 最初の100万リクエストは無料、移行100万リクエストごとに¥30.8 * 1 リクエストのメッセージ容量が64KBを超える場合、64KBを1単位として複数のリクエストとして計算 ** 複数メッセージの同時取得は、メッセージ容量に基づいて計算 Container Engine For Kubernetes Containers Virtual Machine OCI Queue Service Functions Producer … etc. Container Engine For Kubernetes Containers Virtual Machine Functions Consumer … etc. • STOMP: Simple Text Orientated Messaging Protocol 軽量なメッセージングプロトコル regular dead letter Copyright © 2023, Oracle and/or its affiliates. All rights reserved. 41 Copyright © 2023, Oracle and/or its affiliates 41
  37. 42 マネージド 自動化、メンテナンス要らず のインフラとプラットフォーム セキュア 外部/内部の脅威から データを守る スケール 停止なしの自動スケール と最低限のコスト

    Copyright © 2023, Oracle and/or its affiliates 42 OCI Queue Service の特長 従量課金 最大限のコストパフォーマンス 複数のプロトコル HTTP/STOMPのサポート
  38. Copyright © 2023, Oracle and/or its affiliates 43 at-most-once デリバリー

    • メッセージ毎に、そのメッセー ジは0回か1回配信される • メッセージは重複しない • メッセージが失われる可能性 がある at-least-once デリバリー • メッセージ毎に、少なくとも1 回成功するように潜在的に 複数回配信が行われる • メッセージの重複があり得る • メッセージの複製が失われな い exactly-once デリバリー • メッセージ毎に正確に1回の 配信が受信者に対して行わ れる • メッセージは重複しない • メッセージは失われたり複製 されたりしない OCI Queue Service の機能 at-least-once デリバリーを採用
  39. Copyright © 2023, Oracle and/or its affiliates 44 OCI Queue

    Serviceは正常に処理されていないメッセージを格納する方法として、デッド・レター・キューを提供 • メッセージがキューから取得されるたびに、メッセージの配信回数が増加 • メッセージ配信回数がキューの最大配信試行回数を超えると、メッセージはデッド・レター・キューに移動 • キューの最大配信試行回数はキューの作成時または変更時に指定可能 デッド・レター・キューに転送されたメッセージが削除されるのは以下の2パターン • 保存期間が過ぎてサービスによって削除される • 手動でメッセージを削除する OCI Queue Service の機能 デッド・レター・キュー (DLQ)
  40. Copyright © 2023, Oracle and/or its affiliates 45 フロントエンドとバックエンドの分離 •

    バックエンドサービスの並列化 • 非同期処理の実現 • システム利用ユーザはバックエンドの処 理終了を待たずに結果を得る • 疎結合性による開発スピードの向上 コンポーネントの独立したスケール • ボトルネックの解消 • システム内でボトルネックの部分 (IaaS/コンテナ/DB/etc.)のみを必要 なだけスケール • 余剰リソースの削減 システムの拡張性 • 後からコンポーネントの追加(機能の 追加など)が容易 • QueueにProduce/Queueから Consumeと言う形を守ればよい OCI Queue Service のユースケース アプリケーションの分離 Front Svc1 Producer Consumer Consumer Consumer スケール Producer Consumer Producer メッセージのスキーマを揃えれば、 Consumerの変更は不要 Svc2 Svc3
  41. Copyright © 2023, Oracle and/or its affiliates 47 コンテンツ(メッセージ) •

    文字列形式のキュー内の要素 プロデューサ • キューにメッセージを送信するクライアント コンシューマ • キューからメッセージを受信するクライアント • コンシューマは、メッセージの受信後にキューからメッセージを削除可能 最大保存期間 • コンシューマによって削除されない場合の、メッセージがシステムによって自動的に削除されるまでキューがメッセージを保 持する期間 最大配信回数 • デッド レター キューに送信されるまでに、メッセージがコンシューマに配信され、更新または削除されていない回数 OCI Queue Service の概念
  42. Copyright © 2023, Oracle and/or its affiliates 48 公開中 •

    メッセージは、1つ以上のプロデューサによってキューに公開 • 各プロデューサにて保存期間を指定 • 保存期間が指定されていない場合、メッセージはキュー(サービスの単位)で定義された保存期間に応じる 処理中 • 複数のコンシューマが1つのキューからメッセージを消費可能 • コンシューマ数はスケーリング可能 • メッセージは一度コンシューマに配信されると、表示タイムアウトに応じて他のコンシューマから見えなくなる 更新中 • メッセージの処理に予想よりも時間がかかる場合、コンシューマはメッセージの表示タイムアウトを延長可能 • 表示タイムアウトを延長すると、メッセージの削除権は維持され、他のコンシューマから見えない状態が続く 削除中 • コンシューマにメッセージが配信され処理された後は、別のコンシューマへの再配信を防ぐためにメッセージ削除が必要 OCI Queue Service の原則 メッセージの状態
  43. Copyright © 2023, Oracle and/or its affiliates 49 ①プロデューサはメッセージをOCI Queueに公開

    ②コンシューマがOCI Queue上の取得可能なメッセージを取得 • 取得時のタイムアウトを指定可能(ポーリング・タイムアウト) • メッセージの最大取得数の指定が可能 ※指定がない場合は20 ③コンシューマが取得したメッセージを処理 • 処理中のメッセージを他のコンシューマから見えないようにすることができる (表示タイムアウト) ④コンシューマがOCI Queueに対して処理したメッセージの削除リクエスト OCI Queue Service の原則 基本的な処理の流れ Producer OCI Queue Consumer ① ② ④ ③
  44. Copyright © 2023, Oracle and/or its affiliates 50 ポーリング・タイムアウト •

    コンシューマがメッセージの取得を待機する時間 • タイムアウトが経過して消費可能なメッセージがな い場合、リクエストは空のレスポンスを返す • ポーリング・タイムアウトを増やすと、コンシューマが キューにメッセージをリクエストする回数が減る • デフォルトは30秒 表示タイムアウト(メッセージロック) • 他のコンシューマに表示されない期間 • コンシューマは、別のコンシューマが同じメッセージを 取得できないように、メッセージをロック可能 • キュー・レベル/メッセージの消費または更新時に指 定することが可能 OCI Queue Service の概念 2つのタイムアウト Queue Consumer GetMessageリ クエスト 指定(設定)した時間、Consumerが ポーリング 消費可能な メッセージがあれば それを取得 Consumer タイムアウト時は 空のレスポンス を返却 Consumer Queue Consumer A GetMessageリ クエスト 指定(設定)した時間、メッセージをロック メッセージロック 中はメッセージ が見えない Consumer B
  45. Copyright © 2023, Oracle and/or its affiliates 51 メッセージ配信の仕組み (Put/Get/Update/Delete)

    1. Producerは、デフォルトのメッセージ保持時間でメッセージをキューに送信。Producerは、キュー サービスがメッセージを受信して保存したという確認を受け取る。 2. Consumer A は、表示タイムアウト A 内に処理することになっているメッセージを受信。 3. Consumer B は、利用可能な唯一のメッセージがConsumer A によって既に消費されているため、何も受信しない。 4. Consumer A は表示タイムアウト A 内にメッセージを処理できなかったため、メッセージを更新して表示タイムアウトを延長。 5. Consumer B は再度メッセージを受信しようとするが、利用可能な唯一のメッセージがConsumer A によって消費および拡張されたため、受信できない。 6. 延長された表示タイムアウトが経過すると、メッセージが再び表示されるように。 7. Consumer B は 3 回目のメッセージの受信を試みる。Consumer B はメッセージを受信。これは、表示タイムアウト B 内に処理することになる。 8. Consumer A はメッセージを受信しようとするが、Consumer B がメッセージを消費したため、何も受信しない。Consumer A は、メッセージの表示タイムアウトを延長したり、メッセージを削除 したりすることができなくなる。 9. Consumer B はメッセージを正常に処理し、キューからメッセージを削除しようとする。Consumer B は、メッセージが完全に削除されたという確認を受け取り、このメッセージは他のConsumer に配信されることはない。
  46. Copyright © 2023, Oracle and/or its affiliates 52 • DLQのOCIDは[QueueのOCID]-dlqとなる

    • DLQのOCIDを利用して、通常のQueueと同様にGetMessage/DeleteMessageを行う デッド・レター・キュー (DLQ)の利用
  47. Copyright © 2023, Oracle and/or its affiliates 55 OCI Queue

    Service • メッセージキュー • 点と点を接続 • 自動スケール • 一度だけのメッセージ処理 • 処理の保証 • HTTP/STOMP OCI Streaming Service • 分散ストリーミング • 点と(複数の)点を接続 • リアルタイム/高スループット • メッセージの再利用性 • 順序保証 • Kafka API 互換 OCIで利用可能な2つのMessaging サービス
  48. Copyright © 2023, Oracle and/or its affiliates 56 Queue •

    メッセージ: 128KB • ストレージ/キュー: 2GB Streaming • メッセージ: 1MB • ストレージ/Stream: 無制限(最大保持期間有り) OCI Queue と OCI Streaming の違い 制限 Produce r Consume r OCI Queue - 1000 APIリクエスト/秒 - 10MB イングレス/秒 - 512KB PutMessage/ 秒 or 20メッセージ /秒 - 1000 APIリクエスト/秒 - 10MB エグレス/秒 - 2MB GetMessage/ 秒 or 20メッセージ /秒 Streaming Produce r - 無制限リクエスト数 - 1MB 書込み/秒/パー ティション - 5リクエスト/秒/ Consumer Group - 50 Consumer Group/Stream Consume r Group
  49. Copyright © 2023, Oracle and/or its affiliates 57 Queue Streaming

    OCI Queue と OCI Streaming の違い 配信方式 Produce r Consumer OCI Queue Streaming Produce r Consume r Group 4 3 2 1 Consumer Consumer Consumer 4 3 2 1 3 2 1 1 2 3 Consume r Group 3 2 1 3 2 1
  50. Copyright © 2023, Oracle and/or its affiliates 59 Proflie Name

    • Yutaka Ichikawa/市川 豊 Belong • Solutions Architect Role • Principal Cloud Solution Engineer SNS • Twitter/GitHub/Qiita:cyberblack28 Blog • https://cyberblack28.hatenablog.com/ Materials • https://speakerdeck.com/cyberblack28/ Community • Oracle Cloud Hangout Cafe #ochacafe • CloudNative Days Tokyo #cndt #o11y2022 Certified • Certified Kubernetes Administrator • Certified Kubernetes Application Developer • Certified Kubernetes Security Specialist • Kubernetes and Cloud Native Associate Publications New
  51. 1. OCI DevOps 概要 2. OCI DevOps Update 3. Blue-Green

    Deploy/Canary Release DEMO Agenda Copyright © 2023, Oracle and/or its affiliates 60
  52. Copyright © 2023, Oracle and/or its affiliates 62 OCI DevOps

    概要 ソースコード、ソフトウェアビルド、アーティファクト、リリースを一括管理 継続的インテグレーション/継続的デリバリー(CI/CD)の実現、アプリケーション開発のライフサイクルを想 定したシステム開発および運用環境の整備
  53. Copyright © 2023, Oracle and/or its affiliates 63 OCI DevOps

    概要 一気通貫の開発・運用プロセス、幅広いリリース環境、コスト削減 コード 管理 ビルド 成果物 管理 デプロイ End to End の開発・運用プロセス コード管理、ビルド・パイプライン、 成果 物管理、デプロイメント・パイプラインから 構成される各機能を用いた、一気通貫 の開発・運用プロセスを実現 幅広い環境に対応 アーティファクトサービスと連携、実行環 境を問わず、幅広い環境へのデプロイ を実現 Bare Metal Compute & Virtual Machine OKE Functions OCIR Artifact Registry 環境管理 アーティファクト管理 OCI DevOpsのサービスとしての価 格は無料 価格無料 (*コード・リポジトリのストレージ、およびビルドのためのコン ピュートは別途必要)
  54. Copyright © 2023, Oracle and/or its affiliates 64 OCI DevOps

    概要 イベントドリブンな連携を実現するトリガー機能 OCI Code Repository Oracle Visual Builder Studio
  55. Copyright © 2023, Oracle and/or its affiliates 66 OCI DevOps

    Update Helm チャートの検証をサポート デプロイ前にHelmチャートの整合性を検証可能となり、検証に失敗した場合はデプロイされない。 • OCIRにHelmチャートがあることが必要 • Helmチャートには有効なPGPキー・ペアによって署名さ れたバイナリ形式が必要 • 公開鍵はOCI Vaultに格納するか、インラインで指定で きる アーティファクト追加時にタイプで「Helmチャー ト」を選択後、「Helmチャートの検証」で設定 可能
  56. Copyright © 2023, Oracle and/or its affiliates 67 OCI DevOps

    Update デプロイ パイプラインでのコマンドの実行をサポート デプロイメント・パイプライン実行中にカスタムのシェルコマンドを実行。 実行したいコマンドをコマンド仕様に合わせた YAMLファイルを作成して、アーティファクトレ ジストリに格納 Artifact Registry デプロイメント・パイプライン作成時にステージとして「シェル・コマン ドの実行」テンプレートを選択 https://docs.oracle.com/ja- jp/iaas/Content/devops/using/command_spec.htm コマンド仕様 (YAML) YAMLを格納したアーティファクト レジストリを登録 コマンドを実行するコンテナ・インス タンスの設定 Artifact Registry Container Instances OCI DevOps YAMLを参照して シェルコマンド実行 YAML
  57. Copyright © 2023, Oracle and/or its affiliates 68 OCI DevOps

    Update デプロイ パイプラインでのコマンドの実行をサポート 利用できるコマンド(2023年3月時点) https://docs.oracle.com/ja-jp/iaas/Content/devops/using/shellruntime_details.htm
  58. Copyright © 2023, Oracle and/or its affiliates 69 OCI DevOps

    Update プロジェクトのカスケード削除をサポート これまで、プロジェクトを削除するには、事前に関連リソースを削除しておくことが前提だったが、カスケード削 除がサポートされたことにより、DevOps の Web UI から関連リソースも含めて、一括で削除可能 • カスケード削除は72時間後に実行される • 72時間以内であれば、カスケード削除をキャンセル可能
  59. Copyright © 2023, Oracle and/or its affiliates 70 OCI DevOps

    Update DevOps と連携した外部リポジトリ(コード)の Terraform 構成からスタック作成 DevOps と連携した外部リポジトリ(コード)に保存されている Terraform 構成からスタックを作成できる • Bitbucket クラウド • Bitbucket サーバー • DevOps • GitHub • GitLab 「ソースコード管理タイプ」のプルダウンメニューから以下 を選択して、DevOps で利用および Terraform 構 成を格納しているリポジトリを選択可能
  60. Copyright © 2023, Oracle and/or its affiliates 71 OCI DevOps

    Update DevOps ビルド・パイプラインでの GraalVM Enterprise の使用可能 OCI DevOps のビルド・パイプラインで使用する定義ファイル(build_spec.yaml)に、YUMパッケージ・マネージャー・コマンドを追 加することで、ネイティブイメージ、JDK などの GraalVM Enterprise コンポーネントをインストールして使用可能。 https://docs.oracle.com/ja-jp/iaas/Content/devops/using/graalvm.htm ・ ・(省略) env: variables: "JAVA_HOME" : "/usr/lib64/graalvm/graalvm22-ee-java17" # PATH is a reserved variable and cannot be defined as a variable. # However, PATH can be changed in a build step and the change is visible in subsequent steps. steps: - type: Command name: "Install the latest GraalVM Enterprise 22.x for Java 17 - JDK and Native Image" command: | yum -y install graalvm22-ee-17-native-image - type: Command name: "Set the PATH here. JAVA_HOME already set in env > variables above." command: | export PATH=$JAVA_HOME/bin:$PATH - type: Command name: "Build a native executable with the installed GraalVM Enterprise 22.x for Java 17 - Native Image" command: | mvn --no-transfer-progress -Pnative -DskipTests package ・ ・(省略) build_spec.yaml GraalVM Enterprise コンポーネントインストール 環境変数 JAVA_HOME を設定 環境変数 PATH 設定 MavenおよびGraalVM Enterprise 22.x for Java 17 - Native Imageを使用して、Javaアプリケーションか らネイティブ実行可能ファイルを構築するビルド仕様ファイルのサンプル Compute OKE Functions GraalVM Enterprise Native Image によるビルド App
  61. Copyright © 2023, Oracle and/or its affiliates 72 OCI DevOps

    Update Blue-Green と Canary Release デプロイ新機能 デプロイ戦略として、Blue-Greenデプロイ、カナリア・リリースに対応、Container Engine for Kubernetes(OKE)およびComputeインスタンス環境へのBlue-Greenデプロイ、カナリア・リリースを実 現
  62. Copyright © 2023, Oracle and/or its affiliates 73 OCI DevOps

    Update Blue-Green と Canary Release デプロイ新機能 最小限のダウンタイムと即時のロールバック機能を提供するBlue-Greenデプロイ Blue-Green Deploy(例:OKE) Blue Green カスタム関数を利用してデプロイ前にGreen環境 (ネームスペース)のアプリケーションを検証可能 手動承認によるBlue環境(ネームス ペース)へのトラフィック・シフト OKEデプロイメントでは、トラフィックをルー ティングするためにNGINXイングレス・コン トローラを設定 Green環境(ネームス ペース)へトラフィックシフ ト https://docs.oracle.com/ja-jp/iaas/Content/devops/using/deploy_bgstrategy.htm
  63. Copyright © 2023, Oracle and/or its affiliates 74 OCI DevOps

    Update Blue-Green と Canary Release デプロイ新機能 アプリケーションの新しいバージョンを一部のユーザーに段階的にリリースするカナリア・リリース Canary Release(例:OKE) カスタム関数を利用して、デプロイ前にカナリア環境(ネーム スペース)でアプリケーション検証可能 OKEデプロイメントでは、トラフィックをルーティングするために NGINXイングレス・コントローラを設定 検証成功後、本番環境(ネームスペース)の一部のトラフィックがカナリア環 境(ネームスペース)にシフト 手動承認後、本番環境(ネームスペース)に検証済 みのアプリケーションがデプロイされる https://docs.oracle.com/ja-jp/iaas/Content/devops/using/deploy_canarystrategy.htm
  64. Copyright © 2023, Oracle and/or its affiliates 76 OCI DevOps

    Blue/Green & Canary Demo Blue/Green Deploy Demo Environment アプリケーションの新しいバージョンを一部のユーザーに段階的にリリースするカナリア・リリース
  65. Copyright © 2023, Oracle and/or its affiliates 77 OCI DevOps

    Blue/Green & Canary Demo Blue/Green Traffic Shift Load Balancer Containers Load Balancer Containers Containers Load Balancer Containers Containers OCI DevOps OCI DevOps OCI DevOps deploy deploy deploy nginx.ingress.kubernetes.io/canary: "true“ nginx.ingress.kubernetes.io/canary-by-header: redirect-to-namespaceB nginx.ingress.kubernetes.io/canary-weight: "100" nginx.ingress.kubernetes.io/canary: "true“ nginx.ingress.kubernetes.io/canary-by-header: redirect-to-namespaceB nginx.ingress.kubernetes.io/canary-weight: "0" 1回目 2回目 3回目 namespaceA (blue) namespaceB (green) 接続先を切り替え 接続先を切り替え namespaceA (blue) namespaceB (green) namespaceA (blue) namespaceB (green)
  66. Copyright © 2023, Oracle and/or its affiliates 78 OCI DevOps

    Blue/Green & Canary Demo Blue/Green Traffic Shift Load Balancer Containers Load Balancer Containers Containers Load Balancer Containers Containers nginx.ingress.kubernetes.io/canary: "true“ nginx.ingress.kubernetes.io/canary-by-header: redirect-to-namespaceB nginx.ingress.kubernetes.io/canary-weight: “100" 4回目 5回目 6回目 Containers OCI DevOps deploy nginx.ingress.kubernetes.io/canary: "true“ nginx.ingress.kubernetes.io/canary-by-header: redirect-to-namespaceB nginx.ingress.kubernetes.io/canary-weight: "100" OCI DevOps deploy nginx.ingress.kubernetes.io/canary: "true“ nginx.ingress.kubernetes.io/canary-by-header: redirect-to-namespaceB nginx.ingress.kubernetes.io/canary-weight: "0" OCI DevOps deploy 接続先を切り替え 接続先を切り替え 接続先を切り替え namespaceA (blue) namespaceB (green) namespaceA (blue) namespaceB (green) namespaceA (blue) namespaceB (green)
  67. Copyright © 2023, Oracle and/or its affiliates 79 OCI DevOps

    Blue/Green & Canary Demo Canary Demo Environment
  68. Copyright © 2023, Oracle and/or its affiliates 81 参考資料 OCI

    DevOps Release Note https://docs.oracle.com/en-us/iaas/releasenotes/services/devops/ OCI DevOps Documents https://docs.oracle.com/ja-jp/iaas/Content/devops/using/home.htm Sample Source of Demo https://github.com/oracle-japan/devops-deploy-strategy