Slide 1

Slide 1 text

OCI Cloud Native 2023 Oracle Cloud Hangout Café – Premium #6 Shuhei Kawamura/Takuya Niita/Kyotaro Nonaka/Yutaka Ichikawa Oracle Corporation Japan March 8, 2023

Slide 2

Slide 2 text

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 市川

Slide 3

Slide 3 text

OCW Feedback and more Shuhei Kawamura Cloud Solution Engineer Solutions Architect, Oracle Corporation Japan March 8, 2023

Slide 4

Slide 4 text

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 参加登録お待ちしています…!

Slide 5

Slide 5 text

Copyright © 2023, Oracle and/or its affiliates 5 OCHaCafe Premium #3 (2021/03) から“かなり”進化しました

Slide 6

Slide 6 text

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!

Slide 7

Slide 7 text

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!

Slide 8

Slide 8 text

Copyright © 2023, Oracle and/or its affiliates 8 OCW Feedback – Application Development 注目度の高い内容を厳選してご紹介…!

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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 によるテスト結果

Slide 12

Slide 12 text

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 に 寄贈することを発表

Slide 13

Slide 13 text

Copyright © 2023, Oracle and/or its affiliates 13 参考:GraalVM 最新事情 https://speakerdeck.com/oracle4engineer/graalvm-whats-new

Slide 14

Slide 14 text

Copyright © 2023, Oracle and/or its affiliates 14 OCW Feedback – Data + AI Platform 注目度の高い内容を厳選してご紹介…!

Slide 15

Slide 15 text

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」を発表

Slide 16

Slide 16 text

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 およびデータ分析 ソフトウェアからなるクラウドネイティブ エンドツーエンド スイート

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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): 事前に完了させておくリソース割り当て数 関数コードの実行

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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:///ochacafe/country Identity Domains OIDC - OP Provisioned Concurrency 使ってます!

Slide 22

Slide 22 text

Copyright © 2023, Oracle and/or its affiliates 22 And more (Data + AI Platform)

Slide 23

Slide 23 text

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 事前学習済みのモデルを用 いたドキュメント分析機能を 提供

Slide 24

Slide 24 text

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へ返却する

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

OCI Container Services Update Takuya Niita Oracle Corporation Japan Mar 8, 2023

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

Copyright © 2023, Oracle and/or its affiliates 28 OCIコンテナ関連サービスアップデート Oracle Cloud Hangout Café Premium – OCI Cloud Native 2023

Slide 29

Slide 29 text

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!!

Slide 30

Slide 30 text

インフラ管理不要(サーバレス)のコンテナ実行環境 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

Slide 31

Slide 31 text

インスタンスに指定可能なパラメーター • インスタンス名 • 配置先のドメイン(可用性ドメイン/障害ドメイン) • シェイプ • 2023/3時点ではE3/E4のみ • CPU/メモリはフレキシブルに指定可能 • VCNの作成および既存VCNの選択 • インスタンスに割り当てるIPアドレスはプライベート/ パブリックを選択可能 • NSG(ネットワーク・セキュリティ・グループ)の指定 • DNSレコードの設定 • VNICでのソース/宛先チェック OCI Container Instancesのプロビジョニング ーインスタンスの設定ー Copyright © 2023, Oracle and/or its affiliates 31

Slide 32

Slide 32 text

コンテナに指定可能なパラメーター ※コンテナは1インスタンスに複数指定可能 • コンテナの再起動ポリシー • 常時(Always)/なし(Never)/失敗時(OnFailure) • コンテナイメージの指定 • OCIR • 外部レジストリ • 環境変数 • リソース・スロットル • コンテナが利用可能な最大vCPU/メモリを数もしくは パーセンテージで指定可能 • 起動オプション • ENTRYPOINTをオーバーライド OCI Container Instancesのプロビジョニング ーコンテナの設定ー Copyright © 2023, Oracle and/or its affiliates 32

Slide 33

Slide 33 text

1. コンテナ・オーケストレーション (Kubernetes など) を必要としないコンテナ化されたアプリケーション 2. 迅速なインスタンスの作成と破棄が求められるワークロード • APIサーバ/Web アプリケーション • 一時的なワークロード • CI/CD パイプライン・ジョブ • 開発/テスト環境 • データ/メディア処理 • 自動化タスク 3. サーバー/VM 上で直接実行されるスタンドアロン コンテナ・ワークロード e.g., スケールアウトが考慮されていないレガシー・アプリケーションをコンテナ化してサーバレスで運用負荷軽減 OCI Container Instances のユースケース Copyright © 2023, Oracle and/or its affiliates 33

