[Cloud Run] Deploy Your Website on Cloud Run

yejin·2026년 4월 21일

Google Skills

목록 보기
18/46

Course

Build a Website on Google Cloud

Lab

목록

  • Deploy Your Website on Cloud Run ⬅️ 오늘의 Lab!
  • Hosting a Web App on Google Cloud using Compute Engine (video)
  • Host a Web App on Google Cloud Using Compute Engine
  • Deploy, Scale, and Update Your Website on Google Kubernetes Engine
  • Migrating a Monolithic Website to Microservices on Google Kubernetes Engine
  • Case Study: Hosting Scalable web apps on Google Cloud
  • Build a Website on Google Cloud: Challenge Lab

🌠 Deploy Your Website on Cloud Run

개요

Cloud Build를 사용하여 Docker 이미지를 빌드하고, Artifact Registry에 업로드하고, Cloud Run에 Docker 이미지를 배포를 해보자! 그리고 Cloud Run의 애플리케이션에 대한 엔드포인트를 설정해보자.

실습 과정

1. 소스 저장소 Clone

참고✨

기존 웹사이트를 배포하는 실습이기 때문에, 소스는 Clone 하기만 하고 Docker 이미지를 만들고 Cloud Run에 배포하는 과정을 중점으로 진행

(1) 저장소 Clone 후 디렉터리 이동

git clone https://github.com/googlecodelabs/monolith-to-microservices.git
cd ~/monolith-to-microservices

(2) Node.js Dependency 설치

./setup.sh

➡️ 배포하기 전에 애플리케이션을 테스트 하기 위해서 실행

(3) 애플리케이션 실행

cd ~/monolith-to-microservices/monolith
npm start

(4) 웹 미리보기

참고

Cloud Shell에서 Ctrl + C를 누르면 웹 서버 프로세스가 중지된다.


2. Cloud Build로 Docker 컨테이너 만들기

(1) Docker 저장소 생성

과정

  1. 검색창에 Artifact Registry 입력 후 클릭
  2. Create repository 클릭
  3. Name: monolith-demo 입력
  4. Format: Docker 선택
  5. Region: 실습용 계정에 맞는 Region 선택
  6. 하단의 Create 버튼 클릭

(2) Google Cloud CLI 인증 구성

#Region에는 실습용으로 발급받은 Region을 입력해야 한다.
gcloud auth configure-docker Region-docker.pkg.dev

왜 하는거지?

이미지를 푸시하거나 가져오려면 Docker가 Artifact Registry에 대한 요청을 인증하는 데 Google Cloud CLI를 사용하도록 구성해야 하기 때문이다.


3. 이미지 배포

(1) API 사용 설정

# Dockerfile이 있는 ~/monolith-to-microservices/monolith에서 실행 
gcloud services enable artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    run.googleapis.com

➡️ Cloud Build, Artifact Registry, Cloud Run API 사용 설정

(2) Build 하기

#Region에는 2-2에서 사용했던 Region과 동일하다.
gcloud builds submit --tag Region-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:1.0.0

(3) Build 확인


➡️ Cloud Build > History에서 빌드된 모든 목록을 볼 수 있다.
➡️ 빌드 세부정보 페이지 > 실행 세부정보 탭 > 이미지 링크 > 생성된 컨테이너 이미지 확인 가능


4. Cloud Run에 컨테이너 배포

참고✨

Cloud Run에 배포하는 방법에는 두 가지가 있다.
1. 관리형 Cloud Run: 모든 컨테이너 수명 주기가 Cloud Run 제품 자체에 의해 관리되는 Platform as a Service이다. ⬅️ 이 방식으로 실습 진행!
2. GKE의 Cloud Run: 제어 계층이 추가된 Cloud Run으로, GKE에서 자체 클러스터와 포드를 가져올 수 있다.

(1) Cloud Run에 배포

# Region 수정 필요
gcloud run deploy monolith --image Region-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:1.0.0 --region Region

