TIL

TIL - A1one(1) < Firebase Cloud Function >

hamiric 2025. 1. 8. 20:01

파이어베이스 Cloud Function 이란?

Cloud Functions는 Firebase의 기능과 HTTP 요청에 의해서 Trigger 되는 이벤트에 응답하여 백엔드 코드를 자동으로 실행시켜주는 서버리스 프레임워크.

 

즉, Firebase 프로젝트의 이벤트를 기반으로 백엔드 코드를 실행할 수 있도록 해주는 서비스다. 이 서비스는 Google Cloud Functions를 기반으로 동작하며, 서버를 직접 관리하거나 배포할 필요 없이 특정 조건이 충족되었을 때 자동으로 코드를 실행하도록, 이벤트를 다룰 수 있게 해주는 역할이라고 할 수 있다.

 

 

설치법

  • Firebase CLI 환경 설치

이 포스팅에 설치법이 나와있으니, 따라해 보자.

 

실전예제6 - 블로그앱 만들기 < TextFormField, Firebase CLI 설치법 및 연동 >

1. 위젯 구조화MaterialApp HomePage Scaffold AppBar title Column Text ListView Container x n개 floatingButton Icon DetailPage Scaffold AppBar action Icon x 2개 ListView Image Text x 4개 ..

hamiric.tistory.com

 

  • Cloud Functions 설치
// Terminal
firebase init functions

 

해당 명령어를 입력하면, 파이어베이스와 프로젝트간의 연동 설정이 시작된다.

만약, 기존에 이미 연동해놓은 정보가 있으면, 기존의 firebase.json 설정을 유지한다고 하면 되고,

처음 연동이라면, 프로젝트 선택부터 차근차근 실행하면 된다.

 

Functions에 사용할 언어 선택은 JavaScript를 설정해 주었고,

이후, lint 설정하고, 종속성 설치 부분은 모두 y 를 눌러주자.

 

 

모두 완료되면, 다음과 같은 Functions 폴더가 프로젝트에 생성됨을 알 수 있다.

 

  • Functions 배포하기

예시 코드를 배포해보자.

index.js 를 아래의 코드로 변경해주자.

const { onRequest } = require("firebase-functions/v2/https");

exports.HelloWorld = onRequest(
  (req, res) => {
    res.send("Hello from Firebase!");
  }
);

 

이 코드는 Firebase v2 버전의 Cloud Functions를 사용하여 HTTP 요청을 처리하는 예제이다.

이 코드를 배포하려면, 다음 명령어를 입력해주자.

 

** Functions를 이용하려면, 파이어베이스 요금제가 Blaze 요금제여야 한다!

//Terminal
npm run deploy
또는
firebase deploy --only functions

 

배포가 완료되면, 다음과 같이 파이어베이스 Functions에 함수가 올라온다!

 

우리가 이번에 넣은 코드는 HTTP 요청 코드이므로,

HTTP URL을 넣어보면 Hello from Firebase! 가 정상적으로 출력이 될것이다.

 

 

응용하기

 

앱에서 함수 호출  |  Cloud Functions for Firebase

2024년 데모 데이에서, Firebase를 사용하여 AI 기반 앱을 빌드하고 실행하는 방법에 관한 데모를 시청하세요. 지금 시청하기 의견 보내기 앱에서 함수 호출 컬렉션을 사용해 정리하기 내 환경설정

firebase.google.com

 

공식문서에서, Functions를 이용하는 다양한 함수 사용법을 소개해 주고 있다.

 

여기서 이번 프로젝트에서 사용한, 예약함수(Cloud Scheduler)를 소개하고자 한다.

 Cloud Scheduler 는 정의한 시간 또는 간격에 함수 로직을 호출한다.

// 스케줄러를 사용하기 위한 설정
const {initializeApp} = require("firebase-admin/app");
const {onSchedule} = require("firebase-functions/v2/scheduler");

initializeApp(); // Firebase 앱을 초기화

exports.scheduledAiFeed = onSchedule("*/10 * * * *", async (event) => {
  // 간격 시간마다 호출할 함수
  // 여기서 "*/10 * * * *" 는 10분당 한번씩 이 함수를 호출하겠다는 의미!
}

 

 

다른 방식들은

Firebase Database의 변경점을 트리거로 하여 실행되는 함수라던가 등등이 있는데,

공식문서에서 잘 소개해주고 있으니 한번 읽어보고 사용해 보는것을 추천한다!

 

 

npm run lint -- --fix