1. はじめに
この Codelab では、文書作成サポート機能を使用して、既存のサービスの合成モニタリング テストを作成する方法を見ていきます。
演習内容
- API を Google Cloud Run にデプロイします。これは、テストするサービスのベースとして機能します。
- 次に、Cloud Monitoring の機能である合成モニターを作成します。
- 合成モニターの作成には文書作成サポート機能を使用します。
学習内容
- 合成モニタリングの概要
- Gemini の文書作成サポート機能を合成モニタリングで使用して、コアサービスの機能を検証するテストケースを作成する。
必要なもの
- Chrome ウェブブラウザ
- Gmail アカウント
- 課金が有効になっている Cloud プロジェクト
- Cloud プロジェクトで Gemini Code Assist が有効になっている
このラボは、初心者を含むあらゆるレベルのデベロッパーを対象としています。サンプル アプリケーションは Python 言語ですが、何が起こっているのかを理解するために Python プログラミングに精通している必要はありません。
2. セットアップ
Google Cloud プロジェクトで Gemini for Cloud を有効にします。以下の手順に沿って操作してください。
- https://console.cloud.google.com にアクセスし、このラボで使用する Google Cloud プロジェクトが選択されていることを確認します。右上に表示されている [Gemini を開く] アイコンをクリックします。
- コンソールの右側に Gemini for Cloud のチャット ウィンドウが開きます。下図の [有効にする] ボタンをクリックします。[有効にする] ボタンが表示されず、Chat インターフェースが表示される場合は、プロジェクトで Gemini for Cloud がすでに有効になっている可能性があります。その場合は、直接次のステップに進んでください。
- 有効にしたら、Gemini for Cloud に 1 つか 2 つのクエリを尋ねることで、Gemini for Cloud をテストできます。ここではサンプルクエリをいくつか示しますが、次のクエリを試してみてください:
What is Synthetic Monitoring?
Gemini for Cloud が質問の回答を返します。Google Cloud での合成モニターの作成方法について、提供されているリファレンス ドキュメントのリストをご確認ください。
右上にある アイコンをクリックすると、Gemini for Cloud のチャット ウィンドウを閉じることができます。
3. Google Cloud Run にサンプル Inventory API をデプロイする
テストを記述する前に、テストに使用できるサンプル API が必要です。そのために、シンプルなインベントリ API を作成し、Google Cloud Run にデプロイします。
ここでは、Code OSS ベースのフルマネージド開発環境である Cloud Shell IDE を使用します。この環境には Cloud Code IDE 拡張機能が付属しており、Google Cloud サービスを効率的に利用できます。以下の手順に沿って操作してください。
- ide.cloud.google.com にアクセスします。IDE が表示されるまでしばらく時間がかかる場合がありますので、しばらくお待ちください。
- 下のステータスバーにある [Cloud Code - Sign in] ボタンをクリックします。指示に従ってプラグインを承認します。ステータスバーに「Cloud Code - no project」と表示されている場合は、それを選択して、使用するプロジェクトのリストから特定の Google Cloud プロジェクトを選択します。
- 画面右下の [Gemini] ボタンをクリックし、最後に正しい Google Cloud プロジェクトを選択します。Cloud AI Companion API を有効にするように求められた場合は、有効にして続行してください。
- Google Cloud プロジェクトを選択したら、ステータスバーの Cloud Code ステータス メッセージでそれを確認できます。また、右側にあるステータスバーの Code Assist が有効になっていることも確認します。
- 下のステータスバーで Google Cloud プロジェクト名をクリックします。
- オプション一覧が表示されます。下のリストで [New Application] をクリックします。
- [Cloud Run] アプリケーションを選択します。
- [Python (Flask): Cloud Run] アプリケーション テンプレートを選択します。
- 新しいアプリケーションを任意の場所に保存します。
- アプリケーションが作成されたことを確認する通知が表示され、下に示すように、アプリケーションが読み込まれた状態で新しいウィンドウが開きます。
README.md
ファイルが開きます。このビューは一旦閉じて構いません。
- エクスプローラから
app.py
ファイルにアクセスし、次の内容に置き換えます。
from flask import Flask, jsonify, request
app = Flask(__name__)
inventory = [
{
'id': 1,
'name': 'Item 1',
'quantity': 10
},
{
'id': 2,
'name': 'Item 2',
'quantity': 20
},
{
'id': 3,
'name': 'Item 3',
'quantity': 30
}
]
@app.route('/inventory', methods=['GET'])
def get_inventory():
return jsonify(inventory)
@app.route('/inventory/<int:id>', methods=['GET'])
def get_inventory_item(id):
for item in inventory:
if item['id'] == id:
return jsonify(item)
return jsonify({'error': 'Item not found'}), 404
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=8080)
- 次に、Inventory API を Cloud Run にデプロイします。Cloud Shell IDE の左上のメニュー アイコンから、新しいターミナル セッションを起動する必要があります。メニュー アイコンをクリックし、下に示すように [Terminal] → [New Terminal] を選択します。
- ターミナル セッションで、次のコマンドを実行します。
gcloud run deploy --source .
- 上記のコマンドでは、デプロイする
region
について尋ねられます。us-central1
を選択してください。unauthenticated invocations
を許可するよう求めるメッセージが表示されたら、「y
」と言って許可してください。 - サービスが正常にデプロイされると、Service の URL が提供されます。書き留めておいてください。
4. Inventory API をテストする
Inventory API をテストするため、ブラウザを起動して次のエンドポイントにアクセスします。
SERVICE_URL/inventory
これにより、サービスのサンプルデータに基づく 3 つのインベントリ アイテムが返されます。レスポンスの例を以下に示します。
[ { "id": 1, "name": "Item 1", "quantity": 10 }, { "id": 2, "name": "Item 2", "quantity": 20 }, { "id": 3, "name": "Item 3", "quantity": 30 } ]
以下の URL で特定のインベントリ アイテムを取得できるようになりました。これにより、id
の値が 1 の在庫アイテムが返されます。
SERVICE_URL/inventory/1
レスポンスは次のようになります。
{ "id": 1, "name": "Item 1", "quantity": 10 }
最後に、存在しない在庫アイテムの取得を試みます。
SERVICE_URL/inventory/200
id
の値が 200 の在庫アイテムはないため、エラー メッセージが返されます。レスポンスの例を以下に示します。
{ "error": "Item not found" }
これで、Gemini を使用して Cloud Monitoring で合成モニタリング テストを作成する準備が整いました。
5. Google Cloud での合成モニタリング
ドキュメントで説明されているように、合成モニターでは、テストする内容とテストのシーケンスを定義できます。たとえば、アプリケーションのログインページ、e コマース ストアの購入手続き、アプリケーションからサードパーティのサービスに対して行う API 呼び出しをテストできます。
合成モニターを作成する場合、Cloud Run でビルドされた Cloud Functions(第 2 世代)をデプロイします。関数は Node.js で記述し、オープンソースの Synthetics SDK フレームワークを使用する必要があります。このフレームワークは Cloud Monitoring によって配布、管理されます。
Cloud Monitoring は、次のタイプの合成モニターをサポートしています。
- カスタムまたは Mocha ベースの合成モニターでは、完全に構成可能な単一目的の Cloud Functions の関数をデプロイできます。
- 無効なリンク チェッカーを使用すると、事前構成された Cloud Functions の関数をデプロイする前に、オリジン URI、テストされたリンク数、再試行回数などのオプションを指定できます。
Cloud Monitoring は、このような合成モニターの実行中、多くの手間のかかる作業を行います。以下の役割を担います。
- Cloud Function の関数の定期的な実行。
- 各実行の結果の収集と保存。
- 成功と失敗に関する情報(エラー メッセージ、エラーの種類、コード行など)
- 実行時間
- ログ
- 指標
Gemini の助けを借りて、特に Help Me Write
機能を利用してテストの初期コードを提供します。これにより、これを使用してテストし、さらに機能をさらに構築できるようになります。さっそく始めましょう。
6. Inventory API テストケース用の合成モニターを作成する
次に、Cloud コンソールに移動して合成モニターを作成します。
Cloud コンソールの [合成モニタリング] ページにアクセスします。これにより、次のようなページが表示されます。
上のページの [合成モニターを作成] リンクをクリックします。これにより、次のような構成フォームが表示されます。
s1
という名前が指定されていますが、他の名前を選択することもできます。上の画面の [コードを生成] ボタンに注目してください。それをクリックします。
表示されるポップアップで、Inventory API が正常に動作していることを確認するために、実行するテストケースを説明するプロンプトを入力する必要があります。
プロンプト編集ボックスで、次のようなプロンプトを使用します。
Help me write Node.js based synthetic test script with the assert module that performs the following tests:
1. A GET operation on SERVICE_URL/inventory. The http response code returned should be 200.
2. A GET operation on SERVICE_URL/inventory/1. The http response code returned should be 200. The response data is JSON format. It should be a single object with attributes as follows: "id" value should be 1, "name" value should be "Item 1" and "quantity" value should be 10.
3. A GET operation on SERVICE_URL/inventory/200. The https response code returned should be 404. The response data is in JSON format. It should be a single object with attributes as follows: "error" value should be "Item not found".
3 つのテストケースを用意しているため、SERVICE_URL の値を実際の Cloud Run サービス名に置き換える必要があります。
[生成] をクリックすると、以下に示すように、テストスイート コードと package.json
ファイルも生成されます。生成されたコードは、下のコードとは異なる場合があります。package.json
ファイル内のコードと依存関係ファイルを確認します。
[クラウド関数に挿入] をクリックします。Cloud Functions の関数作成フォームが開き、必要な値が入力されます。
[関数を適用] をクリックし、[作成] ボタンをクリックします。この例ではアラート チャネルの構成は選択していませんが、構成は自由に選択できます。
これにより、Google Cloud Functions の関数をバックグラウンドで作成するプロセスが開始されます。これには数分かかることがあります。
Cloud Functions の関数が正常にデプロイされると、Cloud Monitoring が合成モニターを呼び出すタスクを開始します。
最初は、以下に示すように呼び出しがないことがわかります。
特定の実行があると、さまざまな実行を確認できます。下記の画面は、テストに合格していることを示しています。
[Synthetic Monitor] の名前(例: s1)をクリックすると、以下のようにさまざまな実行内容が表示されます。
7. 完了
これで、サンプル API を Google Cloud Run に正常にデプロイし、合成モニタリング テストを作成してサービスの機能を検証できました。その過程では、テストスイートのコードの生成に Gemini を利用しました。