GCP 환경에서 Node.js 서비스 배포 실전 가이드

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 런타임 버전이 일치하는지 반드시 확인해야 한다.

태그: Google Cloud Platform Node.js App Engine Cloud Run gcloud CLI

6월 29일 04:21에 게시됨