Cloud Run 완벽 가이드: 서버리스 컨테이너 활용법

by DD
2일 전
조회수 8

Cloud Run은 인프라 관리 없이 컨테이너를 온디맨드 실행하는 구글 클라우드의 서버리스 엔진임

최소 인스턴스(Minimum Instances) 설정으로 콜드 스타트 지연 시간 제거 및 최대 인스턴스(Maximum Instances)로 예산 보호 가능

gcloud run deploy는 소스 코드 업로드, 빌드, 저장, 새 리비전 생성 및 트래픽 마이그레이션 자동화함

서비스, 잡, 워커 풀, 함수 등 다양한 리소스 타입을 지원하여 웹 앱, API, 배치 작업 등 활용 가능

불변 리비전(Immutable Revisions) 기반의 제로 다운타임 업데이트 및 미리보기 링크(Preview Links)로 안정적인 롤아웃 지원

Cloud Run 리소스 타입별 아키텍처 패턴

Cloud Run은 다양한 워크로드에 맞춰 서비스(Services), 잡(Jobs), 워커 풀(Worker Pools), 함수(Functions) 등 네 가지 주요 리소스 타입을 제공함.

서비스: 웹 애플리케이션, API, 마이크로서비스에 최적화되어 있으며, 트래픽 기반 자동 스케일링, HTTPS, 트래픽 분할, 웹소켓, gRPC, HTTP/2 지원.

: 데이터 처리, DB 마이그레이션, 배치 스크립트 등 완료 기반 작업에 적합하며 최대 7일간 실행 가능하고 병렬 처리 지원.

워커 풀: 메시지 큐 수신 등 지속적인 백그라운드 작업에 사용되며, 항상 실행되는 인스턴스가 작업을 풀링하고 수동 스케일링 관리.

함수: 단일 목적 코드 실행에 이상적이며, Python, Node.js, Go, Java 등 인기 런타임을 지원하고 컨테이너 빌드 자동화.

각 리소스 타입은 특정 사용 사례에 맞춰 설계되어 있어, 워크로드 특성에 맞는 최적의 리소스 선택이 중요함.

gcloud run deploy의 내부 동작 원리

소스 코드로 Cloud Run 서비스를 배포할 때 `gcloud run deploy` 명령어는 여러 단계를 자동화함.

1. 업로드: 로컬 디렉토리가 안전한 Google Cloud Storage(GCS) 버킷으로 업로드됨.

2. 빌드: Dockerfile이 있으면 `docker build`를 실행하고, 없으면 오픈소스 빌드팩(Buildpacks)을 사용하여 언어를 감지하고 컨테이너 이미지를 자동으로 컴파일함.

3. 저장: 빌드된 컨테이너 이미지는 Artifact Registry에 푸시됨.

4. 생성: Cloud Run은 설정과 함께 읽기 전용의 불변하는 새 리비전(Revision)을 생성함.

5. 마이그레이션: 새 리비전이 시작 프로브(Startup Probe)를 통과하면, Cloud Run은 100%의 트래픽을 새로운 리비전으로 원활하게 마이그레이션함.

이 과정은 개발자가 인프라 관리 부담 없이 빌드 및 배포 파이프라인을 간소화할 수 있도록 지원함.

안정적인 롤아웃 및 미리보기 링크 활용

Cloud Run은 불변 리비전(Immutable Revisions)을 기반으로 제로 다운타임 업데이트(Zero-Downtime Updates)를 보장함. 새 버전이 완전히 스케일업된 후 트래픽이 이전됨으로써 서비스 중단을 방지함.

롤백: 프로덕션 환경에서 버그 발생 시, 이전의 안정적인 리비전으로 트래픽을 즉시 롤백할 수 있음.

미리보기 링크(Preview Links): 프로덕션 트래픽을 새 버전에 자동으로 배포하는 대신, 트래픽 태그(Traffic Tag)를 사용하여 테스트 리비전에 대한 비공개 미리보기 URL을 생성함. 이를 통해 실제 사용자에게 영향을 주기 전에 변경 사항을 안전하게 테스트할 수 있음.

이 기능들은 안정성과 신뢰성을 높여 배포 프로세스의 위험을 크게 줄여줌.

Cloud Run 네트워킹 및 보안 옵션

Cloud Run은 VPC 네트워킹을 통해 직접 VPC 이그레스(Direct VPC Egress)를 지원하여, 별도의 Serverless VPC Access 커넥터 없이 내부 Google Cloud VPC 네트워크로 아웃바운드 트래픽을 보낼 수 있음.

보안 강화를 위해 두 가지 옵션이 제공됨:

1. IAM 인증: 프론트엔드 서비스 계정에 `run.invoker` 역할을 부여하여 인증을 요구하고 접근 제어.

2. VPC 라우팅: 백엔드가 VPC 네트워크에서 발생하는 트래픽만 수락하도록 구성하여 내부 리소스에 대한 안전한 접근 보장.

이러한 네트워킹 및 보안 기능은 민감한 데이터나 내부 서비스에 접근하는 애플리케이션을 Cloud Run에서 안전하게 실행할 수 있도록 지원함.

Cloud Run 가격 모델 비교 및 최적화

Cloud Run은 두 가지 가격 모델을 제공하여 비용 최적화를 지원함.

요청 기반 가격(Request-based pricing - 기본): 컨테이너 인스턴스 시간(CPU, 메모리)에 따라 과금되며, 유휴 인스턴스에는 비용이 부과되지 않음(CPU 속도 저하). 요청당 요금이 발생하며, 최소 인스턴스 사용 시 유휴 상태에서도 할인된 요금이 적용됨.

인스턴스 기반 가격(Instance-based pricing): 유휴 상태에서도 컨테이너 인스턴스 시간(CPU, 메모리)에 따라 전체 요금이 부과됨. 유휴 인스턴스는 최대 15분 후 종료되며, 요청당 요금은 없음. 요청 기반 대비 인스턴스 시간당 비용이 저렴함.

Cloud Run은 트래픽 패턴을 분석하여 비용 절감에 유리한 모델로 자동 전환을 추천함. 스케일 투 제로(Scale-to-zero) 기능은 유휴 시 비용을 최소화하는 데 기여함.

GPU 지원 및 ADK 에이전트 배포

Cloud Run은 스케일 투 제로 GPU(Scale-to-zero GPUs)를 완벽하게 지원하며, NVIDIA L4 및 RTX PRO 6000 Blackwell 칩에 접근 가능함.

이는 Cloud Run 잡(Jobs)을 통한 모델 미세 조정(Fine-tuning)이나 Google의 Gemma와 같은 경량 오픈소스 모델 호스팅에 활용될 수 있음.

또한, ADK 에이전트(ADK Agent) 배포를 지원하여 Gemini Enterprise Agent Platform과 같은 고급 AI 애플리케이션을 서버리스 환경에서 구축하고 운영할 수 있음.

GPU 지원과 ADK 에이전트 배포 기능은 머신러닝 모델 서빙 및 AI 기반 애플리케이션 개발에 있어 Cloud Run의 활용 범위를 크게 확장함.

The Ultimate Cloud Run Guide 2026