본문 바로가기
Infra/Firebase

쉽게 따라하는 Firebase Cloud Functions - 1. 프로젝트 생성

by devson 2020. 12. 30.

(2019-08-27에 작성된 글입니다)

 

AWS나 Azure와 같은 클라우드 플랫폼이 제공하는 Serverless 플랫폼을 사용하면
개발자가 웹 애플리케이션을 만들고, 이를 VM 인스턴스에 올리고, CI/CD를 구성하는 등...
여러가지 신경쓸 것이 많은 백엔드 작업들을 비지니스 로직 코드만 작성하여 Firebase에 배포하면,
해당 Serverless 플랫폼이 스케일링이나 DB 접근 등을 알아서 전부 관리해줘 애플리케이션 개발 중 백엔드 개발 시간을 단축할 수 있다.
(하지만 편리한 만큼 단점도 있기 때문에 잘 선택해서 써야한다.)

 

또 이번에 알아볼 Firebase Cloud Functions의 경우, Firebase의 Realtime DB, Authentication 등에 쉽게 접근하여 여러 백엔드 기능을 구현할 수 있게 한다.

 

Firebase Cloud Functions는 자바스크립트를 사용하고 express와 사용법이 비슷하기 때문에
평소 자바스크립트로 웹개발을 해왔다면 쉽게 사용할 수 있을 것이다.

 


참고

2019년 8월 27일 기준으로 Firebase에서 추천하는 Node.js 버전은 8이고 10은 현재 베타이다.

 

 

추가로 Node.js 버전을 커맨드 한 줄로 쉽게 관리하고 싶다면 NVM(Node Version Manager)을 사용하면 된다.
설치 및 사용법은 HEROPY Tech 블로그를 참고하자.


 

이번 포스팅에서는 CLI를 통해 Firebase 프로젝트를 생성하도록 하겠다.

1. firebase-tools 설치

CLI로 Cloud Functions를 시작할 것이기 때문에 Firebase에서 제공하는 firebase-tools 패키지를 설치한다.

$ npm install -g firebase-tools

참고로 주로 새로운 기능과 버그 수정은 Firebase CLI 및 firebase-functions SDK의 최신 버전에서만 제공되기 때문에 자주 CLI와 SDK를 업데이트 해주는 것이 좋다고 한다.

# 패키지 업데이트
$ npm install firebase-functions@latest firebase-admin@latest --save
$ npm install -g firebase-tools

 

2. Firebase 로그인

시작 전에 CLI로 Firebase에 접근하기 위해 firebase login 커맨드로 로그인을 해야한다.

$ firebase login

i  Firebase optionally collects CLI usage and error reporting information to help improve our products. Data is collected in accordance with Google's privacy policy (https://policies.google.com/privacy) and is not used to identify you.

? Allow Firebase to collect CLI usage and error reporting information? (Y/n)

 

Yn 둘중 아무것이나 선택을 하면 브라우저창을 통해 접근 권한(OAuth)을 요구한다.

 

허용 버튼을 누르면 로그인이 완료된다.

 

Visit this URL on any device to log in:
https://accounts.google.com/o/oauth2/auth?client_id=foo-bar.apps.googleusercontent.com&scope=email%20openid%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloudplatformprojects.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Ffirebase%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&response_type=code&state=533569859&redirect_uri=http%3A%2F%2Flocalhost%3A9005

Waiting for authentication...

+  Success! Logged in as 사용자 ID

이제 로그인한 사용자의 프로젝트에 접근이 가능하다.

 

3. 프로젝트 생성

로그인이 완료되었기 때문에 프로젝트를 생성해보자.
firebase init functions 명령어를 통해 Cloud Functions 프로젝트를 생성한다.

 

Create a new project를 옵션을 선택하고

unique한 프로젝트 ID를 입력한다. 나같은 경우는 devson-cloud-functions로 지정하였다.
(이미 존재하는 프로젝트 ID를 입력한 경우 진행되지 않는다.)


프로젝트 명은 프로젝트 ID와 같게 하였다.

 

이제 GCP 프로젝트를 생성되고, Firebase 리소스가 생성된 GCP 프로젝트에 추가되어
Firebase Cloud Functions 프로젝트가 정상적으로 준비가 됐음을 보여준다.
(만약 프로젝트 ID가 다른 사람과 겹치게 된다면 해당 단계로 오지 못한다.)

 

Functions Setup은 간단하게 JavaScript, Lint 설정 No로 설정하겠다.

그러면 현재 디렉토리에 위와 같이 firebase 설정 파일과, 실질적인 함수를 구현하는 functions 디렉토리가 생성되고,

 

Firebase console에 들어가보면 방금 만든 프로젝트를 확인할 수 있다.

 

하지만 지금은 프로젝트 콘솔에 Functions에 들어가도 아무런 함수도 없다.
다음은 함수를 코드를 작성하여 이를 Firebase 프로젝트에 deploy 하는 것을 해보겠다.

 


 

참고
https://firebase.google.com/docs/functions/get-started?hl=ko
https://firebase.google.com/docs/functions/manage-functions?hl=ko#set_nodejs_version

댓글