OCI FunctionsおよびResource Schedulerを使用して、スケーリング・ベースECPUを自動化する方法 (2026/02/05)

OCI FunctionsおよびResource Schedulerを使用して、スケーリング・ベースECPUを自動化する方法 (2026/02/05)

https://blogs.oracle.com/datawarehousing/how-to-automate-scaling-base-ecpus-using-oci-functions-and-resource-scheduler

投稿者:Keith Laker | Senior Principal Product Manager | Autonomous AI Database

この投稿は、ゲスト著者の一人であるMuthukumar Sivagnanam氏(ISV Prime、クラウドエンジニアリング担当プリンシパルクラウドアーキテクト)によるものです。

ビジネスケース:
多くのお客様は、予測不可能なピーク時および非ピーク時のワークロードで運用されています。このようなケースにおいて、Oracle Autonomous AI Database(ADB)は、定義されたベースラインECPU/OCPUと最適な組み合わせに加え、強力な組み込み自動スケーリング(最大3倍)を提供します。Oracle Autonomous AI Databaseは、需要の急増に対応するためのインテリジェントな自動スケーリング機能を備えた、優れた耐障害性、自己管理性、パフォーマンス最適化を備えたプラットフォームも提供します。


予測可能なピーク時および非ピーク時のワークロードにおけるコスト効率をさらに向上させるため、時間ベースのベースラインECPU/OCPU自動化レイヤーを実装しました。このレイヤーは、ピーク時とオフピーク時にベースラインを動的に調整しながら、ADBのネイティブな自動スケーリングを最大限に活用します。これにより、お客様はインフラストラクチャコストを実際のビジネス利用パターンに合わせて調整し、Autonomous AI Databaseの価値を最大化できます。この要件は、複数のISV顧客との議論から生まれました。


ソリューション実装
OCI FunctionsとResource Schedulerを用いたサーバーレス自動化を実装し、事前定義されたスケジュールに基づいてベースラインECPUをプログラム的に増減させました。このソリューションは、リソースプリンシパル、動的グループ、IAMポリシーを使用し、認証情報は不要で、セキュリティ上の理由から完全にプライベートネットワーク内で動作し、Oracle ADBの自動スケーリングをシームレスに補完します。


この最適化により、すぐに経済的なメリットが得られるだけでなく、OCI に移行して追加のワークロードを実行することに対する顧客の信頼が高まり、戦略的なクラウド プラットフォームとしての Oracle と OCI への信頼がさらに強化されます。

アーキテクチャ

実装手順:

1. ファンクションの動的グループを作成する

リソースのアイデンティティを確立する必要があります。
「このアプリケーション内のすべての関数は、Vault APIとデータベースAPIを呼び出すことができます。」と定義します。

手順

  1. 「アイデンティティとセキュリティ」→「ドメイン」→「ドメイン」→「動的グループ」に移動します。 
  2. 動的グループの作成をクリックします 
  3. 名前: fn-adb-scale-dg
  4. 説明: ADBをスケールし、シークレットを読み取ることができる関数
  5. ルール (以下の OCID を実際のコンパートメント OCID に置き換えます):

すべて {resource.type = 'fnfunc'、resource.compartment.id = '<YOUR_FUNCTIONS_COMPARTMENT_OCID>'}

  • 保存をクリック 

注: このルールは事実上、
「この特定のコンパートメントに存在するすべての関数は、この動的グループに属します」と述べています。

2.  Autonomous AI Databaseへの機能アクセスのためのIAMポリシーを追加する

ここで、IAM に
「作成したこの動的グループは、Autonomous AI Databaseの更新を許可されています」と伝えます。

手順

  1. アイデンティティ→ポリシーへ移動 
  2.  リソースが存在するテナンシー または 特定のコンパートメントを選択します 
  3. 「ポリシーの作成」をクリック 
  4. 名前: fn-adb-scale-policy
  5. 説明: ADBを管理する機能を許可する
  6. ステートメント (コンパートメント名に合わせて調整してください):

Allow dynamic-group fn-adb-scale-dg to manage autonomous-databases in compartment <YOUR_ADB_COMPARTMENT_NAME>。

ヒント:
より厳密にしたい場合は、manage の代わりに use を使用できますが、最初のテストでは、manage が最も簡単な方法です。

