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에 한두 개의 쿼리를 요청하여 테스트할 수 있습니다. 몇 가지 샘플 쿼리가 표시되는데,
What is Synthetic Monitoring?을 검색해 보세요.

Gemini for Cloud가 질문에 답합니다. Google Cloud에서 합성 모니터를 작성하는 방법에 관한 참조 문서 목록을 확인하세요.
오른쪽 상단에 있는
아이콘을 클릭하면 Gemini for Cloud 채팅 창을 닫을 수 있습니다.
3. Google Cloud Run에 샘플 인벤토리 API 배포
테스트를 작성하기 전에 테스트할 샘플 API가 필요합니다. 이를 위해 Google Cloud Run에 배포할 간단한 인벤토리 API를 작성합니다.
완전 관리형 Code OSS 기반 개발 환경인 Cloud Shell IDE를 사용합니다. 환경에는 Google Cloud 서비스를 효율적으로 사용할 수 있는 Cloud Code IDE 확장 프로그램이 함께 제공됩니다. 아래 단계를 따르세요.
- ide.cloud.google.com을 방문합니다. IDE가 표시되는 데 시간이 걸릴 수 있으니 잠시 기다려 주세요.
- 그림과 같이 하단 상태 표시줄에서 Cloud Code - 로그인 버튼을 클릭합니다. 안내에 따라 플러그인을 승인합니다. 상태 표시줄에 'Cloud Code - 프로젝트 없음'이 표시되면 이를 선택한 다음 작업하려는 프로젝트 목록에서 특정 Google Cloud 프로젝트를 선택합니다.

- 오른쪽 하단에 있는 Gemini 버튼을 클릭하고 올바른 Google Cloud 프로젝트를 다시 한번 선택합니다. Cloud AI Companion API를 사용 설정하라는 메시지가 표시되면 사용 설정하고 계속 진행합니다.
- Google Cloud 프로젝트를 선택한 후 상태 표시줄의 Cloud Code 상태 메시지에서 아래 표시된 것처럼 오른쪽에 코드 어시스턴트가 사용 설정되어 있는지 확인합니다.

- 아래의 상태 표시줄에서 Google Cloud 프로젝트 이름을 클릭합니다.

- 옵션 목록이 표시됩니다. 아래 목록에서 새 애플리케이션을 클릭합니다.

- 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)
- 이제 인벤토리 API를 Cloud Run에 배포할 차례입니다. 왼쪽 상단의 메뉴 아이콘을 통해 Cloud Shell IDE에서 새 터미널 세션을 시작해야 합니다. 아래와 같이 메뉴 아이콘을 클릭한 다음 터미널 → 새 터미널을 클릭합니다.

- 터미널 세션에서 다음 명령어를 입력합니다.
gcloud run deploy --source .
- 위 명령어는 배포할
region에 관해 묻습니다.us-central1를 선택하세요.unauthenticated invocations을 허용하라는 메시지가 표시되면y이라고 말하여 허용하세요. - 서비스가 성공적으로 배포되면 서비스 URL이 제공됩니다. 이 내용을 적어 두세요.
4. 인벤토리 API 테스트
이제 브라우저를 실행하고 다음 엔드포인트를 눌러 인벤토리 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의 합성 모니터링
문서에 명시된 대로 합성 모니터를 사용하면 테스트할 대상과 일련의 테스트를 정의할 수 있습니다. 예를 들어 애플리케이션의 로그인 페이지, 전자상거래 스토어의 결제 프로세스 또는 애플리케이션에서 서드 파티 서비스에 수행하는 API 호출을 테스트할 수 있습니다.
합성 모니터를 만들 때는 Cloud Run을 기반으로 빌드된 2세대 Cloud 함수를 배포합니다. 함수는 Node.js로 작성되어야 하며 오픈소스 합성 SDK 프레임워크를 사용해야 합니다. Cloud Monitoring에서 이 프레임워크를 배포하고 관리합니다.
Cloud Monitoring은 다음 유형의 합성 모니터를 지원합니다.
- 커스텀 또는 Mocha 기반 합성 모니터를 사용하면 완전히 구성 가능한 단일 용도의 Cloud 함수를 배포할 수 있습니다.
- 깨진 링크 검사기에서는 사전 구성된 Cloud 함수를 배포하기 전에 원본 URI, 테스트된 링크 수, 재시도 횟수와 같은 옵션을 지정할 수 있습니다.
Cloud Monitoring은 이러한 합성 모니터를 실행하는 동안 많은 작업을 처리합니다. 다음과 같은 역할을 담당합니다.
- Cloud 함수의 주기적 실행
- 각 실행 결과를 수집하고 저장합니다.
- 오류 메시지, 오류 유형, 코드 줄과 같은 성공 및 실패 정보
- 실행 시간
- 로그
- 측정항목
Gemini, 특히 Help Me Write 기능을 사용하여 테스트를 위한 초기 코드를 가져와 이를 사용하여 테스트하고 추가 기능을 빌드할 것입니다. 시작해 볼까요?
6. 인벤토리 API 테스트 사례를 위한 합성 모니터 작성
이제 Cloud 콘솔로 이동하여 합성 모니터를 작성합니다.
Cloud Console에서 합성 모니터링 페이지로 이동합니다. 그러면 아래와 같은 페이지가 표시됩니다.

위 페이지에서 CREATE SYNTHETIC MONITOR 링크를 클릭합니다. 그러면 아래와 같이 구성 양식이 표시됩니다.

이름 s1이 제공되었지만 다른 이름을 선택해도 됩니다. 위 화면에 코딩 도우미 버튼이 표시됩니다. 클릭합니다.
그러면 인벤토리 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 서비스 이름으로 바꿔야 합니다.
생성을 클릭하면 아래와 같이 Gemini가 테스트 도구 모음 코드와 package.json 파일도 생성합니다. 생성된 코드는 아래에 표시된 코드와 다를 수 있습니다. package.json 파일에서 코드와 종속 항목 파일을 확인합니다.

Cloud 함수에 삽입을 클릭합니다. 그러면 필요한 값이 채워진 Cloud 함수 생성 양식이 표시됩니다.

함수 적용을 클릭한 다음 만들기 버튼을 클릭합니다. 이 예에서는 알림 채널 구성을 선택하지 않았지만 원하는 대로 선택할 수 있습니다.
이렇게 하면 백그라운드에서 Google Cloud 함수를 만드는 프로세스가 시작됩니다. 몇 분 정도 걸릴 수 있으니 잠시 기다려 주세요.

Cloud 함수가 성공적으로 배포되면 Cloud Monitoring에서 합성 모니터를 호출하는 작업을 시작합니다.
처음에는 아래와 같이 호출이 없습니다.

특정 실행이 있으면 다양한 실행을 볼 수 있습니다. 아래 화면은 테스트가 통과되었음을 보여줍니다.

합성 모니터 이름 (예: s1)을 클릭하면 아래와 같이 다양한 실행이 표시됩니다.

7. 축하합니다.
축하합니다. 샘플 API를 Google Cloud Run에 성공적으로 배포하고 서비스의 기능을 검증하는 합성 모니터링 테스트를 작성했습니다. 이 과정에서 Gemini를 활용하여 테스트 모음의 코드를 생성했습니다.