1. Cloud Run 이란
Google Cloud
에서 제공하는 Serverless 서비스 중 하나이다.
구글에서 제공하는 Serverless 서비스는 Cloud Functions
과 Cloud Run
이 있는데, 전자는 이름에서도 알 수 있듯이 코드를 서비스 해주는 Faas 이다. 반대로 Cloud Run
은 컨테이너를 배포할 수 있는 플랫폼이다.
이런 서버리스 서비스들은 필요 시(요청이 들어올 시) 에만 코드를 실행하여 사용한 리소스만큼만 비용이 발생하고, 트래픽에 따라 자동적으로 스케일링이 되는 등 서버 관리가 필요 없다는 장점이 있다.
2. 이미지 빌드 및 배포하기
Cloud Run을 이용해 컨테이너를 구동하기 위해서는 먼저 GCR(Google Cloud Registiry)
에 이미지를 배포해야 한다.
먼저 Dockerfile
을 작성해 준다.
FROM node:12-slim
WORKDIR /app
COPY ./package.json /app
RUN npm install
COPY . .
RUN npm run build
CMD ["npm", "start"]
여기서는 gcloud CLI
를 이용해서 GCR에 배포했다.
gcloud builds submit --tag [HOST]/[PROJECT_ID]/[IMAGE_NAME]
여기서 HOST
는 다음과 같다.
- gcr.io는 이미지를 미국의 데이터 센터에서 호스팅하지만 나중에 위치가 변경될 수 있습니다.
- us.gcr.io는 이미지를 미국의 데이터 센터에서, gcr.io에서 호스팅하는 이미지와 별도의 스토리지 버킷에 호스팅합니다.
- eu.gcr.io는 유럽 연합 내 이미지를 호스팅합니다.
- asia.gcr.io는 이미지를 아시아의 데이터 센터에서 호스팅합니다.
PROJECT_ID
는 GCP 프로젝트 ID 이다.
이제 이미지 빌드 후 Cloud Registiry
에 올라간 것을 볼 수 있다.
3. Cloud Run에 배포하기
마찬가지로 gcloud CLI
를 이용해서 진행하였다.
2에서 진행한 이미지를 이용하여 배포한다.
gcloud run deploy --image [HOST]/[PROJECT_ID]/[IMAGE_NAME]
서비스 입력을 입력하고 리전을 선택한 뒤, 인증되지 않은 호출 허용 한 뒤 기다리면 배포가 완료된다. 성공 시 해당 서비스를 호출할 수 있는 URL을 확인할 수 있다.