Men-deploy, Mengelola, dan Mengamati Agen ADK di Cloud Run

1. Pengantar

Tutorial ini akan memandu Anda men-deploy, mengelola, dan memantau agen canggih yang dibangun dengan Agent Development Kit (ADK) di Google Cloud Run. ADK memungkinkan Anda membuat agen yang mampu melakukan alur kerja multi-agen yang kompleks. Dengan memanfaatkan Cloud Run, platform serverless yang terkelola sepenuhnya, Anda dapat men-deploy agen sebagai aplikasi dalam container yang skalabel tanpa mengkhawatirkan infrastruktur yang mendasarinya. Kombinasi yang efektif ini memungkinkan Anda berfokus pada logika inti agen sambil memanfaatkan lingkungan Google Cloud yang andal dan skalabel.

Sepanjang tutorial ini, kita akan mempelajari integrasi ADK yang lancar dengan Cloud Run. Anda akan mempelajari cara men-deploy agen, lalu mempelajari aspek praktis pengelolaan aplikasi dalam setelan seperti produksi. Kita akan membahas cara meluncurkan versi baru agen Anda dengan aman melalui pengelolaan traffic, sehingga Anda dapat menguji fitur baru dengan sebagian kecil pengguna sebelum rilis penuh.

Selain itu, Anda akan mendapatkan pengalaman langsung dalam memantau performa agen Anda. Kita akan menyimulasikan skenario dunia nyata dengan melakukan uji beban untuk mengamati kemampuan penskalaan otomatis Cloud Run dalam tindakan. Untuk mendapatkan insight yang lebih mendalam tentang perilaku dan performa agen Anda, kami akan mengaktifkan tracing dengan Cloud Trace. Hal ini akan memberikan tampilan permintaan yang mendetail dan menyeluruh saat permintaan tersebut melewati agen Anda, sehingga Anda dapat mengidentifikasi dan mengatasi hambatan performa. Setelah menyelesaikan tutorial ini, Anda akan memahami secara komprehensif cara men-deploy, mengelola, dan memantau agen yang didukung ADK secara efektif di Cloud Run.

Selama mengikuti codelab, Anda akan menggunakan pendekatan langkah demi langkah sebagai berikut:

  1. Buat database PostgreSQL di CloudSQL untuk digunakan bagi layanan sesi database ADK Agent
  2. Menyiapkan agen ADK dasar
  3. Menyiapkan layanan sesi database untuk digunakan oleh peluncur ADK
  4. Men-deploy agen ke Cloud Run untuk pertama kalinya
  5. Pengujian beban dan memeriksa penskalaan otomatis Cloud Run
  6. Men-deploy revisi agen baru dan secara bertahap meningkatkan traffic ke revisi baru
  7. Menyiapkan cloud tracing dan memeriksa tracing eksekusi agen

Ringkasan Arsitektur

20d503f01eaadfd.jpeg

Prasyarat

  • Nyaman bekerja dengan Python
  • Pemahaman tentang arsitektur full-stack dasar menggunakan layanan HTTP

Yang akan Anda pelajari

  • Struktur ADK dan utilitas lokal
  • Menyiapkan agen ADK dengan layanan sesi Database
  • Menyiapkan PostgreSQL di CloudSQL untuk digunakan oleh layanan sesi Database
  • Men-deploy aplikasi ke Cloud Run menggunakan Dockerfile dan menyiapkan variabel lingkungan awal
  • Mengonfigurasi dan Menguji penskalaan otomatis Cloud Run dengan pengujian beban
  • Strategi untuk rilis bertahap dengan Cloud Run
  • Menyiapkan pelacakan Agen ADK ke Cloud Trace

Yang Anda butuhkan

  • Browser web Chrome
  • Akun Gmail
  • Project Cloud dengan penagihan diaktifkan

Codelab ini, yang dirancang untuk developer dari semua level (termasuk pemula), menggunakan Python dalam aplikasi contohnya. Namun, pengetahuan Python tidak diperlukan untuk memahami konsep yang disajikan.

2. 🚀 Menyiapkan Penyiapan Pengembangan Workshop

Langkah 1: Pilih Project Aktif di Konsol Cloud

Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud (lihat bagian kiri atas konsol Anda)

