AlloyDB를 사용한 바이브 코딩: Antigravity로 0에서 프로덕션까지

1. 소개

바이브 코딩은 프런트엔드 개발 속도와 방식을 혁신했지만 데이터베이스에 도달하면 한계에 부딪히는 경우가 많습니다. 기존에는 개발자가 컨텍스트를 전환하고, 복잡한 SQL 스키마를 작성하고, 연결 풀을 관리하고, 데이터베이스 확장 프로그램을 수동으로 구성해야 했습니다.

이 Codelab에서는 원활한 대화형 데이터베이스 개발 워크플로를 경험합니다. 모델 컨텍스트 프로토콜 (MCP)과 에이전트 IDE를 사용하면 편집기를 숙련된 데이터 엔지니어로 취급하여 간단한 아이디어에서 완전히 연결되고 최적화된 AI 지원 데이터베이스 애플리케이션으로 몇 분 만에 전환할 수 있으며, 작업공간을 벗어나지 않아도 됩니다.

빌드할 항목

이 Codelab에서는 AlloyDB로 지원되는 최신 Next.js 애플리케이션인 AI 미식 가이드를 빌드하고 배포합니다. 애플리케이션은 다음을 지원합니다.

  • 동적 카탈로그 수집: 원시 CSV 파일에서 레스토랑 데이터를 자동으로 가져오고 구조화합니다.
  • 키워드 기반 검색: 전체 텍스트 검색을 사용하여 데이터베이스를 동적으로 쿼리합니다.
  • AI 기반 시맨틱 검색: Agent Platform 임베딩을 사용하여 '분위기' (예: '데이트하기 좋은 아늑한 곳' 또는 '늦은 밤 간단한 식사')를 설명하여 식당을 찾습니다.

e74cb0eb7e17d6da.png

학습할 내용

  • 공개 IP 및 VPC 네트워크 구성으로 Google Cloud AlloyDB 인스턴스를 프로비저닝합니다.
  • 모델 컨텍스트 프로토콜 (MCP) 도구 상자를 사용하여 Antigravity IDE를 AlloyDB에 직접 연결
  • 환경 변수와 보안 SSL 연결을 사용하여 Next.js 프런트엔드를 라이브 데이터베이스에 연결합니다.
  • 텍스트-임베딩-004를 사용하여 벡터 임베딩을 생성하기 위해 데이터베이스 내 Agent Platform 통합을 사용 설정합니다.
  • 코사인 거리 연산자 (<=>)를 사용하여 벡터 유사성 검색을 수행합니다.
  • HNSW 색인 생성 및 테이블 파티셔닝을 사용하여 프로덕션 규모에 맞게 데이터베이스 성능을 최적화합니다(가상 DBA 역할).

필요한 항목

이 Codelab을 완료하려면 다음이 필요합니다.

  • 머신에 설치된 Antigravity Desktop IDE
  • 결제가 사용 설정된 Google Cloud 프로젝트
  • 로컬 머신에 Google Cloud CLI (gcloud) 및 Git이 설치되고 인증되었습니다.
  • 웹브라우저 (Chrome 권장)

이 Codelab은 초보자를 포함한 모든 수준의 개발자를 대상으로 합니다.

2. 시작하기 전에

이 섹션에서는 AI Berlin Gastronomy Guide를 빌드하기 전에 Google Cloud 프로젝트에서 필요한 초기 설정을 안내합니다.

프로젝트 만들기

  1. Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
  2. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요 .

로컬 필수 구성요소 설치

로컬 머신에 다음 도구가 설치되어 있는지 확인합니다.

프로젝트 인증 및 설정

IDE 내에서 직접 모든 명령줄 안내를 실행합니다.

  1. 로컬 머신에서 Antigravity IDE를 엽니다.
  2. Antigravity의 터미널을 열고 프로젝트 저장소를 클론합니다.
