☄️ GCP & Firebase 설정

Bori·2022년 8월 1일
4

Full Stack Web Study

목록 보기
1/2
post-thumbnail
  • Firebase와 Google Cloud Platform 으로 백엔드 구축 : Firebase와 Google Cloud 함께 사용하기
  • Firebase : GCP의 서버리스(라이브러리 모음집 & 프레임워크)
    ⇒ 예시) Firebase Authentication : GCP Identity Platform을 직접 쓰는 것은 복잡하므로 사용하기 쉽게 만들어짐

🪐 Firebase

  • 앱/웹 애플리케이션을 만들 때 우리가 애플리케이션 기능 개발에만 집중할 수 있도록 인즌/저장소/ 분적 등 백엔드의 부가적인 부분을 모두 처리
  • Firebase는 클라우드 데이터베이스로 시작하여 2014년 구글에 인수, Google Cloud Platform(GCP) 위에서 돌고 있는 서비스이므로 연동이 쉽다.

Firebase Console - Project 추가

  • Firebase Console에서 새로운 프로젝트 추가

  • 기본 Spark 요금제(무료)로 설정
    ⇒ Blaze 요금제를 이용해야 Google Cloud Platform에서 확장하여 사용 가능
    ⇒ Google Cloud Run을 이용해서 제품을 배포할 예정이므로 Blaze 요금제로 변경

Firebase 프로젝트 설정

  • 프로젝트 개요 > 프로젝트 설정 > 일반 > 기본 GCP 리소스 위치 설정
    ⇒ Google Cloud Region을 asia-northeast1 로 배포할 예정이므로 Firebase의 기본 리소스 위치도 asia-northeast1로 설정

Firebase CLI 설치

  • 다음 명령어로 Firebase CLI 설치
$ curl -sL https://firebase.tools | bash
  • 로그인하여 Firebase CLI 테스트
    ⇒ CLI를 설치한 후에는 인증 필요 : Google 계정으로 Firebase에 로그인
$ firebase login
  • Firebase 프로젝트를 나열하여 CLI가 올바르게 설치되었고 사용자 계정에 액세스하는지 테스트
$ firebase projects:list

웹 앱에 Firebase 추가

🪐 Google Cloud

Google Cloud Console - Project 선택

  • Google Cloud Console 에서 Firebase에서 생성한 프로젝트 선택

  • 크레딧 $300를 무료로 제공되므로 유료 계정 활성화를 하여 크레딧 오픈

확인 사항

  • 요금제를 변경하면서 결제 계정을 설정이 필요
  • 결제 계정 설정 후 요금제 변경 가능

Google Cloud CLI 설치

시작하기 전에
1. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
⇒ Google Cloud Console - Project 선택 완료
2. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.
⇒ 유료 계정 활성화 완료
3. Google Cloud CLI를 설치하고 초기화합니다.

Homebrew를 통해 설치 가능 : google-cloud-sdk

$ brew install --cask google-cloud-sdk

gcloud CLI 초기화

$ gcloud init

Welcome! This command will take you through the configuration of gcloud.

Settings from your current configuration [default] are:
core:
  account: [본인 계정]
  disable_usage_reporting: 'True'
  project: [프로젝트]

Pick configuration to use:
 [1] Re-initialize this configuration [default] with new settings
 [2] Create a new configuration
 
# 다른 프로젝트가 지정되어 있어서 변경을 위해 Re-initialize
Please enter your numeric choice:  1

Choose the account you would like to use to perform operations for this configuration:
 [1] [본인 계정]
 [2] Log in with a new account
Please enter your numeric choice:  1

You are logged in as: [위에서 선택한 계정].

Pick cloud project to use:
 [1] [내 프로젝트1]
 [2] [내 프로젝트2]
 [3] Enter a project ID
 [4] Create a new project
Please enter numeric choice or text value (must exactly match list item):  1

Your current project has been set to: [위에서 선택한 프로젝트].

...

Your Google Cloud SDK is configured and ready to use!

...
  • 초기화 후 업데이트
    ⇒ SDK는 최신 버전을 유지하는 것이 좋다.
$ gcloud components update

Cloud Run에 Node.js 서비스 배포

Cloud Run

  • 컨테이너를 서버리스 베이스로 배포할 수 있는 서비스