9a0e28d3a550a989.png

Klik, dan Anda akan melihat daftar semua project Anda seperti contoh ini,

14e76d7abc8aeaba.png

Nilai yang ditunjukkan oleh kotak merah adalah PROJECT ID dan nilai ini akan digunakan di seluruh tutorial.

Pastikan penagihan diaktifkan untuk project Cloud Anda. Untuk memeriksanya, klik ikon burger ☰ di panel kiri atas yang menampilkan Menu Navigasi, lalu temukan menu Penagihan

db07810b26fc61d6.png

Jika Anda melihat "Akun Penagihan Uji Coba Google Cloud Platform" di bagian judul Penagihan / Ringkasan ( bagian kiri atas konsol cloud Anda ), project Anda siap digunakan untuk tutorial ini. Jika tidak, kembali ke awal tutorial ini dan tukarkan akun penagihan uji coba

45539d4ac57dd995.png

Langkah 2: Siapkan Database Cloud SQL

Kita akan memerlukan database yang akan digunakan oleh agen ADK nanti. Mari kita buat database PostgreSQL di Cloud SQL. Pertama, buka kotak penelusuran di bagian atas konsol cloud, lalu ketik "cloud sql". Kemudian, klik produk Cloud SQL

39dbcf39661a8b65.png

Setelah itu, kita perlu membuat instance database baru, klik Create Instance, lalu pilih PostgreSQL

b004e6ead3213818.png

2fd64e7f862ebbc2.png

Anda mungkin juga perlu mengaktifkan Compute Engine API jika memulai dengan project baru. Cukup klik Enable API jika perintah ini muncul

509305746061b60b.png

Selanjutnya, kita akan memilih spesifikasi database, memilih edisi Enterprise dengan preset Edisi Sandbox

f1a642e4ecd3295.png

Setelah itu, tetapkan nama instance dan sandi default untuk pengguna postgres di sini. Anda dapat menyiapkannya dengan kredensial apa pun yang Anda inginkan, tetapi untuk tutorial ini, kita akan menggunakan "adk-deployment" untuk nama instance dan "ADK-deployment123" untuk sandi di sini

4f1dfe940451606d.png

Mari kita gunakan us-central1 dengan zona tunggal untuk tutorial ini. Kita dapat menyelesaikan pembuatan database, lalu membiarkannya menyelesaikan semua penyiapan yang diperlukan dengan mengklik tombol Create Instance

6dceef8db8c1c7aa.png

Sambil menunggu proses ini selesai, kita dapat melanjutkan ke bagian berikutnya

Langkah 3: Pelajari Cloud Shell

Anda akan menggunakan Cloud Shell untuk sebagian besar tutorial. Klik Activate Cloud Shell di bagian atas konsol Google Cloud. Jika Anda diminta untuk memberikan otorisasi, klik Authorize.

26f20e837ff06119.png

79b06cc89a99f840.png

Setelah terhubung ke Cloud Shell, kita perlu memeriksa apakah shell ( atau terminal) sudah diautentikasi dengan akun kita

gcloud auth list

Jika Anda melihat Gmail pribadi Anda seperti contoh output di bawah, semuanya baik-baik saja

Credentialed Accounts

ACTIVE: *
ACCOUNT: alvinprayuda@gmail.com

To set the active account, run:
    $ gcloud config set account `ACCOUNT`

Jika tidak, coba muat ulang browser Anda dan pastikan Anda mengklik Izinkan saat diminta ( mungkin terganggu karena masalah koneksi)

Selanjutnya, kita juga perlu memeriksa apakah shell sudah dikonfigurasi ke PROJECT ID yang benar yang Anda miliki. Jika Anda melihat ada nilai di dalam ( ) sebelum ikon $ di terminal ( pada screenshot di bawah, nilainya adalah "adk-cloudrun-deployment-476504"), nilai ini menunjukkan project yang dikonfigurasi untuk sesi shell aktif Anda.

7695eb78acb3cacb.png

Jika nilai yang ditampilkan sudah benar, Anda dapat melewati perintah berikutnya. Namun, jika tidak benar atau tidak ada, jalankan perintah berikut