3. Functionsアプリケーションを作成する

手順

  1. 開発者サービス → 機能 → アプリケーションに移動します 
  2. アプリケーションの作成をクリック 
  3. 名前: adb-scale-app
  4. コンパートメント: 動的グループルールで使用されているのと同じコンパートメントを選択します
  5. VCN + サブネット: ネットワークアクセスのあるサブネットを選択します
    (通常はサービスゲートウェイのあるプライベートサブネット)
  6. ログ記録: これを有効にする (デバッグには強く推奨)
  7. 作成をクリック 

このアプリケーションはファンクションのコンテナとして機能します。

4. Pythonファンクションコードを準備する

Autonomous AI Database Update APIを呼び出して CPU 数を設定するファンクションを作成します 。

ファンクションプロジェクト構造

Cloud Shell と Fn CLIを組み合わせて使用​​します  (最も簡単な方法、ローカル セットアップは不要)。

手順

  1. Cloud Shellを開きます  (OCI コンソールの右上にある >_ アイコンをクリックします)
  2. Cloud Shell から、アプリケーションとコンテキストを一覧表示します。

# fn list apps
# fn list context

  • リージョン、コンパートメント、レジストリのコンテキストを更新/使用します。

# fn use context ap-singapore-1
# fn update context <Compartment OCID>
# fn update context registry sin.ocir.io/axsfxxxxxbhpo/adb-auto.0.1

  • OCI コンソール → ユーザー設定から認証トークンを作成し  、そのトークンを使用して OCIR にログインします。

# docker login -u ‘axsfxxxxxbhpo/muthukumar’ sin.ocir.io

パスワード: <ユーザー認証トークン>

(注: この例はシンガポール地域用です。地域を適宜変更してください。)

  • 関数プロジェクトを初期化します。

# fn init –runtime python adb-scale-fn
# cd adb-scale-fn

これにより、定型ファイルを含む adb-scale-fn という名前のフォルダーが作成されます。

  1. Func.yaml
  2. Func.py
  3. requirements.txt

func.yamlを以下の内容で編集します 。

以下のように func.yaml を更新します。

schema_version: 20180708
name: adb-scale-fn
version: 0.0.11
runtime: python
build_image: fnproject/python:3.11-dev
run_image: fnproject/python:3.11
entrypoint: /python/bin/fdk /function/func.py handler
memory: 256

requirements.txt を 以下の内容で更新します。 

oci
fdk

func.pyを 次のコードに置き換えます 

# func.py

コードを GitHub リポジトリに追加しました:  https://github.com/muthus-ca/oci-automation.git

5. ファンクションをデプロイする

# fn -v deploy –app adb-scale-app

OCI コンソールで確認します。

  • 開発者サービス → ファンクション → アプリケーション → adb-scale-app
  • ファンクション adb-scale-fnを選択
  • 構成を確認する 

6. 機能をテストする

Cloud Shell から直接呼び出します。

CPUを増やす

# fn invoke adb-scale-app adb-scale-fn <<EOF
{“adb_ocid”: “ocid1.autonomousdatabase.oc1..xxxx”, “new_cpu_count”: 8}
EOF

データベースの状態が UPDATINGに移行していることがわかります。

CPUを減らす

# fn invoke adb-scale-app adb-scale-fn <<EOF
{“adb_ocid”: “ocid1.autonomousdatabase.oc1..xxxx”, “new_cpu_count”: 2}
EOF


7. リソーススケジューラで機能を自動化する

ステップ1:リソーススケジューラに移動する

  • OCIコンソールにログイン 
  • ガバナンスと管理 → リソース スケジューラに移動
  • スケジュールをクリック 

  1.  

  1.  


ステップ2: 新しいスケジュールを作成する

  • スケジュールを作成をクリック 
  • 以下の詳細を入力してください。

  1.  

基本情報

  • 名前: adb-scale-up-schedule (例)
  • 説明: OCI ファンクションをトリガーしてADB ECPU を増加させます
  • 実行するアクション: 開始
  • コンパートメント:  <コンパートメント名を選択>
  • リソース: 静的、デプロイされたファンクションを選択
  • パラメータの適用: パラメータタイプ – 本文、値 (JSON)

