Cloud Run 완벽 가이드: 서버리스 컨테이너 활용법
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의 활용 범위를 크게 확장함.