gcloud config set project <YOUR_PROJECT_ID>

Kemudian, clone direktori kerja template untuk codelab ini dari GitHub dengan menjalankan perintah berikut. Perintah ini akan membuat direktori kerja di direktori deploy_and_manage_adk

git clone https://github.com/alphinside/deploy-and-manage-adk-service.git deploy_and_manage_adk

Langkah 4: Memahami Editor Cloud Shell dan Menyiapkan Direktori Kerja Aplikasi

Sekarang, kita dapat menyiapkan editor kode untuk melakukan beberapa hal terkait coding. Kita akan menggunakan Cloud Shell Editor untuk melakukannya

Klik tombol Open Editor, dan Cloud Shell Editor akan terbuka 168eacea651b086c.png

Setelah itu, buka bagian atas Editor Cloud Shell, klik File->Open Folder, cari direktori username Anda, lalu cari direktori deploy_and_manage_adk, lalu klik tombol OK. Tindakan ini akan menjadikan direktori yang dipilih sebagai direktori kerja utama. Dalam contoh ini, nama penggunanya adalah alvinprayuda, sehingga jalur direktori ditampilkan di bawah

8eb3f593141dbcbf.png

ea96d0447c4160a2.png

Sekarang, direktori kerja Cloud Shell Editor Anda akan terlihat seperti ini ( di dalam deploy_and_manage_adk)

612d7958881293cc.png

Sekarang, buka terminal untuk editor. Anda dapat melakukannya dengan mengklik Terminal -> New Terminal di panel menu, atau menggunakan Ctrl + Shift + C , yang akan membuka jendela terminal di bagian bawah browser

aa04a318f1fc485f.png

Terminal aktif Anda saat ini harus berada di dalam direktori kerja deploy_and_manage_adk. Kita akan menggunakan Python 3.12 dalam codelab ini dan kita akan menggunakan pengelola project python uv untuk menyederhanakan kebutuhan pembuatan dan pengelolaan versi python serta lingkungan virtual. Paket uv ini sudah diinstal sebelumnya di Cloud Shell.

Jalankan perintah ini untuk menginstal dependensi yang diperlukan ke lingkungan virtual di direktori .venv

uv sync --frozen

Sekarang, kita perlu mengaktifkan API yang diperlukan melalui perintah yang ditunjukkan di bawah. Proses ini memerlukan waktu beberapa saat.

gcloud services enable aiplatform.googleapis.com \
                       run.googleapis.com \
                       cloudbuild.googleapis.com \
                       cloudresourcemanager.googleapis.com \
                       sqladmin.googleapis.com

Setelah perintah berhasil dieksekusi, Anda akan melihat pesan yang mirip dengan yang ditampilkan di bawah:

Operation "operations/..." finished successfully.

Selanjutnya, kita perlu menyiapkan file konfigurasi untuk project ini.

Ganti nama file .env.example menjadi .env

cp .env.example .env

Buka file .env dan perbarui nilai GOOGLE_CLOUD_PROJECT ke project-id Anda

# .env

# Google Cloud and Vertex AI configuration
GOOGLE_CLOUD_PROJECT=your-project-id
GOOGLE_CLOUD_LOCATION=global
GOOGLE_GENAI_USE_VERTEXAI=True

# Database connection for session service
# DB_CONNECTION_NAME=your-db-connection-name

Untuk codelab ini, kita akan menggunakan nilai yang telah dikonfigurasi sebelumnya untuk GOOGLE_CLOUD_LOCATION dan GOOGLE_GENAI_USE_VERTEXAI. Untuk saat ini, kita akan membiarkan DB_CONNECTION_NAME dikomentari.

Sekarang kita dapat melanjutkan ke langkah berikutnya, memeriksa logika agen dan men-deploy-nya

3. 🚀 Membangun Agen Cuaca dengan ADK dan Gemini 2.5

Pengantar Struktur Direktori ADK

Mari kita mulai dengan mempelajari apa yang ditawarkan ADK dan cara membuat agen. Dokumentasi lengkap ADK dapat diakses di URL ini . ADK menawarkan banyak utilitas dalam eksekusi perintah CLI-nya. Beberapa di antaranya adalah sebagai berikut :

  • Menyiapkan struktur direktori agen
  • Mencoba interaksi dengan cepat melalui input output CLI
  • Menyiapkan antarmuka web UI pengembangan lokal dengan cepat

