firebase 공식 문서에서는 Cloud Functions 를 다음과 같이 설명하고 있다
Firebase용 Cloud Functions는 Firebase 기능과 HTTPS 요청에 의해 트리거되는 이벤트에 응답하여 백엔드 코드를 자동으로 실행할 수 있는 서버리스 프레임워크입니다
Cloud Functions 의 특징은 다음과 같다
서버 관리가 불필요하다
Cloud Function 은 서버리스 프레임워크로, 서버리스란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행 할 수 있도록 하는 개발 모델이다
사용한 만큼만 지불한다
서버리스 환경에서 배포된 코드는 클라우드 서비스 환경에서 실행되고 컴퓨팅 자원을 사용한 만큼 비용이 부과된다
이벤트에 대한 응답으로 코드를 실행한다
Cloud Functions를 사용하면 firebase 기능에서 코드를 트리거하거나 원하는 웹, 모바일 또는 백엔드 애플리케이션에서 HTTP를 통해 바로 코드를 호출할 수 있다
선행되어야 하는 작업
1. node 설치
2. firebase 프로젝트 생성 및 Blaze 요금제로 변경
3. firebase 콘솔에서 firestore 사용 설정
firebase 프로젝트를 연결하기 위한 프로젝트 디렉토리를 생성해준다
다음과 같은 과정을 통해서 프로젝트를 연결할 수 있다
1) firebase 명령줄 도구 설치
$ npm install -g firebase-tools
2) firebase 프로젝트 생성
$ firebase init
Cloud Functions 은 onCall, onRequest 두 가지 방식으로 호출 할 수 있다
onCall 은 Firebase 앱에서 함수를 직접 호출하는 방식이고 onRequest 는 HTTP Request 방식으로 함수를 호출한다
우선은 onRequest 로 간단한 함수를 작성하여 테스트 해보자
호출하면 Hello World! 라고 응답하는 함수를 asia-northeast3 리전에 배포한다
// index.js
const functions = require("firebase-functions");
exports.test= functions
.region("asia-northeast3")
.https.onRequest((request, response) => {
response.send("Hello World!");
});
Cloud Functions 함수 배포 전 테스트를 위해 firebase emulator 기능을 사용할 수 있다
$ firebase emulators:start --only functions
함수를 다음과 같은 URI로 테스트 할 수 있다
Cloud Functions 를 다음과 같은 명령어를 통해 배포한다
** 프로젝트 초기화 할 때 ESLint 사용 설정을 해두면 Lint 오류를 고쳐야 배포가 된다
$ firebase deploy —only functions
firebase 콘솔 -> Functions -> 대시보드 에 배포가 완료된 Cloud Functions 이 보이고, 요청 URI 로 postman 에서 호출해보면 정상적으로 배포되었음을 확인 할 수 있다
firebase 콘솔 -> Functions -> 로그 탭에서 모니터링 가능하다
https://firebase.google.com/docs/functions
https://www.redhat.com/ko/topics/cloud-native-apps/what-is-serverless