Google Cloud Platform(GCP)은 Node.js 기반 서비스를 운영할 수 있는 다양한 플랫폼을 제공한다. 이 문서에서는 샘플 프로젝트를 활용해 실제 운영 환경에 서비스를 올리는 과정을 살펴본다.
배포 대상 플랫폼 비교
Node.js 애플리케이션을 GCP에서 구동할 때 고려할 수 있는 주요 옵션은 다음과 같다.
- App Engine: 완전 관리형 플랫폼, 트래픽 자동 분배
- Cloud Run: 컨테이너 기반, 이트 기반 확장
- Compute Engine: VM 직접 관리, 세부 설정 가능
실습 환경 구성
먼저 로컬 머신에 필요한 도구를 설치하고 인증 정보를 설정한다.
# Google Cloud CLI 설치 후 로그인
gcloud auth login
gcloud config set project [YOUR_PROJECT_ID]
샘플 저장소를 내려받아 구조를 확인한다.
git clone https://gitcode.com/gh_mirrors/no/nodejs-getting-started
cd nodejs-getting-started
애플리케이션 로컬 검증
예제 디렉터리 중 bookshelf를 선택해 의존성을 설치하고 동작을 확인한다.
cd bookshelf
npm ci
npm run start
브라우저에서 http://localhost:8080로 접속해 정상 작동 여부를 확인한 뒤, 단위 테스트를 수행한다.
npm run test
App Engine 표준 환경 배포
app.yaml 설정 파일을 기반으로 다음 명령어를 실행한다.
gcloud app deploy app.yaml --version=v1
배포가 완료되면 gcloud app browse 명령어로 생성된 엔드포인트를 바로 확인할 수 있다.
Cloud Run 컨테이너 배포
Dockerfile이 준비된 경우 Cloud Run으로의 배포 과정은 다음과 같다.
# Artifact Registry에 이미지 드 및 푸시
gcloud builds submit --tag gcr.io/[PROJECT_ID]/node-app
# Cloud Run 서비스 생성
gcloud run deploy node-service \
--image gcr.io/[PROJECT_ID]/node-app \
--platform managed \
--region asia-northeast3 \
--allow-unauthenticated
문제 진단 접근법
| 증상 | 확인 방법 |
|---|---|
| 배포 후 500 오류 | gcloud app logs tail로 스택 트레이스 확인 |
| 권한 거부 | IAM 역할 roles/appengine.deployer 부여 여부 점검 |
| 빌드 실패 | Cloud Build 히스토리에서 상세 로그 확인 |
추가 구성 패턴
프로젝트 내 다른 디렉터리를 탐색하면 다음 기능을 구현한 예제를 찾을 수 있다.
authenticating-users: OAuth 2.0 연동 인증 흐름background: Cloud Tasks와 연계한 비동기 작업 큐gce: 사용자 정의 VM 이미지로의 직접 배포
각 예제의 package.json에 명시된 엔진 버전과 현재 GCP 환경의 Node.js 런타임 버전이 일치하는지 반드시 확인해야 한다.