Sekarang, mari kita periksa struktur agen di direktori weather_agent

weather_agent/
├── __init__.py
├── agent.py
└── tool.py

Jika Anda memeriksa init.py dan agent.py, Anda akan melihat kode ini

# __init__.py

from weather_agent.agent import root_agent

__all__ = ["root_agent"]
# agent.py


import os
from pathlib import Path

import google.auth
from dotenv import load_dotenv
from google.adk.agents import Agent
from weather_agent.tool import get_weather

# Load environment variables from .env file in root directory
root_dir = Path(__file__).parent.parent
dotenv_path = root_dir / ".env"
load_dotenv(dotenv_path=dotenv_path)


# Use default project from credentials if not in .env
_, project_id = google.auth.default()
os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "global")
os.environ.setdefault("GOOGLE_GENAI_USE_VERTEXAI", "True")

root_agent = Agent(
    name="weather_agent",
    model="gemini-2.5-flash",
    instruction="""
You are a helpful AI assistant designed to provide accurate and useful information.
""",
    tools=[get_weather],
)

Penjelasan Kode ADK

Skrip ini berisi inisiasi agen tempat kita menginisialisasi hal-hal berikut:

  • Menetapkan model yang akan digunakan menjadi gemini-2.5-flash
  • Menyediakan alat get_weather untuk mendukung fungsi agen sebagai agen cuaca

Menjalankan UI Web

Sekarang, kita dapat berinteraksi dengan agen dan memeriksa perilakunya secara lokal. ADK memungkinkan kita memiliki UI web pengembangan untuk berinteraksi dan memeriksa apa yang terjadi selama interaksi. Jalankan perintah berikut untuk memulai server UI pengembangan lokal

uv run adk web --port 8080

Perintah ini akan menghasilkan output seperti contoh berikut, yang berarti kita sudah dapat mengakses antarmuka web

INFO:     Started server process [xxxx]
INFO:     Waiting for application startup.

+-----------------------------------------------------------------------------+
| ADK Web Server started                                                      |
|                                                                             |
| For local testing, access at http://localhost:8080.                         |
+-----------------------------------------------------------------------------+

INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)

Sekarang, untuk memeriksanya, klik tombol Web Preview di area atas Cloud Shell Editor Anda, lalu pilih Preview on port 8080

edc73e971b9fc60c.png

Anda akan melihat halaman web berikut tempat Anda dapat memilih agen yang tersedia di tombol drop-down kiri atas ( dalam kasus ini, tombol tersebut adalah weather_agent) dan berinteraksi dengan bot. Anda akan melihat banyak informasi tentang detail log selama runtime agen di jendela kiri

25999e0b71c3989.png

Sekarang, coba berinteraksi dengannya. Di panel kiri, kita dapat memeriksa rekaman aktivitas untuk setiap input, sehingga kita dapat memahami berapa lama waktu yang diperlukan untuk setiap tindakan yang dilakukan oleh agen sebelum membentuk jawaban akhir.

b4ba38adf419017e.png

Ini adalah salah satu fitur observasi yang telah dibangun ke dalam ADK, saat ini kami memeriksanya secara lokal. Selanjutnya, kita akan melihat cara mengintegrasikannya ke Cloud Trace sehingga kita memiliki trace terpusat dari semua permintaan

4. 🚀 Men-deploy ke Cloud Run

Sekarang, mari kita deploy layanan agen ini ke Cloud Run. Untuk tujuan demo ini, layanan ini akan diekspos sebagai layanan publik yang dapat diakses oleh orang lain. Namun, perlu diingat bahwa ini bukan praktik terbaik karena tidak aman

20d503f01eaadfd.jpeg

Dalam codelab ini, kita akan menggunakan Dockerfile untuk men-deploy agen ke Cloud Run. Pada tahap ini, kita sudah memiliki semua file yang diperlukan ( Dockerfile dan server.py) untuk men-deploy aplikasi ke Cloud Run. Kita akan membahasnya secara mendetail nanti.

