전체 글 59

[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

[Azure] AzureFunction + BlobStorage, 캐싱

https://aostols.tistory.com/53 [Unity]Playfab + AzureBlobStorage 사용하기원래 계획은 Playfab을 사용하여 게임 데이터를 Playfab TitleData에 넣으려고 했습니다.그런데 Playfab에서 넣을수 있는 노드의 양이 적고 전체 크기 역시 제한적이기 때문에 결론적으로는 넣을수 없었aostols.tistory.com 이전 포스트에서는 SAS를 활용하여 제한된 링크를 전달하는 방법을 확인 했었습니다.이번에는 AzureFunction 내부에서 BlobStorage를 사용하는 방법을 확인해 보겠습니다. 일단 Azure의 세팅은 기존과 동일 합니다. 리소스 그룹을 만들고 스토리지 계정을 만들어 줍니다. 그리고 Blob service를 사용 합니다. 컨테..

기타 2025.03.25

[Unity]Playfab + Firebase 인증

Playfab 과 Firebase를 같이 쓰게 될 경우 유저 인증을 Playfab으로 하게 됩니다.이때 Firebase 를 인증할 방법이 없어지게 됩니다.Playfab 계정과 Firebase 계정이 1:1로 매칭되어야 하는데 만일 각자의 방법으로 로그인을 하게 된다면 매칭이 깨질 우려도 있습니다.최악의 경우에는 다수의 Playfab유저가 하나의 Firebase를 공유 하는 상황도 발생 할 수 있습니다.이럴경우 사용하는 것이 Firebase 의 SignInWithCustomToken 입니다. 일단 서비스의 주체는 Playfab이기 때문에 Playfab으로 인증을 해 줍니다.google 인증이거나 email 등 어떤방식으로든 인증하면 됩니다.이후 PlayfabId를 기준으로 FirebaseAdmin API를..

Unity Engine 2025.03.25

[기타] 뒤끝서버와 Playfab 비교

GBass 를 뒤끝서버와 playfab을 사용했는데 두개를 비교해 보았습니다. 뒤끝 서버.장점1. 한국에서 만든것이라서 커뮤니케이션이 원활하다.- 기본적인 문서도 한글로 잘 되어 있고 질의 응답도 다 한국인에게 하기 때문에 매우 원활 합니다.- 포럼이 잘되어 있어서 대부분의 질문은 포럼에서 찾을수 있습니다.2. 강력한 채팅 기능- 채팅기능이 기본적으로 제공하며 아주 강력합니다.- 게임에서 채팅 붙이려면 생각보다 까다롭고 귀찮은데 그런부분을 대부분 해소해 줍니다.3. 생각보다 많은 기능- 확률 제어, 데이터 시트 관리, DB 관리, 서버 함수 등 생각보다 많은기능을 제공 합니다.- 버전 관리도 같이 하고 있어서 라이브 서비스에서 패치에 대한 부담이 적습니다.- 쿠폰 기능이 매우 강력해서 쿠폰발행 및 처리가..

기타 2025.01.24

[Unity]Playfab + AzureBlobStorage 사용하기

원래 계획은 Playfab을 사용하여 게임 데이터를 Playfab TitleData에 넣으려고 했습니다.그런데 Playfab에서 넣을수 있는 노드의 양이 적고 전체 크기 역시 제한적이기 때문에 결론적으로는 넣을수 없었습니다.그래서 방법을 찾아보다 Azure에 넣어야 겠다고 생각했고 여기서 보안적인 이슈 때문에 요청이 있을때만 잠깐 경로를 열었다가 이외에는 닫는 방법을 생각하여 Azure Blob Storage 의 SAS를 사용하기로 하였습니다. 일단 Aure Portal 에 로그인합니다. 구독은 비용관련된 내용이기 때문에 구독을 등록 하셔야 대부분의 기능을 이용 하실 수 있습니다.우선 리소스 그룹을 만들어 줍니다.서비스할 영역은 한국이기 때문에 Korea Central(서울)로 만들어 줍니다.리소스 그룹..

Unity Engine 2024.12.26