➡️ [monolith]에 대한 인증되지 않은 호출을 허용할지 묻는 메시지는 'Y' 선택

(2) 배포 확인

gcloud run services list

➡️ 배포를 비롯하여 배포한 사용자 정보, 앱에 액세스 시 사용할 수 있는 URL 등 정보 제공

(3) 웹사이트 접속


➡️ URL 주소로 접속 시, 로컬에서 미리 본 것과 동일한 웹사이트 표시!


5. 동시 실행 값이 더 적은 새 버전 만들기

참고✨

동시 실행 수란, 각 컨테이너 인스턴스가 한 번에 최대 요청 처리 가능한 개수이다. 이는 하나의 인스턴스가 한 번에 하나의 요청을 처리하는 Functions as a Service 모델과는 크게 다른 방식이다.

(1) 동시 실행값 1인 컨테이너 이미지 재배포

gcloud run deploy monolith --image Region-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:1.0.0 --region Region --concurrency 1

➡️ --concurrency 옵션을 사용하여 한 번에 하나의 작업만 수행(순차 처리)하도록 제한

(2) 배포 확인


➡️ Cloud Run > Services > monolith > 최근 배포의 수정 버전 클릭 > 동시 실행 값(Concurrency)이 1 로 감소했음을 알 수 있다.

(3) 재배포 하지 않고, 동시 실행 값 변경

# Region 수정 필요
gcloud run deploy monolith --image Region-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:1.0.0 --region Region --concurrency 80

➡️ 동시 실행 값을 1 -> 80 으로 변경


6. 웹사이트에 변경사항 적용

문제상황📝

  • 시나리오: 마케팅팀에서 사이트의 홈페이지를 변경해 달라고 요청했습니다. 마케팅팀은 홈페이지에서 어떤 회사이며 무엇을 판매하는지에 대해 더 많은 정보를 제공해야 한다고 생각합니다.
  • 작업: 마케팅팀이 만족할 수 있도록 홈페이지에 텍스트를 추가합니다. 개발자 한 명이 이미 index.js.new라는 파일 이름에 변경사항을 작성했습니다. 이 파일을 index.js에 복사하기만 하면 변경사항이 적용됩니다. 아래 안내를 따라 적절하게 변경하세요.

(1) 업데이트된 파일을 복사

cd ~/monolith-to-microservices/react-app/src/pages/Home
mv index.js.new index.js

(2) 변경사항 확인

cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js

(3) React 빌드

cd ~/monolith-to-microservices/react-app
npm run build:monolith

➡️ React 앱 빌드 후, monolith 공개 디렉터리에 복사하여 기존의 거대한 Monolith(모놀리스) 구조를 배포 가능한 상태로 묶는다.

(4) 업데이트된 이미지 버전 2.0.0으로 새로 Build

# Region 수정 필요
cd ~/monolith-to-microservices/monolith
gcloud builds submit --tag Region-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:2.0.0

7. 다운타임 없이 웹사이트 업데이트

(1) 서비스 재배포 및 이미지 업데이트

# Region 수정 필요
gcloud run deploy monolith --image Region-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:2.0.0 --region Region

참고

  • Cloud Run은 각 배포를 새로운 버전으로 취급하고, 이 버전은 먼저 온라인 상태가 된 다음 트래픽이 리디렉션 된다.
  • 기본적으로 최신 버전에는 서비스의 인바운드 트래픽이 100% 할당된다.
  • '경로'를 사용하여 서비스 내의 여러 버전에 서로 다른 비율의 트래픽을 할당 가능하다.

(2) 배포 확인

# Region 수정 필요
gcloud run services describe monolith --platform managed --region Region

➡️ 이미지가 2.0.0 버전임을 확인할 수 있다.

(3) 서비스 목록 확인

gcloud beta run services list

(4) 웹사이트 확인


➡️ URL을 클릭하여 배포된 웹사이트를 띄운 후, 내용이 수정되었는지 확인

profile
새싹 개발자

0개의 댓글