Sekarang, mari kita deploy layanan terlebih dahulu, buka Terminal Cloud Shell, dan pastikan project saat ini dikonfigurasi ke project aktif Anda. Jika tidak, Anda harus menggunakan perintah gcloud configure untuk menyetel project ID:

gcloud config set project [PROJECT_ID]

Sekarang, kita perlu membuka kembali file .env, membukanya, dan Anda akan melihat bahwa kita perlu menghapus komentar variabel DB_CONNECTION_NAME dan mengisinya dengan nilai yang benar

# Google Cloud and Vertex AI configuration
GOOGLE_CLOUD_PROJECT=your-project-id
GOOGLE_CLOUD_LOCATION=global
GOOGLE_GENAI_USE_VERTEXAI=True

# Database connection for session service
DB_CONNECTION_NAME=your-db-connection-name

Untuk mendapatkan nilai DB_CONNECTION_NAME, Anda dapat membuka Cloud SQL lagi dan mengklik instance yang telah Anda buat. Buka kotak penelusuran di bagian atas konsol cloud, lalu ketik "cloud sql". Kemudian, klik produk Cloud SQL

39dbcf39661a8b65.png

Setelah itu, Anda akan melihat instance yang dibuat sebelumnya, klik instance tersebut

8faf706622293e9a.png

Di dalam halaman instance, scroll ke bawah ke bagian "Connect to this instance" dan Anda dapat menyalin Connection Name untuk menggantikan nilai DB_CONNECTION_NAME.

d669fc62ae37ab7d.png

Setelah itu, buka file .env dan ubah variabel DB_CONNECTION_NAME. File env Anda akan terlihat seperti contoh di bawah

# Google Cloud and Vertex AI configuration
GOOGLE_CLOUD_PROJECT=your-project-id
GOOGLE_CLOUD_LOCATION=global
GOOGLE_GENAI_USE_VERTEXAI=True

# Database connection for session service
DB_CONNECTION_NAME=your-project-id:your-location:your-instance-name

Setelah itu, jalankan skrip deployment

bash deploy_to_cloudrun.sh

Jika Anda diminta untuk mengonfirmasi pembuatan registry artefak untuk repositori Docker, cukup jawab Y.

Sambil menunggu proses deployment, mari kita lihat deploy_to_cloudrun.sh

#!/bin/bash

# Load environment variables from .env file
if [ -f .env ]; then
    export $(cat .env | grep -v '^#' | xargs)
else
    echo "Error: .env file not found"
    exit 1
fi

# Validate required variables
required_vars=("GOOGLE_CLOUD_PROJECT" "DB_CONNECTION_NAME")
for var in "${required_vars[@]}"; do
    if [ -z "${!var}" ]; then
        echo "Error: $var is not set in .env file"
        exit 1
    fi
done

gcloud run deploy weather-agent \
    --source . \
    --port 8080 \
    --project ${GOOGLE_CLOUD_PROJECT} \
    --allow-unauthenticated \
    --add-cloudsql-instances ${DB_CONNECTION_NAME} \
    --update-env-vars SESSION_SERVICE_URI="postgresql+pg8000://postgres:ADK-deployment123@postgres/?unix_sock=/cloudsql/${DB_CONNECTION_NAME}/.s.PGSQL.5432",GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} \
    --region us-central1 \
    --min 1 \
    --memory 1G \
    --concurrency 10

Skrip ini akan memuat variabel .env Anda, lalu menjalankan perintah deployment.

Jika Anda melihat lebih dekat, kita hanya memerlukan satu perintah gcloud run deploy untuk melakukan semua hal yang diperlukan jika Anda ingin men-deploy layanan: membangun image, mengirim ke registry, men-deploy layanan, menyetel kebijakan IAM, membuat revisi, dan bahkan merutekan traffic. Dalam contoh ini, kita sudah menyediakan Dockerfile, sehingga perintah ini akan menggunakannya untuk membangun aplikasi

Setelah deployment selesai, Anda akan mendapatkan link yang mirip dengan di bawah ini:

https://weather-agent-*******.us-central1.run.app