git clone https://github.com/mtoscano84/vibe-coding-postgres-mcp.git
  1. 프로젝트 폴더를 엽니다.
  2. 파일 > 폴더 열기 (또는 열기...)로 이동합니다.
  3. 새로 클론된 vibe-coding-postgres-mcp 폴더로 이동하여 선택합니다.
  4. 프로젝트 폴더가 열리면 Antigravity에서 새 통합 터미널을 실행합니다. PROJECT_ID 환경 변수를 설정하고 이를 사용하도록 gcloud CLI를 구성합니다. [YOUR_PROJECT_ID] 를 실제 GCP 프로젝트 ID로 바꿉니다.
export PROJECT_ID=[YOUR_PROJECT_ID]
gcloud config set project $PROJECT_ID
  1. Google Cloud CLI에 로그인합니다.
gcloud auth login
  1. 활성 계정을 확인합니다.
gcloud auth list

필요한 API 사용 설정

Antigravity 터미널에서 다음 명령어를 실행하여 필요한 Google Cloud 서비스를 사용 설정합니다.

gcloud services enable alloydb.googleapis.com \
                       compute.googleapis.com \
                       servicenetworking.googleapis.com \
                       aiplatform.googleapis.com \
                       run.googleapis.com \
                       artifactregistry.googleapis.com \
                       cloudbuild.googleapis.com

3. AlloyDB 인스턴스 만들기

이 섹션에서는 Antigravity 터미널에서 자동화된 스크립트를 실행하여 Google Cloud에 AlloyDB 클러스터와 인스턴스를 프로비저닝합니다.

활성 Antigravity 통합 터미널 (이미 vibe-coding-postgres-mcp 프로젝트 디렉터리 내에 있음)에서 AlloyDB 프로비저닝 스크립트를 실행합니다.

source database/deploy_alloydb.sh --region us-central1 --public-ip

참고: 프로비저닝 프로세스는 약 10~15분 정도 걸립니다.

프로비저닝 스크립트는 다음을 수행합니다.

  • 프로젝트에 없는 경우 default라는 이름의 VPC 네트워크를 만듭니다.
  • AlloyDB용 비공개 서비스 액세스를 설정합니다.
  • 비공개 IP와 공개 IP가 모두 사용 설정된 AlloyDB 클러스터와 기본 인스턴스를 배포합니다.
  • AlloyDB 서비스 에이전트에 필요한 에이전트 플랫폼 권한을 부여합니다.

출력은 다음과 비슷해야 합니다.

----------------------------------------
Deployment Process Completed
Cluster:  alloydb-aip-01 (STANDARD)
Instance: alloydb-aip-01-pr
Region:   us-central1
Private IP: XX.XX.XX.XX
Public IP:  XX.XX.XX.XX
Initial Password: XXXXXXXXXX (if new cluster)
----------------------------------------

다음 세부정보를 복사하여 저장하세요.

  • AlloyDB 비공개 IP: Cloud Run 애플리케이션이 VPC 내에서 안전하게 연결하는 데 사용됩니다.
  • AlloyDB 공개 IP: 로컬 Antigravity IDE에서 직접 연결하는 데 사용됩니다.
  • 데이터베이스 비밀번호: postgres 사용자의 자동 생성된 비밀번호입니다.

4. 프런트엔드 배포

이 섹션에서는 Antigravity 통합 터미널을 사용하여 기준 Next.js 프런트엔드 (상태 0)를 Google Cloud Run에 배포합니다. 이 초기 버전은 모의 데이터를 사용하며 아직 데이터베이스에 연결되지 않습니다.

먼저 Antigravity 터미널에서 다음 명령어를 직접 실행하여 Compute Engine 기본 서비스 계정에 필요한 IAM 역할을 부여합니다.

PROJECT_NUMBER=$(gcloud projects describe $(gcloud config get-value project) --format="value(projectNumber)")
# Grant Storage Object Viewer (to read source code)
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
    --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
    --role="roles/storage.objectViewer"
# Grant Log Writer (to write build logs)
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
    --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
    --role="roles/logging.logWriter"
# Grant Artifact Registry Writer (to push container images)
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
    --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
    --role="roles/artifactregistry.writer"

Antigravity 터미널의 vibe-coding-postgres-mcp 디렉터리 루트에서 다음 명령어를 실행하여 Next.js 애플리케이션을 VPC 네트워크에 컴파일하고 배포합니다.