샘플 애플리케이션 작성

  1. 프로젝트명 디렉토리 생성 및 해당 디렉토리로 이동
  2. package.json 파일을 생성
{
  "name": "helloworld",
  "description": "Simple hello world sample in Node",
  "version": "1.0.0",
  "private": true,
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "engines": {
    "node": ">=16.0.0" // 16버전(최신버전)으로 변경
  },
  "author": "Google LLC",
  "license": "Apache-2.0",
  "dependencies": {
    "express": "^4.17.1"
  }
}
  1. 동일한 디렉터리에서 index.js 파일을 만들고 이 파일에 다음 줄을 복사, 붙여넣기
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  const name = process.env.NAME || 'World';
  res.send(`Hello ${name}!`);
});

const port = parseInt(process.env.PORT) || 8080;
app.listen(port, () => {
  console.log(`helloworld: listening on port ${port}`);
});

소스에서 Cloud Run에 배포

  • 가장 기본적인 클라우드 배포 : 웹 서비스 자체를 바로 배포
    • Dockerfile을 사용하여 배포할 수 있다.
  • 소스 코드에서 컨테이너 이미지를 자동으로 빌드하고 이를 배포
$ gcloud run deploy

  • Google Cloud Console > Coloud Build, Cloud Run에서 배포 상태를 볼 수 있다.

  • 해당 프로젝트 이름을 클릭하면 세부 정보를 볼 수 있다.
  • URL을 클릭하면 "Hello World!"가 나타난다.

컨테이너 빌드

  • Cloud Run에서는 컨테이너 계약을 준수하는 한 컨테이너 이미지를 빌드할 수 있는 모든 도구로 빌드된 컨테이너 이미지를 사용할 수 있다.

Dockerfile을 사용하여 빌드

# Dockerfile
FROM node:18-slim

WORKDIR /usr/src/app
COPY package*.json ./

RUN npm install --omit=dev

COPY . ./

CMD ["node", "index.js"]
# .dockerignore
Dockerfile
.dockerignore
node_modules
npm-debug.log

# .gcloudignore
node_modules
npm-debug.log
  • 변경사항 : 샘플 코드의 Dockerfile RUN npm install --only=production을 그대로 빌드하면 아래와 같은 에러가 발생한다.

--only=production--omit=dev 로 변경

Cloud Build를 사용하여 빌드

  • Cloud Build를 사용하여 Google Cloud에서 이미지를 빌드
  1. 소스 및 Dockerfile이 포함된 폴더로 이동합니다.
  2. 다음 명령어를 실행합니다.
$ gcloud builds submit --tag IMAGE_URL

IMAGE_URLgcr.io/PROJECT-ID/PROJECT-ID 로 작성해서 배포

이미지 URL 확인 방법

  • Google Cloud Console > Cloud Run > 서비스 선택 > 버전에서 확인
  • scripts"gcloud:build": "gcloud builds submit --tag gcr.io/PROJECT-ID/PROJECT-ID" 추가

Cloud Run에 컨테이너 이미지 배포 - 기존 서비스의 새 버전 배포

수동 배포(Console)

  1. Google Cloud Console > Cloud Run > 서비스 선택 > 새 버전 및 수정 배포
  2. 일반설정 > 컨테이너 이미지 URL 선택 > 컨테이너 선택 > 최신 버전 선택
  3. 배포

명령어로 배포

$ gcloud run deploy SERVICE --image IMAGE_URL

SERVICE를 배포할 서비스의 이름으로 바꿉니다. 이 매개변수를 완전히 생략할 수 있지만 생략하면 서비스 이름을 입력하라는 메시지가 표시됩니다.

  • scripts"gcloud:deploy": "gcloud run deploy --image gcr.io/PROJECT-ID/PROJECT-ID" 추가

Cloud Build를 사용하여 Git에서 지속적 배포

  1. github에 저장소를 생성
  2. Google Cloud Console > Cloud Run > 서비스 선택 > 지속적 배포 설정
  3. 제공업체와 저장소를 선택
  4. 다음 클릭
  5. 빌드 구성 단계의 옵션을 지정
  • Docker를 사용하여 저장소를 빌드해야 하는 경우 Dockerfile이 포함되어 있으면 Dockerfile을 선택합니다. 소스 위치는 Dockerfile의 위치와 이름을 나타냅니다. 이 디렉터리는 Docker 빌드 컨텍스트로 사용됩니다. 모든 경로는 현재 디렉터리를 기준으로 합니다.
  1. 저장 클릭
  2. 저장소에 배포 관련 스크립트가 적용

0개의 댓글