Setelah mendapatkan URL ini, Anda dapat menggunakan aplikasi dari jendela Samaran atau perangkat seluler dan mengakses UI Dev agen. Sambil menunggu deployment, mari kita periksa layanan mendetail yang baru saja kita deploy di bagian berikutnya

5. 💡 Dockerfile dan Skrip Server Backend

Agar agen dapat diakses sebagai layanan, kita akan menggabungkan agen di dalam aplikasi FastAPI yang akan dijalankan pada perintah Dockerfile. Berikut adalah konten Dockerfile

FROM python:3.12-slim

RUN pip install --no-cache-dir uv==0.7.13

WORKDIR /app

COPY . .

RUN uv sync --frozen

EXPOSE 8080

CMD ["uv", "run", "uvicorn", "server:app", "--host", "0.0.0.0", "--port", "8080"]

Kita dapat mengonfigurasi layanan yang diperlukan untuk mendukung agen di sini, seperti menyiapkan layanan Sesi, Memori, atau Artefak untuk tujuan produksi di sini. Berikut adalah kode server.py yang akan digunakan

import os

from dotenv import load_dotenv
from fastapi import FastAPI
from google.adk.cli.fast_api import get_fast_api_app
from pydantic import BaseModel
from typing import Literal
from google.cloud import logging as google_cloud_logging


# Load environment variables from .env file
load_dotenv()

logging_client = google_cloud_logging.Client()
logger = logging_client.logger(__name__)

AGENT_DIR = os.path.dirname(os.path.abspath(__file__))

# Get session service URI from environment variables
session_uri = os.getenv("SESSION_SERVICE_URI", None)

# Prepare arguments for get_fast_api_app
app_args = {"agents_dir": AGENT_DIR, "web": True, "trace_to_cloud": True}

# Only include session_service_uri if it's provided
if session_uri:
    app_args["session_service_uri"] = session_uri
else:
    logger.log_text(
        "SESSION_SERVICE_URI not provided. Using in-memory session service instead. "
        "All sessions will be lost when the server restarts.",
        severity="WARNING",
    )

# Create FastAPI app with appropriate arguments
app: FastAPI = get_fast_api_app(**app_args)

app.title = "weather-agent"
app.description = "API for interacting with the Agent weather-agent"


class Feedback(BaseModel):
    """Represents feedback for a conversation."""

    score: int | float
    text: str | None = ""
    invocation_id: str
    log_type: Literal["feedback"] = "feedback"
    service_name: Literal["weather-agent"] = "weather-agent"
    user_id: str = ""


# Example if you want to add your custom endpoint
@app.post("/feedback")
def collect_feedback(feedback: Feedback) -> dict[str, str]:
    """Collect and log feedback.

    Args:
        feedback: The feedback data to log

    Returns:
        Success message
    """
    logger.log_struct(feedback.model_dump(), severity="INFO")
    return {"status": "success"}


# Main execution
if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app, host="0.0.0.0", port=8080)

Penjelasan Kode Server

Berikut adalah hal-hal yang ditentukan dalam skrip server.py:

  1. Konversi agen kita menjadi aplikasi FastAPI menggunakan metode get_fast_api_app. Dengan cara ini, kita akan mewarisi definisi rute yang sama yang digunakan untuk UI pengembangan web.
  2. Konfigurasi layanan Sesi, Memori, atau Artefak yang diperlukan dengan menambahkan argumen kata kunci ke metode get_fast_api_app. Dalam tutorial ini, jika kita mengonfigurasi variabel lingkungan SESSION_SERVICE_URI, layanan sesi akan menggunakannya. Jika tidak, layanan sesi akan menggunakan sesi dalam memori
  3. Kita dapat menambahkan rute kustom untuk mendukung logika bisnis backend lainnya. Dalam skrip, kita menambahkan contoh rute fungsi masukan
  4. Aktifkan cloud tracing di parameter arg get_fast_api_app, untuk mengirimkan rekaman aktivitas ke Google Cloud Trace
  5. Jalankan layanan FastAPI menggunakan uvicorn

Sekarang, jika deployment Anda sudah selesai, coba berinteraksi dengan agen dari UI Dev web dengan mengakses URL Cloud Run

