OCI FunctionsおよびResource Schedulerを使用して、スケーリング・ベースECPUを自動化する方法 (2026/02/05)
OCI FunctionsおよびResource Schedulerを使用して、スケーリング・ベースECPUを自動化する方法 (2026/02/05)
投稿者: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を呼び出すことができます。」と定義します。
手順
- 「アイデンティティとセキュリティ」→「ドメイン」→「ドメイン」→「動的グループ」に移動します。
- 動的グループの作成をクリックします
- 名前: fn-adb-scale-dg
- 説明: ADBをスケールし、シークレットを読み取ることができる関数
- ルール (以下の OCID を実際のコンパートメント OCID に置き換えます):
すべて {resource.type = 'fnfunc'、resource.compartment.id = '<YOUR_FUNCTIONS_COMPARTMENT_OCID>'}
注: このルールは事実上、
「この特定のコンパートメントに存在するすべての関数は、この動的グループに属します」と述べています。
2. Autonomous AI Databaseへの機能アクセスのためのIAMポリシーを追加する
ここで、IAM に
「作成したこの動的グループは、Autonomous AI Databaseの更新を許可されています」と伝えます。
手順
- アイデンティティ→ポリシーへ移動
- リソースが存在するテナンシー または 特定のコンパートメントを選択します
- 「ポリシーの作成」をクリック
- 名前: fn-adb-scale-policy
- 説明: ADBを管理する機能を許可する
- ステートメント (コンパートメント名に合わせて調整してください):
Allow dynamic-group fn-adb-scale-dg to manage autonomous-databases in compartment <YOUR_ADB_COMPARTMENT_NAME>。
ヒント:
より厳密にしたい場合は、manage の代わりに use を使用できますが、最初のテストでは、manage が最も簡単な方法です。
3. Functionsアプリケーションを作成する
手順
- 開発者サービス → 機能 → アプリケーションに移動します
- アプリケーションの作成をクリック
- 名前: adb-scale-app
- コンパートメント: 動的グループルールで使用されているのと同じコンパートメントを選択します
- VCN + サブネット: ネットワークアクセスのあるサブネットを選択します
(通常はサービスゲートウェイのあるプライベートサブネット) - ログ記録: これを有効にする (デバッグには強く推奨)
- 作成をクリック
このアプリケーションはファンクションのコンテナとして機能します。
4. Pythonファンクションコードを準備する
Autonomous AI Database Update APIを呼び出して CPU 数を設定するファンクションを作成します 。
ファンクションプロジェクト構造
Cloud Shell と Fn CLIを組み合わせて使用します (最も簡単な方法、ローカル セットアップは不要)。
手順
- Cloud Shellを開きます (OCI コンソールの右上にある >_ アイコンをクリックします)
- 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 という名前のフォルダーが作成されます。
- Func.yaml
- Func.py
- 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 コンソールで確認します。
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コンソールにログイン
- ガバナンスと管理 → リソース スケジューラに移動
- スケジュールをクリック
ステップ2: 新しいスケジュールを作成する
- スケジュールを作成をクリック
- 以下の詳細を入力してください。
基本情報
- 名前: 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. スケジュール実行ステータスを確認する
- スケジュールを開く
- 実行/実行履歴へ移動
- ステータスを確認 = 成功
B. ファンクションログを確認する
- 開発者サービス → ファンクション → アプリケーションに移動します
- アプリケーションを選択してください
- 機能を開く
- クリック ログ
- 実行成功メッセージを確認する
C. Autonomous AI Databaseの検証
- Autonomous AI Databaseへ移動
- ターゲットDBを開く
- チェック:
- コンピューティングモデル (ECPU/OCPU)
- CPU/ECPU 数が更新されました
- ライフサイクルの状態は「UPDATING → AVAILABLE」と表示されます
ステップ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の両方に付加価値を提供することを専門としています。
コメント
コメントを投稿