분류 전체보기 63

[DartFrog] DartFrog vs Shelf

Dart 백엔드Dart 로 백엔드를 구성해보자는 생각을 했고 처음에는 Shelf를 시도했습니다.Shelf 는 정말 코어에 가깝고 대부분을 직접 구현해야 합니다.장점으로는 자유롭다이고 단점으로는 아무것도 없다 입니다.하나의 핸들러 클래스를 만들고 거기에 어떤 라우팅을 넣을것인지 정의하고라우팅 넣을때 미들웨어를 하나하나씩 정의 해야 합니다.Router get userRouter { final router = Router(); router.get('/profile', (Request request) { return Response.ok('사용자 프로필 정보입니다.'); }); return router;}// --- System Router ---Router get systemRouter { fi..

Dart Frog 2026.02.13

[기타]1인 개발 전향기(Unity -> Dart Fullstack)

간만에 쓰는 포스트 입니다.게임 개발자로 살아오다가 1인 개발로 완전히 전향하게 되어서 내용을 정리해 볼 필요가 있어서 정리합니다. 이전 커리어Flash 개발자로 커리어를 시작해서 1년 반만에 Scaleform으로 게임개발로 전향하였습니다.그 과정에서 다시 Unity클라이언트 개발자로 전향 하였습니다.하지만 결국 회사 폐업으로 인한 실직과 때마침 터진 Unity의 요금제 개편으로 Unity 프로젝트의 대폭 축소 및 AI파동으로 일자리가 없더라구요. Flutter의 시작백수생활에서 외주로 Flutter 개발을 하게 되었습니다.앱 개발 의뢰였고 언어선택이 자유로와서 Flutter를 선택하였고 이유는 크로스 플랫폼이기 때문에 모바일 앱 + 웹 까지 다 처리 할 수 있을거라 생각해서 선택 하였습니다.그리고 Da..

기타 2026.02.06

[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