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 mendapatkan manfaat dari 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 end-to-end yang mendetail saat permintaan tersebut melewati agen Anda, sehingga Anda dapat mengidentifikasi dan mengatasi hambatan performa. Setelah menyelesaikan tutorial ini, Anda akan memiliki pemahaman yang komprehensif tentang 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

5cdb729288bf43de.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)

9803a4534597d962.png

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

5b60dbeab4f9b524.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

db49b5267c00cc33.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

7f607aa026552bf5.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

1005cb65520eb3fc.png

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

7f2ad19bc246895d.png

ead4a98e7a8d8a39.png

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

724cf67681535679.png

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

24aa9defed93a3ef.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

f9db3a2a923e988f.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

773e2ea11d97369d.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.

1829c3759227c19b.png

b8fe7df5c3c2b919.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, 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.

5ccbc0cf16feaa0.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 b16d56e4979ec951.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

ee00d484ff2f8351.png

b1fbf2dcd99c468b.png

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

4068b1443241bfa1.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

55361099b2f56c79.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

Jika 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 ke 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

e7c9f56c2463164.png

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

d95b1e057315fee2.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.

39c0a06ace937683.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 Tracing sehingga kita memiliki trace terpusat dari semua permintaan

4. 🚀 Men-deploy ke Cloud Run

Sekarang, 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

5cdb729288bf43de.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 menetapkan 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

1005cb65520eb3fc.png

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

ca69aefd116c0b23.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.

5d7d6c6f17e559c1.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 Session, Memory, atau Artifact 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, atau 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

f5cc953cc422de6d.png

Kemudian, temukan layanan weather-agent Anda, lalu klik

ddd0df8544aa2bfb.png

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

41b1276616379ee8.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 penampung untuk memenuhi kondisi ini secara otomatis.

1ad41143eb9d95df.png

7. 🚀 Merilis Revisi Baru Secara Bertahap

Sekarang, mari kita lihat skenario berikut. Kita ingin memperbarui perintah agen. Buka weather_agent/agent.py dan timpa 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

f5cc953cc422de6d.png

Kemudian, temukan layanan weather-agent Anda, lalu klik

ddd0df8544aa2bfb.png

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

8519c5a59bc7efa6.png

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

d4d224e20813c303.png

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

6df497c3d5847f14.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 dibuat dengan ADK sudah mendukung pelacakan menggunakan penyematan telemetri terbuka di dalamnya. Kita memiliki Cloud Trace untuk merekam pelacakan tersebut dan memvisualisasikannya. Mari periksa server.py tentang cara mengaktifkannya di layanan yang sebelumnya di-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 pengembangan web layanan Anda dan mulai percakapan dengan agen. Setelah itu, buka kolom penelusuran konsol cloud, ketik "trace explorer", lalu pilih produk Trace Explorer di sana

4353c0f8982361ab.png

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

c4336d117a3d2f6a.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

76a56dff77979037.png

1a3ce0a803d6061a.png

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

2c87b6d67b0164a8.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.