6. 🚀 Memeriksa Penskalaan Otomatis Cloud Run dengan Pengujian Beban

Sekarang, kita akan memeriksa kemampuan penskalaan otomatis Cloud Run. Untuk skenario ini, mari deploy revisi baru sambil mengaktifkan konkurensi maksimum per instance. Di bagian sebelumnya, kita menetapkan konkurensi maksimum ke 10 ( flag --concurrency 10). Oleh karena itu, kita dapat memperkirakan bahwa Cloud Run akan mencoba menskalakan instance-nya saat kita melakukan uji beban yang melebihi jumlah ini.

Mari kita periksa file load_test.py. Ini akan menjadi skrip yang kita gunakan untuk melakukan pengujian beban menggunakan framework locust. Skrip ini akan melakukan hal berikut :

  1. user_id dan session_id yang diacak
  2. Buat session_id untuk user_id
  3. Hit endpoint "/run_sse" dengan user_id dan session_id yang dibuat

Kita perlu mengetahui URL layanan yang di-deploy, jika Anda melewatkannya. Buka konsol Cloud Run, lalu klik layanan weather-agent Anda

979ec433acc4e35f.png

Kemudian, temukan layanan weather-agent Anda, lalu klik

6f0874f1e96cdbd6.png

URL layanan akan ditampilkan tepat di samping informasi Region. Mis.

6d0823829ee15d1.png

Kemudian, jalankan perintah berikut untuk melakukan uji beban

uv run locust -f load_test.py \
              -H {YOUR_SERVICE_URL} \
              -u 60 \
              -r 5 \
              -t 120 \
              --headless

Dengan menjalankan ini, Anda akan melihat metrik seperti ini ditampilkan. ( Dalam contoh ini, semua permintaan berhasil )

Type     Name                                  # reqs      # fails |    Avg     Min     Max    Med |   req/s  failures/s
--------|------------------------------------|-------|-------------|-------|-------|-------|-------|--------|-----------
POST     /run_sse end                             813     0(0.00%) |   5817    2217   26421   5000 |    6.79        0.00
POST     /run_sse message                         813     0(0.00%) |   2678    1107   17195   2200 |    6.79        0.00
--------|------------------------------------|-------|-------------|-------|-------|-------|-------|--------|-----------
         Aggregated                              1626     0(0.00%) |   4247    1107   26421   3500 |   13.59        0.00  

Kemudian, mari kita lihat apa yang terjadi di Cloud Run. Buka kembali layanan yang di-deploy, lalu lihat dasbornya. Hal ini akan menunjukkan cara Cloud Run menskalakan instance secara otomatis untuk menangani permintaan yang masuk. Karena kita membatasi konkurensi maksimum hingga 10 per instance, instance Cloud Run akan mencoba menyesuaikan jumlah container untuk memenuhi kondisi ini secara otomatis.

a23679982c072041.png

7. 🚀 Merilis Revisi Baru Secara Bertahap

Sekarang, mari kita lihat skenario berikut. Kita ingin memperbarui perintah agen. Buka weather_agent/agent.py dan ganti dengan kode berikut:

# weather_agent/agent.py

import os
from pathlib import Path

import google.auth
from dotenv import load_dotenv
from google.adk.agents import Agent
from weather_agent.tool import get_weather

# Load environment variables from .env file in root directory
root_dir = Path(__file__).parent.parent
dotenv_path = root_dir / ".env"
load_dotenv(dotenv_path=dotenv_path)


# Use default project from credentials if not in .env
_, project_id = google.auth.default()
os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "global")
os.environ.setdefault("GOOGLE_GENAI_USE_VERTEXAI", "True")

root_agent = Agent(
    name="weather_agent",
    model="gemini-2.5-flash",
    instruction="""
You are a helpful AI assistant designed to provide accurate and useful information.
You only answer inquiries about the weather. Refuse all other user query
""",
    tools=[get_weather],
)

Kemudian, Anda ingin merilis revisi baru, tetapi tidak ingin semua traffic permintaan langsung menuju ke versi baru. Kita dapat melakukan rilis bertahap dengan Cloud Run. Pertama, kita perlu men-deploy revisi baru, tetapi dengan tanda –no-traffic. Simpan skrip agen sebelumnya dan jalankan perintah berikut