ペイロード/リクエストボディフィールドに  、関数に必要なJSON入力を入力します。  (CPU数は適宜調整してください)

ECPU数を増やす

{
“adb_ocid”: “ocid1.autonomousdatabase.oc1.ap-singapore-1.xxxxxxv5aq”, 
“new_cpu_count”: 8
}

# 上記の手順を繰り返し、以下のJSON入力を指定して、CPU数を減らす別のスケジュールを作成します。(CPU数は適宜調整してください)

ECPU数を減らす

{
“adb_ocid”: “ocid1.autonomousdatabase.oc1.ap-singapore-1.xxxxxxv5aq”, 
“new_cpu_count”: 2
}

注: このペイロードは、  リクエスト本体としてファンクションのhandler()に直接渡されます。

ステップ3: スケジュールのタイミングを設定する

次のいずれかを選択します。

  • オプションA: シンプルなスケジュール(フォームインターフェース)  - デモではこの方法を使用しました
  • 頻度: 1 回 / 毎時 / 毎日 / 毎週 / 毎月 (デモでは 1 回使用)
  • 繰り返し:1
  • 時間: 時間を選択 (UTC タイムゾーン – 24 時間形式)
  • 開始日: <開始日> 終了日: <オプション>

レビューして保存

ステップ4: 実行を検証する

A. スケジュール実行ステータスを確認する

  • スケジュールを開く
  • 実行/実行履歴へ移動 
  • ステータスを確認 = 成功

  1.  

  1.  

B. ファンクションログを確認する

  • 開発者サービス → ファンクション → アプリケーションに移動します
  • アプリケーションを選択してください
  • 機能を開く
  • クリック ログ
  • 実行成功メッセージを確認する

  1.  

  1.  

  1.  

  1.  

C. Autonomous AI Databaseの検証

  • Autonomous AI Databaseへ移動 
  • ターゲットDBを開く
  •  チェック:
    • コンピューティングモデル (ECPU/OCPU)
    • CPU/ECPU 数が更新されました
      • ライフサイクルの状態は「UPDATING → AVAILABLE」と表示されます

    1.  

    1.  

    ステップ5: スケールアップとスケールダウンのスケジュールを別々に作成する

    推奨設定

    スケジュール名時間CPU
    adbスケールアップ営業時間8 ECPU
    adbスケールダウン営業時間外2 ECPU

    各スケジュールは、  異なる JSON ペイロードを使用して同じファンクションを呼び出します。

     

    まとめ

    ピーク時とオフピーク時の予測可能なワークロードに合わせてベースラインECPU/OCPUを動的にスケーリングすることで、お客様はデータベースあたり約40~50%という大幅な月間コスト削減を実現しました。複数のAutonomous AI Databaseと環境に適用することで、パフォーマンスに影響を与えることなく大幅なコスト最適化を実現しました。

    これらの節約分は、新しいワークロードの導入や追加のビジネス イニシアチブのサポートに再投資できます。

    このソリューションは完全に自動化され、サーバーレスで、運用上のオーバーヘッドがなく、プライベート接続ときめ細かいアクセス制御によって設計上安全であり、統合された監視、ログ記録、監査を通じて完全な観測可能性と監査可能性を提供します。

    ゲスト著者のMuthukumar Sivagnanam氏(プリンシパルクラウドアーキテクト、ISV Prime、クラウドエンジニアリング)
    に心より感謝申し上げます。Muthukumar氏は20年以上のIT経験を持ち、特に10年以上はクラウドテクノロジーを専門としています。Oracleでは、OCI ISVのお客様から信頼されるアドバイザーとして、クラウドアーキテクチャとソリューション、自動化、コスト最適化の取り組みを主導しています。ビジネス要件を安全でスケーラブルなOCIソリューションへと変換し、CXOレベルのビジネス成果と整合したテクノロジー戦略を提示することで、お客様のビジネスとOracleの両方に付加価値を提供することを専門としています。

    コメント

    このブログの人気の投稿

    Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

    ミリ秒の問題: BCCグループとOCIが市場データ・パフォーマンスを再定義する方法(AWSに対するベンチマークを使用) (2025/11/13)

    OCIサービスを利用したWebサイトの作成 その4~Identity Cloud Serviceでサイトの一部を保護 (2021/12/30)