분류 전체보기 61

[Flutter] Riverpod

현재 Flutter에서 많이 사용되는 상태관리 도구중 하나가 Riverpod 입니다.provider에서 출발했지만 provider에 존재하는 단점이 꽤 있어서 이것을 극복하고자 Riverpod가 탄생 하였습니다.Flutter를 개발하시는 분들은 다들 아시겠지만 context의존도가 꽤 높습니다.그리고 위젯별로 독립적이다 보니 A위젯과 B위젯의 데이터 전달하기가 꽤나 까다롭습니다.물론 static 클래스를 활용해서 전달하면 되겠지만 A위젯에서 데이터를 변경해서 B위젯을 업데이트 하는 방식, 혹은 DB를 감지하다 DB가 변경되어 위젯을 업데이트 하는 방식 등에서 Flutter의 기본 상태 관리만으로 업데이트 하기가 상당히 까다롭습니다.그래서 나온것들이 상태관리 개념인데 이전에는 GetX가 많이 쓰였고 현재는..

Flutter 2025.06.23

[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

[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