gcloud run deploy weather-agent \
                  --source . \
                  --port 8080 \
                  --project {YOUR_PROJECT_ID} \
                  --allow-unauthenticated \
                  --region us-central1 \
                  --no-traffic

Setelah selesai, Anda akan menerima log yang serupa dengan proses deployment sebelumnya dengan perbedaan jumlah traffic yang ditayangkan. Kampanye ini akan menampilkan 0 persen traffic yang ditayangkan.

Service [weather-agent] revision [weather-agent-xxxx-xxx] has been deployed and is serving 0 percent of traffic.

Selanjutnya, buka halaman produk Cloud Run dan temukan instance yang di-deploy. Ketik cloud run di kotak penelusuran, lalu klik produk Cloud Run

979ec433acc4e35f.png

Kemudian, temukan layanan weather-agent Anda, lalu klik

6f0874f1e96cdbd6.png

Buka tab Revisi dan Anda akan melihat daftar revisi yang di-deploy di sana

de00ac6870ed120b.png

Anda akan melihat bahwa revisi baru yang di-deploy menyajikan 0%, dari sini Anda dapat mengklik tombol kebab (⋮) dan memilih Kelola Traffic

f35344086aecc5e6.png

Di jendela yang baru muncul, Anda dapat mengedit persentase traffic yang masuk ke revisi tertentu.

525ae793ebeee87f.png

Setelah menunggu beberapa saat, traffic akan diarahkan secara proporsional berdasarkan konfigurasi persentase. Dengan begitu, kita dapat dengan mudah mengembalikan ke revisi sebelumnya jika terjadi masalah dengan rilis baru

8. 🚀 Pelacakan ADK

Agen yang dibangun dengan ADK sudah mendukung pelacakan menggunakan penyematan telemetri terbuka di dalamnya. Kita memiliki Cloud Trace untuk merekam pelacakan tersebut dan memvisualisasikannya. Mari kita periksa server.py tentang cara mengaktifkannya di layanan yang sebelumnya kita deploy

# server.py

...

app_args = {"agents_dir": AGENT_DIR, "web": True, "trace_to_cloud": True}

...

app: FastAPI = get_fast_api_app(**app_args)

...

Di sini, kita meneruskan argumen trace_to_cloud ke True. Jika men-deploy dengan opsi lain, Anda dapat melihat dokumentasi ini untuk mengetahui detail selengkapnya tentang cara mengaktifkan tracing ke Cloud Trace dari berbagai opsi deployment

Coba akses UI dev web layanan Anda dan lakukan percakapan dengan agen. Setelah itu, buka kolom penelusuran konsol cloud, ketik "trace explorer", lalu pilih produk Trace Explorer di sana

8d6786e232c8fd40.png

Di halaman trace explorer, Anda akan melihat bahwa trace percakapan kita dengan agen telah dikirimkan. Anda dapat melihat dari bagian Span name dan memfilter rentang khusus agen kami ( bernama agent_run [weather_agent]) di sana

ab15b7e94ae72e85.png

Jika rentang sudah difilter, Anda juga dapat memeriksa setiap rekaman aktivitas secara langsung. Bagian ini akan menampilkan durasi mendetail pada setiap tindakan yang dilakukan oleh agen. Misalnya, lihat gambar di bawah

6258b48344a61a4b.png

92ab222ff1200011.png

Di setiap bagian, Anda dapat memeriksa detail dalam atribut seperti yang ditunjukkan di bawah

8b19a748d40276cb.png

Sekarang kita memiliki kemampuan pengamatan dan informasi yang baik tentang setiap interaksi agen kita dengan pengguna untuk membantu men-debug masalah. Jangan ragu untuk mencoba berbagai alat atau alur kerja.

9. 🎯 Tantangan

Coba alur kerja multi-agen atau agen untuk melihat performanya saat beban tinggi dan seperti apa rekaman aktivitasnya

10. 🧹 Membersihkan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam codelab ini, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Manage resources.
  2. Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
  4. Atau, Anda dapat membuka Cloud Run di konsol, memilih layanan yang baru saja Anda deploy, lalu menghapusnya.