gcloud run deploy berlin-gastronomy-guide \
  --source frontend/ \
  --network=default \
  --subnet=default \
  --allow-unauthenticated \
  --region=us-central1

배포가 완료되면 서비스 URL이 출력됩니다.

Building using Dockerfile and deploying container to Cloud Run service [berlin-gastronomy-guide] in project [vibe-coding-postgres-mcp] region [us-central1]
Building and deploying...
  Validating configuration...done
  Uploading sources...done
  Building Container... Logs are available at [ https://console.cloud.google.com/cloud-build/builds;region=us-central1/46a6e834-d5e9-4dfd-885e-d39e2790f72d?project=734791203988 ]....done
  Setting IAM Policy...done
  Creating Revision...done
  Routing traffic...done
Done.
Service [berlin-gastronomy-guide] revision [berlin-gastronomy-guide-00002-n6k] has been deployed and is serving 100 percent of traffic.
Service URL: https://berlin-gastronomy-guide-[YOUR_PROJECT_NUMBER].us-central1.run.app

URL을 복사하여 브라우저에서 엽니다.

모의 레스토랑 카드가 표시된 Berlin AI Gastronomy Guide 웹페이지가 표시되는지 확인합니다.

16d3649d19796847.png

5. Antigravity를 Google Cloud에 연결

로컬에서 실행되는 IDE (Antigravity)의 AI 에이전트가 데이터베이스와 상호작용할 수 있도록 공식 Google Cloud AlloyDB MCP 서버가 사용됩니다.

프로비저닝 중에 AlloyDB 인스턴스에서 공개 IP를 사용 설정했으므로 로컬 IDE가 인터넷을 통해 직접 연결할 수 있습니다. 연결은 SSL 및 비밀번호 인증을 사용하여 보호되며 MCP 서버는 로컬 Google Cloud 사용자 인증 정보를 사용하여 연결을 승인합니다.

Antigravity에서 MCP 서버 구성

  1. Antigravity IDE에서 채팅 창의 오른쪽 상단에 있는 점 3개 메뉴 (...)를 클릭합니다.
  2. MCP 서버를 선택한 다음 관리 MCP 서버 (또는 원시 구성 보기 / 구성 파일 수정)를 클릭합니다.
  3. mcpServers 객체 내에 다음 JSON 블록을 추가합니다. [YOUR_PROJECT_ID] 및 [YOUR_ALLOYDB_PASSWORD] 를 실제 프로젝트 ID와 AlloyDB 프로비저닝 단계에서 저장한 데이터베이스 비밀번호로 바꿔야 합니다.
"alloydb-postgres": {
  "command": "npx",
  "args": [
    "-y",
    "@toolbox-sdk/server@latest",
    "--prebuilt",
    "alloydb-postgres",
    "--stdio"
  ],
  "env": {
    "ALLOYDB_POSTGRES_PROJECT": "[YOUR_PROJECT_ID]",
    "ALLOYDB_POSTGRES_REGION": "us-central1",
    "ALLOYDB_POSTGRES_CLUSTER": "alloydb-aip-01",
    "ALLOYDB_POSTGRES_INSTANCE": "alloydb-aip-01-pr",
    "ALLOYDB_POSTGRES_DATABASE": "postgres",
    "ALLOYDB_POSTGRES_USER": "postgres",
    "ALLOYDB_POSTGRES_PASSWORD": "[YOUR_ALLOYDB_PASSWORD]"
  }
}
  1. 구성 파일 저장
  2. IDE에서 MCP 서버가 자동으로 시작됩니다. MCP 패널의 alloydb-postgres 옆에 녹색 점이 표시되어 연결이 성공했음을 나타냅니다.

6. 바이브 코딩: 데이터베이스 수집

이제 Antigravity IDE가 MCP 서버를 통해 AlloyDB 인스턴스에 연결되었으므로 바이브 코딩 환경을 시작할 수 있습니다.

이 단계에서는 AI 에이전트가 베를린의 음식점 카탈로그가 포함된 로컬 CSV 파일을 읽고 AlloyDB 데이터베이스에 로드하도록 지시합니다.

작업

Antigravity에서 에이전트 채팅을 사용합니다. 에이전트는 자율적으로 파일을 읽고, 데이터 유형을 분석하고, 데이터베이스에 연결하고, 테이블을 만들고, 레코드를 삽입합니다.

Antigravity에서 에이전트 채팅 패널을 엽니다 (일반적으로 편집기 오른쪽에 있음).

그런 다음 다음 프롬프트를 복사하여 채팅에 붙여넣고 Enter 키를 누릅니다.

Read the headers of database/seed_data_berlin.csv to determine column data types and create the restaurants table using the MCP tool execute_sql. Then, read the CSV rows locally and insert all 100 records into remote AlloyDB using a single batched multi-row INSERT INTO ... VALUES (...), (...), ...; statement via execute_sql. Do not print the CSV contents, row payloads, or SQL statements to the chat transcript.

인증

상담사는 다음을 수행합니다.

  • CSV 파일 헤더와 일부 샘플 행을 읽어 적절한 스키마를 확인합니다.
  • AlloyDB MCP 도구를 호출하여 테이블 restaurants를 만듭니다.
  • CSV 파일의 레스토랑 레코드 100개를 데이터베이스에 일괄 삽입합니다.

7. 바이브 코딩: 프런트엔드를 데이터베이스에 연결

이 섹션에서는 Next.js 프런트엔드를 실시간 AlloyDB 데이터베이스에 연결합니다. 에이전트에게 모의 데이터를 실시간 데이터베이스 쿼리로 대체하고 키워드 검색을 구현하도록 지시합니다.

작업

에이전트에게 연결 코드를 작성하고 홈페이지를 업데이트하라고 프롬프트합니다. .agents/AGENTS.md에 데이터베이스 SSL 규칙을 커밋했으므로 프롬프트에서 지정하지 않아도 에이전트가 클라우드 연결에 SSL을 사용하도록 연결 풀을 자동으로 구성합니다.

Antigravity Agent 채팅에서 다음 프롬프트를 복사하여 붙여넣고 Enter 키를 누릅니다 ([YOUR_PASSWORD]를 실제 데이터베이스 비밀번호로 대체).

Connect our Next.js frontend to the restaurants table in the database using the pg library. Use a connection pool configured with environment variables: DB_HOST, DB_USER (postgres), DB_PASS (password is '

[YOUR_PASSWORD]

'), and DB_NAME (postgres). Replace the mock data in page.tsx with a live query, and implement keyword search on the name, category, and description. When testing or verifying queries, always use LIMIT 3 and suppress quiet npm/build logs.

에이전트가 작업을 실행하는 것을 관찰합니다.

  • 그러면 pg 패키지와 TypeScript 유형 (@types/pg)이 설치됩니다.
  • 데이터베이스 연결 파일 (또는 Next.js 서버 작업)을 만들고 연결 풀을 구성합니다.
  • AGENTS.md 규칙을 읽고 로컬이 아닌 호스트의 SSL 구성을 자동으로 추가합니다.
  • 데이터베이스를 쿼리하고 검색어를 기반으로 결과를 필터링하도록 page.tsx가 다시 작성됩니다.

인증

변경사항을 테스트하려면 프런트엔드를 Cloud Run에 다시 배포해야 합니다. '클라우드 전용' 흐름을 사용하고 있으므로 새 코드는 다음과 같이 제공됩니다.

Antigravity에서 통합 터미널을 엽니다 (루트 디렉터리에 있는지 확인).

AlloyDB 비공개 IP와 비밀번호를 환경 변수로 전달하여 배포 명령어를 실행합니다 (자리표시자를 실제 값으로 바꿈).

gcloud run deploy berlin-gastronomy-guide \
  --source frontend/ \
  --network=default \
  --subnet=default \
--set-env-vars="DB_HOST=[YOUR_ALLOYDB_PRIVATE_IP],DB_USER=postgres,DB_PASS=[YOUR_PASSWORD],DB_NAME=postgres" \
  --allow-unauthenticated \
  --region=us-central1

배포가 완료되면 브라우저에서 서비스 URL을 엽니다.

'Burgermeister' 또는 'Kebab'을 검색해 보세요. 데이터베이스에서 로드된 실제 음식점이 표시됩니다.

이제 데이터베이스 레코드에 이전에 업로드한 공개 GCS URL이 포함되어 있으므로 레스토랑 카드에 실제 GCS 이미지가 표시됩니다.

8. 바이브 코딩: 시맨틱 검색 사용 설정

이 섹션에서는 AI 기반 시맨틱 벡터 검색을 지원하도록 애플리케이션을 업그레이드합니다. 사용자는 정확한 키워드를 일치시키는 대신 원하는 '분위기'나 경험 (예: '로맨틱한 저녁 식사 장소' 또는 '클럽에 간 후 간단한 식사')을 설명하여 검색할 수 있습니다.

작업

에이전트에게 음식점 테이블에서 시맨틱 검색을 사용 설정하도록 지시합니다. 에이전트는 저장소의 add-vector-search-alloydb 맞춤 기술을 활용하여 데이터베이스 확장 프로그램, Agent Platform 모델 등록, 삽입 생성, 쿼리 업데이트를 자동으로 처리합니다.

Antigravity Agent 채팅에서 다음 프롬프트를 복사하여 붙여넣고 Enter 키를 누릅니다.

Upgrade our database to support Semantic Vector Search on the restaurants table based on the description column. Then, update our frontend search query to use vector similarity search. Execute embedding generation quietly without printing embedding vectors or SQL progress logs to chat.

에이전트가 작업을 실행하는 것을 관찰합니다.

  • AlloyDB에 연결하고 vector (pgvector) 및 google_ml_integration 확장 프로그램을 사용 설정합니다.
  • 데이터베이스 내에 Agent Platform 임베딩 모델 (text-embedding-004)이 등록됩니다.
  • 그러면 음식점 테이블에 새 임베딩 열이 추가됩니다.
  • 데이터베이스 내 쿼리를 실행하여 100개의 레스토랑 설명에 대한 임베딩을 생성합니다.
  • 사용자의 검색어에 대한 임베딩을 생성하고 코사인 거리 연산자 (<=>)를 사용하여 벡터 유사성 검색을 실행하도록 프런트엔드 코드를 업데이트합니다.

인증

업데이트된 코드를 Cloud Run에 다시 배포합니다.

Antigravity 통합 터미널에서 배포 명령어를 실행합니다 (자리표시자를 실제 값으로 바꿈).

gcloud run deploy berlin-gastronomy-guide \
  --source frontend/ \
  --network=default \
  --subnet=default \
--set-env-vars="DB_HOST=[YOUR_ALLOYDB_PRIVATE_IP],DB_USER=postgres,DB_PASS=[YOUR_PASSWORD],DB_NAME=postgres" \
  --allow-unauthenticated \
  --region=us-central1

배포가 완료되면 브라우저에서 서비스 URL을 엽니다.

다음과 같은 자연어 설명을 입력하여 시맨틱 검색을 테스트합니다.

  • '로맨틱한 저녁 식사 장소'
  • '클럽에 간 후 간단한 식사'

이름이나 설명에 정확히 '로맨틱'이나 '클럽'이라는 단어가 없어도 매우 관련성이 높은 레스토랑 (예: Cafe Clärchens 또는 Burgermeister)이 반환됩니다.

9. 바이브 코딩: 데이터베이스 최적화

애플리케이션이 성장함에 따라 대량의 데이터 (10만 개 이상의 행)와 높은 동시 검색 트래픽을 처리하도록 데이터베이스를 최적화해야 합니다. 이 마지막 단계에서는 에이전트를 가상 데이터베이스 관리자 (DBA)로 취급하여 데이터베이스 스키마를 분석하고 최적화합니다.

작업

에이전트에게 수석 데이터베이스 설계사 역할을 맡아 현재 스키마를 분석하고 최적화를 추천해 달라고 요청합니다. 추천을 검토하고 승인하면 에이전트가 optimize-database-alloydb 맞춤 기술을 사용하여 자동으로 적용합니다.

Act as my Principal Database Architect! Our semantic search is feeling great, but let's level up our backend to effortlessly scale to 100K+ rows and handle high concurrent traffic. Inspect our restaurants schema quietly, and work your magic by immediately applying your top 2 production optimizations—an HNSW vector index and list partitioning by neighborhood—right now in this turn. No need to wait for approval! Keep the SQL logs clean and hit me with a crisp 3-bullet summary of how we just supercharged our database.

인증

에이전트가 데이터베이스 스키마를 자율적으로 분석하고 다음과 같은 두 가지 중요한 프로덕션 최적화를 적용합니다.

  • HNSW (Hierarchical Navigable Small World) 색인: 전체 테이블을 스캔하지 않고 벡터 유사성 검색 속도를 크게 높입니다.
  • 선언적 목록 파티셔닝: 효율적인 확장 및 유지관리를 위해 식당 테이블을 동네별로 파티셔닝합니다.

마지막으로 이러한 프로덕션 업그레이드의 아키텍처 이점을 설명하는 간결한 3개 항목 요약이 제공됩니다.

10. 챌린지: 리뷰 및 평점 추가

이제 Vibe Coding 기술을 테스트해 볼 차례입니다. 이 챌린지에서는 고객 리뷰와 별점 지원을 위해 Berlin Gastronomy Guide를 확장합니다.

작업

복사하여 붙여넣기 프롬프트를 따르는 대신 Antigravity 에이전트 채팅에서 자체 프롬프트를 작성하여 다음 기능을 구현하세요.

  1. 데이터베이스 스키마: restaurants 테이블에 연결된 새 reviews 테이블을 만듭니다. 평점 (1~5 사이의 정수)과 짧은 텍스트 댓글을 저장해야 합니다.
  2. 데이터 생성: 데이터베이스에 있는 100개의 레스토랑 각각에 대해 3~4개의 실제 고객 리뷰를 생성합니다.
  3. 프런트엔드 통합: 각 레스토랑 카드에 평균 별점 (예: ⭐⭐⭐⭐☆)을 계산하여 표시하도록 Next.js 프런트엔드를 업데이트합니다.
  4. 필터링: 페이지 상단에 드롭다운 필터를 추가하여 평점별로 음식점을 필터링합니다 (예: '모두 표시', '별 4개 이상', '별 3개 이상').

인증

에이전트가 작업을 완료하면 애플리케이션을 Cloud Run에 다시 배포합니다 (자리표시자를 실제 값으로 바꿈).

gcloud run deploy berlin-gastronomy-guide \
  --source frontend/ \
  --network=default \
  --subnet=default \
--set-env-vars="DB_HOST=[YOUR_ALLOYDB_PRIVATE_IP],DB_USER=postgres,DB_PASS=[YOUR_PASSWORD],DB_NAME=postgres" \
  --allow-unauthenticated \
  --region=us-central1

배포가 완료되면 브라우저를 새로고침하고 카드에 별점이 표시되는지 확인합니다.

1433b3c589f08f2a.png.

11. 결과

단계를 완료하면 Vibe Coding을 사용하여 차세대 데이터베이스 지원 AI 애플리케이션을 성공적으로 빌드하고 최적화한 것입니다. 이 섹션에서는 구현한 핵심 아키텍처 기능을 강조합니다.

에이전트 데이터베이스 통합 (모델 컨텍스트 프로토콜)

기존에는 데이터베이스 코드를 작성할 때 IDE, 문서, 데이터베이스 클라이언트 간에 컨텍스트를 전환하는 수동 프로세스가 필요했습니다.

이 실습에서는 모델 컨텍스트 프로토콜 (MCP) Toolbox를 사용하여 이 격차를 해소했습니다. 데이터베이스 스키마 검사 및 SQL 실행을 AI 에이전트에 직접 도구로 노출함으로써 에이전트는 다음 작업을 할 수 있었습니다.

  • 원시 CSV 데이터를 검사하고 데이터베이스 스키마를 설계합니다.
  • DDL을 생성하고 실행하여 테이블을 만듭니다.
  • Next.js 애플리케이션에서 연결 풀을 연결합니다.

이를 통해 MCP가 데이터베이스 개발을 대화형 고속 환경으로 만들면서도 개발자가 IDE 내에서 완전히 제어할 수 있도록 지원하는 방법을 확인할 수 있습니다.

인 데이터베이스 AI (에이전트 플랫폼 및 시맨틱 검색)

애플리케이션은 Google Cloud의 Agent Platform과의 AlloyDB 기본 통합을 활용하여 SQL을 사용하여 데이터베이스 내에서 직접 벡터 임베딩을 생성합니다.

  • 온라인 임베딩 생성: 외부 Python 서비스로 데이터를 가져오는 대신 AlloyDB는 SQL 함수를 통해 데이터베이스 내에서 text-embedding-004 모델을 호출합니다.
  • 시맨틱 벡터 검색: pgvector 확장 프로그램과 코사인 거리 연산자 (<=>)를 사용하여 에이전트는 사용자의 자연어 '분위기' (예: '로맨틱한 저녁 식사')를 레스토랑 카탈로그의 가장 가까운 벡터 표현과 일치시켜 의미상 관련성이 있는 결과를 밀리초 단위로 반환할 수 있습니다.

프로덕션 등급 데이터베이스 최적화 (HNSW 및 파티셔닝)

애플리케이션이 10만 개 이상의 행으로 확장되고 트래픽이 많은 경우를 처리할 수 있도록 가상 DBA 역할을 하여 다음과 같은 두 가지 고급 데이터베이스 최적화를 적용했습니다.

  • HNSW (Hierarchical Navigable Small World) 색인: 벡터 열에 HNSW 색인을 만들었습니다. 플랫 색인과 달리 HNSW는 재현율이 높은 매우 빠른 근사 최근접 이웃 (ANN) 검색을 지원하는 다층 그래프를 빌드합니다.
  • 선언적 테이블 파티셔닝: 식당 테이블을 동네별로 파티셔닝했습니다. 이렇게 하면 특정 영역을 타겟팅하는 쿼리가 전체 테이블이 아닌 관련 파티션만 스캔하므로 디스크 I/O와 쿼리 지연 시간이 크게 줄어듭니다.

애플리케이션 개발자는 전문 DBA 전문 지식이 필요하기 때문에 복잡한 데이터베이스 구성, 벡터 수학, 심층 색인 전략을 피하는 경우가 많습니다. 에이전트형 IDE에서 바이브 코딩을 활용하면 이 격차를 해소할 수 있습니다. 이제 자연어를 사용하여 프로덕션 등급 데이터베이스 애플리케이션을 자신 있게 설계, 빌드, 최적화할 수 있으므로 개발 주기를 크게 단축하고 가장 중요한 요소인 멋진 사용자 환경을 구축하는 데 집중할 수 있습니다.

12. 삭제

이 실습에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 '삭제'를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

13. 축하합니다

바이브 코딩을 사용하여 데이터 기반의 AI 기반 애플리케이션을 성공적으로 빌드하고 배포했습니다.

이 실습에서 학습할 내용은 다음과 같습니다.

  • 비공개 및 공개 IP 액세스가 모두 있는 AlloyDB 데이터베이스를 프로비저닝했습니다.
  • 모델 컨텍스트 프로토콜 (MCP) 도구 상자를 사용하여 Antigravity IDE를 데이터베이스에 직접 연결했습니다.
  • 자연어를 사용하여 CSV 카탈로그를 수집하고, Next.js 프런트엔드를 데이터베이스에 연결하고, Cloud Run에 배포했습니다.
  • 벡터 임베딩을 생성하고 시맨틱 검색을 실행하기 위해 데이터베이스 내 Agent Platform 통합을 사용 설정했습니다.
  • HNSW 색인 생성 및 테이블 파티셔닝을 사용하여 프로덕션 규모에 맞게 데이터베이스를 최적화하는 가상 DBA 역할을 했습니다.

이 모든 작업은 AI 에이전트와의 자연스러운 대화를 통해 이루어졌으며, 수동 SQL을 한 줄도 작성하거나 외부 데이터베이스 클라이언트를 열지 않았습니다.

자세한 내용은 제품 문서를 참고하세요.