Slide 34

Slide 34 text

Copyright © 2023, Oracle and/or its affiliates 34 Container Instances demo Oracle Cloud Hangout Café Premium – OCI Cloud Native 2023

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

インフラ管理不要(サーバレス)の 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

Slide 37

Slide 37 text

OCI Queue Service Kyotaro Nonaka Solutions Architect Oracle Japan

Slide 38

Slide 38 text

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 アジェンダ

Slide 39

Slide 39 text

OCI Queue Service の概要 サービスの概要、特長、ユースケース Copyright © 2023, Oracle and/or its affiliates 39

Slide 40

Slide 40 text

Copyright © 2023, Oracle and/or its affiliates 40 メッセージ基盤の分類 分散ストリーミング • 点と(複数の)点を接続 • ブローカー通信 • リアルタイム/高スループット • メッセージの再利用性 • 順序保証 • 例) OCI Streaming (Kafka) メッセージキュー • 点と点を接続 • ブローカー通信 • 非同期通信 • 一度だけのメッセージ処理 • 処理の保証 • 自動スケール • 例) OCI Queue メッセージブローカー • 点と(複数の)点を接続 • ブローカー通信 • Pushベース/非同期 • 緩い順序保証 • 例) Oracle TEQ (AQ) (ストリーミング) Web サービス • 点と点を接続 • 直接の通信 • 同期通信 • 例) HTTP Web Services, gRPC

Slide 41

Slide 41 text

非同期メッセージングをサーバレスに実現する、ハイパフォーマンス・メッセージキュー 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

Slide 42

Slide 42 text

42 マネージド 自動化、メンテナンス要らず のインフラとプラットフォーム セキュア 外部/内部の脅威から データを守る スケール 停止なしの自動スケール と最低限のコスト Copyright © 2023, Oracle and/or its affiliates 42 OCI Queue Service の特長 従量課金 最大限のコストパフォーマンス 複数のプロトコル HTTP/STOMPのサポート

Slide 43

Slide 43 text

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 デリバリーを採用

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

OCI Queue Service の技術コンセプト サービス利用にあたって知っておくべきこと Copyright © 2023, Oracle and/or its affiliates 46

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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 に配信されることはない。

Slide 52

Slide 52 text

Copyright © 2023, Oracle and/or its affiliates 52 • DLQのOCIDは[QueueのOCID]-dlqとなる • DLQのOCIDを利用して、通常のQueueと同様にGetMessage/DeleteMessageを行う デッド・レター・キュー (DLQ)の利用

Slide 53

Slide 53 text

Demo プロビジョニング/各種パラメータ/コンソール/SDKで実行 Copyright © 2023, Oracle and/or its affiliates 53

Slide 54

Slide 54 text

OCI Queue Service と OCI Streaming Service それぞれのサービスの使い分け Copyright © 2023, Oracle and/or its affiliates 54

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

OCI DevOps Update Yutaka Ichikawa Oracle Corporation Japan Solutions Architect Mar08, 2023

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

1. OCI DevOps 概要 2. OCI DevOps Update 3. Blue-Green Deploy/Canary Release DEMO Agenda Copyright © 2023, Oracle and/or its affiliates 60

Slide 61

Slide 61 text

Copyright © 2023, Oracle and/or its affiliates 61 OCI DevOps 概要

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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のサービスとしての価 格は無料 価格無料 (*コード・リポジトリのストレージ、およびビルドのためのコン ピュートは別途必要)

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

Copyright © 2023, Oracle and/or its affiliates 65 OCI DevOps Update

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

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デプロイ、カナリア・リリースを実 現

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

OCI DevOps Demo Copyright © 2023, Oracle and/or its affiliates 75

Slide 76

Slide 76 text

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

Slide 77

Slide 77 text

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)

Slide 78

Slide 78 text

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)

Slide 79

Slide 79 text

Copyright © 2023, Oracle and/or its affiliates 79 OCI DevOps Blue/Green & Canary Demo Canary Demo Environment

Slide 80

Slide 80 text

参考情報 Copyright © 2023, Oracle and/or its affiliates 80

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

Thank you Copyright © 2023, Oracle and/or its affiliates 82

Slide 83

Slide 83 text

No content