콘텐츠로 이동

Cloud Run 실무 가이드

Cloud Run은 컨테이너 이미지를 그대로 실행하는 완전관리형 서버리스 플랫폼입니다. 인프라 관리 없이 HTTP 요청/이벤트 기반 워크로드를 초 단위 과금으로 운영할 수 있어, 데모·PoC부터 프로덕션 API까지 가장 먼저 검토하는 컴퓨팅 옵션입니다.

개념설명
ServiceHTTP 요청을 처리하는 상시 엔드포인트. 리비전 단위로 배포/롤백
Job완료 후 종료되는 배치성 작업 (스케줄 실행은 Cloud Scheduler 연동)
Revision배포 시마다 생성되는 불변 스냅샷. 트래픽 분할(카나리) 가능
Concurrency인스턴스 1개가 동시에 처리할 요청 수 (기본 80, 최대 1000)
Terminal window
# 소스에서 바로 배포 (Cloud Build 자동 사용)
gcloud run deploy my-service \
--source . \
--region asia-northeast3 \
--allow-unauthenticated
# 컨테이너 이미지로 배포
gcloud run deploy my-service \
--image asia-northeast3-docker.pkg.dev/PROJECT/repo/app:v1 \
--region asia-northeast3

Cloud Run은 트래픽이 없으면 인스턴스를 0으로 줄입니다. 첫 요청 시 컨테이너 기동 시간만큼 지연이 발생합니다.

  1. min-instances 설정 — 가장 확실한 방법. 유휴 인스턴스 비용 발생
    Terminal window
    gcloud run services update my-service --min-instances 1
  2. 경량 이미지 — distroless/slim 베이스, 멀티스테이지 빌드로 이미지 축소
  3. Startup CPU Boost — 기동 시 CPU를 일시적으로 추가 할당
  4. 지연 초기화 회피 — 앱 기동 시점에 무거운 초기화(모델 로드 등)를 하지 않도록 설계

데모 환경은 비용 절감을 위해 min-instances 0으로 운영하는 경우가 많습니다. 이 경우 첫 접속 시 1~2분 정도 로딩이 걸릴 수 있음을 사용자에게 안내하는 것이 좋습니다.

  • CPU always allocated vs request-based: 백그라운드 작업이 없다면 요청 기반 과금이 저렴
  • Concurrency 조정: I/O 바운드 앱은 동시성을 높여 인스턴스 수 절감
  • max-instances 상한: 트래픽 급증 시 비용 폭주 방지
  • 리전 선택: 서울(asia-northeast3) 기준으로 지연시간과 비용 균형 검토
  • 서비스 계정 최소 권한 (기본 Compute SA 사용 금지)
  • Secret Manager로 민감정보 주입 (환경변수 하드코딩 금지)
  • Cloud Armor + LB 연동 (외부 공개 서비스)
  • 구조화 로깅 (JSON) → Cloud Logging 자동 수집
  • 리비전 트래픽 분할로 카나리 배포