2026 카카오×관광데이터 공모전에 참가하면서 처음으로 GCP를 직접 운영 환경에 도입하게 되었다.
(AWS가 아닌 GCP를 쓴 이유는 프리티어 계정이 없었기 때문이다..)
Spring Boot로 만든 API를 어디에 배포할지 고민하다가 Google Cloud Platform의 여러 서비스를 검토했고, 최종적으로 Cloud Run을 선택했다.
GCP에서 애플리케이션을 배포하는 방식은 여러 가지가 있다. 대표적으로는:
Compute Engine은 GCP에서 가장 전통적인 방식으로, Ubuntu 같은 OS가 설치된 VM을 빌려서 직접 운영한다.
AWS의 EC2와 같은 역할을 한다.
Internet
↓
Compute Engine
↓
Spring Boot
↓
Cloud SQL

Cloud Run은 요청 또는 이벤트를 통해 호출 가능한 컨테이너를 실행할 수 있는 완전 관리형 애플리케이션 플랫폼이다.
Google Cloud 에서는 대표적으로 Cloud Functions 와 Cloud Run 이라는 2가지 Serverless 서비스를 제공하고 있다.
Cloud Run은, Docker 컨테이너를 올리면 Google이 실행 환경을 전부 관리한다!
Internet
↓
Cloud Run (컨테이너 실행)
↓
Spring Boot (Docker 이미지)
↓
Cloud SQL

Cloud Run은 리버스 프록시, SSL, 로드밸런싱 기능까지 제공하지만, 커스텀 도메인을 붙이기 위해서는 Cloud Load Balancer를 따로 만들어야 했다. 그런데, 여기서 두가지 비용이 발생한다.
대신 Firebase Hosting을 프록시로 사용하기로 결정했다.
Internet (dev-api.moodi.kr)
↓
Firebase Hosting (무료)
↓ (rewrite 설정)
Cloud Run
Firebase Hosting의 장점:
firebase.json 설정은 간단하다:
json
{
"hosting": {
"rewrites": [
{
"source": "/**",
"run": {
"serviceId": "moodi-api",
"region": "asia-northeast1"
}
}
]
}
}
이 한 줄로 모든 HTTP/HTTPS 요청이 Cloud Run으로 가고, SSL도 자동으로 관리된다.
참고: https://docs.cloud.google.com/run/docs/overview/what-is-cloud-run?hl=ko