Firebase 7

[FireBase]CloudFunctions 최적화 - 파일 쪼개기

클라우드 펑션스의 최적화 방안중 콜드 스타트를 최대로 줄이기 위한 방법중 하나로 파일 쪼개기가 있습니다.기본적으로 파일하나에 다수의 함수가 있다면 import 와 글로벌 변수를 공유 하게 됩니다.이러한 상황을 최대한 줄이기 위해서 파일 쪼개기를 사용 합니다.하나의 ts 파일에 하나의 함수만 작성 합니다. import { CallableRequest, onCall } from "firebase-functions/v2/https";export const function_test = onCall({}, async (req: CallableRequest) => { return { code: "success" };}); test.ts 파일이고 하나의 함수만 담습니다.이렇게 구성하면 function_test 에 ..

Firebase 2025.05.29

[Firebase]CloudFunctions Error 리포팅

CloudFunctions 에서 에러가 발생한다 기본적 직접 확인하기 전까지 알 수 없습니다.그래서 내 함수가 잘 돌아가고 있는지 아닌지 알수 없기 때문에 주기적으로 확인 해야 하는데 이러한 문제를 줄이기 위해서 구글 클라우드의 에러 이포팅을 사용하여 이메일혹은 다양한 추가 채널로 에러를 전달 받습니다.여기서 이메일로 에러 리포팅 받는 방법을 알아 보겠습니다. 일단 Firebase를 사용하고 프로젝트를 만들었다면 Google Cloud 에 대응하는 프로젝트가 존재 합니다.Google Cloud 들어가서 해당 프로젝트를 선택합니다. 일단 IAM 에 들어가서 전달 받을 이메일을 추가 해야 합니다. 기존에 시스템이 만들어둔 계정이 있고 자신의계정이 있는데받는사람이 자신의 계정이라면 별도로 추가할 필요는 없지만..

Firebase 2025.05.15

[Firebase] CloudFunctions Promise.all() 로 최적화

Firebase CloudFunctions 는 서버리스 환경으로 사용한 만큼 비용을 내는 구조이기 때문에 최적화가 상당히 중요하며 비용을 아낄 수 있는 방법 입니다.가장 가볍고 빠르게 얻을수 있는 방법은 비동기 요청이 순차적으로 처리되는지 확인 하는 것 입니다.예를들어 firestore 에서 데이터를 3번 가져오는데 매번 0.5초씩 걸린다고 치면await(0.5초) -> await(0.5초) -> await(0.5초) 총 1.5초가 소요 됩니다.하지만 3개 모두 동시에 수행하게 되면 0.5초로 끝나버리게 됩니다.이때 사용하는 것이 Promise.all 입니다.Promise.all([promise1, promise2, promise3])같이 묶인 작업중에서 가장 늦게 끝나는 것 까지 기다렸다 다음 코드로 ..

Firebase 2025.05.12

[Firebase]CloudFunctions 콜드 스타드 와 메가 함수

서버리스 환경에서 콜드 스타트는 피할 수 없는 문제 입니다.서버를 관리하지 않아도 된다는 편리함이 있지만 콜드스타트라는 문제를 가지고 있고 1~3초 가량 콜드스타트가 문제가 없다면 상관 없겠지만 대부분의 상황에서는 문제가 있습니다. 콜드스타트서버리스 함수는 사용량이 없으면 인스턴스가 모두 종료되고 다시 요청이 들어오면 새로운 인스턴스를 생성하여 함수 실행 준비를 합니다.이때 소요되는 시간이 보통 1~3초 가량으로 예상하는데 이것이 콜드 스타트 입니다.한번 인스턴스가 생성된 이후 바로 종료시키지 않고 살려두는데 이때 다시 요청이 오면 warm 상태이기 때문에 바로 실행 되서 1~3초의 시간을 절약 할 수 있습니다. 콜드스타트가 길어지는 원인기본 인스턴스를 띄우는 것 말고도 콜드스타트가 길어지는 원인이 있습..

Firebase 2025.05.11

[Firebase]Cloud Functions 의 캐싱 전략

Cloud Functions의 캐싱전략은 크게 2가지로 나뉘게 됩니다.1. 메모리 캐싱2. 외부 자원 사용 모두 다른 서버리스 환경에서도 동일하게 적용할 수 있는 방법 입니다. 1. 메모리 캐싱1번은 static 변수에 저장해서 인스턴스가 살아 있는 동안 static 변수를 유지하는 전략 입니다.메가 함수 전략과도 잘 맞는 방법이지요.사용자가 많고 함수가 꾸준히 호출되는 서비스에도 적합한 방법입니다.사용법은 간단합니다.Cloud Function 함수 외부에 변수를 넣게 되면 static 상태가 되고 이는 warm 상태일 동안 변수가 유지됩니다.let cachedData: any = null;export const getConfig = onRequest(async (req, res) => { if (ca..

Firebase 2025.05.10

[Firebase] Functions v1과 v2

Firebase Cloud Functions 는 버전이 2개 입니다.v1 과 v2가 있는데 v2를 사용해야 하는 몇가지 이유를 찾아 봤습니다. v1 는 functions.https.onCall() 로 직접 호출하는데v2 는 import {onCall, onRequest} from "firebase-functions/v2" 로 임포트 하여 사용합니다.v1은 Node.js 10~16버전이고 v2 는 Node.js 18+ 입니다. v1의 기본코드는 다음과 같습니다.const functions = require("firebase-functions");exports.hello = functions.https.onRequest((req, res) => { res.send("Hello from V1");}); v..

Firebase 2025.05.09

[Firebase]Firebase Cloud Function 로컬 디버깅

Firebase Cloud Function 로컬 디버깅의 주의점Firebase Cloud Functions를 Flutter 앱과 함께 로컬에서 테스트하는 환경은 매우 빠른 개발 피드백 루프를 제공합니다.하지만 몇 가지 환경 설정을 빠뜨리면 함수 호출이 실패하거나, 클라우드와 로컬 간 동작 차이가 발생할 수 있습니다.이 글에서는 Functions만 로컬에서 테스트할 때 필수적으로 확인해야 할 설정과 주의점을 정리합니다.1. Firebase Functions + 에뮬레이터 초기화Cloud Functions만 로컬 테스트할 경우에도 Firebase 프로젝트 초기화 시 함께 Firebase Emulators 설정을 추가해 두는 것이 좋습니다.1단계: Firebase 프로젝트 초기화firebase init fun..

Firebase 2025.05.01