<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>effidev</title><description>Flutter · Cloudflare 엣지 · 클라우드 비용 최적화</description><link>https://effidev.dev/</link><language>ko-KR</language><item><title>Cloudflare D1 샤딩 실전 가이드: 10GB 한계와 단일 Writer 병목 돌파하기</title><link>https://effidev.dev/ko/blog/cloudflare-d1-sharding-guide/</link><guid isPermaLink="true">https://effidev.dev/ko/blog/cloudflare-d1-sharding-guide/</guid><description>멀티테넌트·쓰기 위주 앱이 Cloudflare D1의 10GB 하드 리밋과 단일 writer 구조에 부딪혔을 때, 테넌트 기준 수동 샤딩으로 확장하는 라우팅 코드와 리밸런싱 절차를 정리했다.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>cloudflare</category><category>d1</category><category>database</category><category>sharding</category></item><item><title>Durable Objects overloaded 에러 완전 정복: 초당 1,000 요청 소프트 리밋과 싱글 스레드 병목 피하기</title><link>https://effidev.dev/ko/blog/cloudflare-durable-objects-rate-limit/</link><guid isPermaLink="true">https://effidev.dev/ko/blog/cloudflare-durable-objects-rate-limit/</guid><description>Durable Objects에서 실제로 발생하는 &apos;overloaded&apos; 에러의 정확한 발동 조건과 재현 코드, 싱글 스레드 직렬 처리가 만드는 지연, alarm() 재시도가 만드는 중복 실행 버그까지 프로덕션 함정을 코드로 짚는다.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>cloudflare</category><category>durable-objects</category><category>scaling</category><category>performance</category></item><item><title>Durable Objects WebSocket Hibernation API로 실시간 서버 비용 90% 줄이기</title><link>https://effidev.dev/ko/blog/cloudflare-websocket-hibernation-cost/</link><guid isPermaLink="true">https://effidev.dev/ko/blog/cloudflare-websocket-hibernation-cost/</guid><description>Durable Objects 기반 채팅·멀티플레이어 서버에서 일반 WebSocket 방식이 유휴 시간에도 GB-s 과금을 쌓는 구조적 문제를 짚고, Hibernation API 마이그레이션 코드와 공식 가격표 기반 비용 시뮬레이션을 제공합니다.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>cloudflare</category><category>durable-objects</category><category>websocket</category><category>cost-optimization</category></item><item><title>Cloudflare Workers vs AWS Lambda 비용 비교: Flutter 백엔드, 월 100만~1억 요청 구간 실측</title><link>https://effidev.dev/ko/blog/cloudflare-workers-vs-aws-lambda-cost/</link><guid isPermaLink="true">https://effidev.dev/ko/blog/cloudflare-workers-vs-aws-lambda-cost/</guid><description>Flutter 앱의 웹훅 핸들러·푸시 발송 서버를 Workers로 만들지 Lambda로 만들지 고민할 때 필요한 답. CPU 시간만 과금하는 Workers, 대기시간까지 과금하는 Lambda, 그리고 API Gateway 함정까지 반영해 월 100만~1억 요청 구간의 실제 청구액을 계산했다.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>cloudflare</category><category>workers</category><category>aws-lambda</category><category>cost-optimization</category></item><item><title>Firestore 리스너 하나가 Flutter 앱 청구서를 터뜨리는 이유: 읽기 100만 건당 $0.60의 함정</title><link>https://effidev.dev/ko/blog/firestore-read-cost-flutter/</link><guid isPermaLink="true">https://effidev.dev/ko/blog/firestore-read-cost-flutter/</guid><description>Flutter+Firestore 조합에서 흔한 N+1 조회, StreamBuilder 리스너 재연결, get() 폴링이 어떻게 읽기 횟수를 기하급수적으로 늘리는지 실제 단가로 계산하고, 무료 일일 한도가 소진되는 임계점과 대안 아키텍처를 정리했다.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>firebase</category><category>firestore</category><category>flutter</category><category>cost-optimization</category></item><item><title>2026년 5월 마감 이후에도 구글플레이가 내 플러터 앱을 거부한다면: 16KB 페이지 크기 실전 대응 가이드</title><link>https://effidev.dev/ko/blog/flutter-16kb-page-size-google-play/</link><guid isPermaLink="true">https://effidev.dev/ko/blog/flutter-16kb-page-size-google-play/</guid><description>구글플레이의 16KB 메모리 페이지 크기 요구사항 마감(2026년 5월 31일)이 지난 지금도 네이티브 플러그인을 쓰는 플러터 앱은 업데이트를 거부당할 수 있습니다. 내 앱이 영향받는지 확인하고 미대응 서드파티 SDK에 대응하는 실전 절차를 정리했습니다.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>flutter</category><category>android</category><category>google-play</category><category>native</category></item><item><title>골든 테스트가 내 macOS에서는 통과하는데 CI 리눅스에서는 계속 깨지는 이유</title><link>https://effidev.dev/ko/blog/flutter-golden-test-flaky-ci/</link><guid isPermaLink="true">https://effidev.dev/ko/blog/flutter-golden-test-flaky-ci/</guid><description>로컬에서는 초록불인데 CI만 켜면 빨간불이 되는 Flutter 골든 테스트, 그 원인은 대부분 폰트·DPR·래스터라이저 차이입니다. 폰트 번들링, 테스트 환경 고정, 허용 오차 diff 도구, CI 잡 분리까지 실전 레시피를 정리했습니다.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>flutter</category><category>testing</category><category>ci-cd</category><category>golden-test</category></item><item><title>Riverpod vs Bloc, 프로덕션에서 후회하지 않으려면: 팀 규모별 실전 의사결정 가이드</title><link>https://effidev.dev/ko/blog/flutter-riverpod-vs-bloc-decision-guide/</link><guid isPermaLink="true">https://effidev.dev/ko/blog/flutter-riverpod-vs-bloc-decision-guide/</guid><description>기능 비교표가 아니라 실제로 터지는 통증 기준으로 Riverpod와 Bloc을 고른다. provider scope stale state, build_runner 마찰, event 폭발 문제와 팀 규모별 의사결정 체크리스트.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>flutter</category><category>riverpod</category><category>bloc</category><category>state-management</category></item><item><title>플러터 앱이 첫 실행에서만 버벅인다면: 쉐이더 컴파일 재밍(Shader Compilation Jank) 완전 정복</title><link>https://effidev.dev/ko/blog/flutter-shader-compilation-jank/</link><guid isPermaLink="true">https://effidev.dev/ko/blog/flutter-shader-compilation-jank/</guid><description>디버그 모드에서는 멀쩡하다가 릴리즈 빌드나 신규 기기에서만 나타나는 Flutter shader compilation jank의 정체를 DevTools Raster 스레드 분석부터 SkSL 워밍업, Impeller 도입 이후 달라진 점까지 실전 절차로 정리합니다.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>flutter</category><category>performance</category><category>rendering</category><category>impeller</category></item><item><title>Cloudflare R2 vs S3 vs Firebase Storage: 월 1TB 다운로드하면 $0 vs $90 vs $108, 이그레스 비용으로 스토리지 고르기</title><link>https://effidev.dev/ko/blog/r2-vs-s3-vs-firebase-storage-egress-cost/</link><guid isPermaLink="true">https://effidev.dev/ko/blog/r2-vs-s3-vs-firebase-storage-egress-cost/</guid><description>Flutter 앱의 프로필 사진·게시물 이미지·동영상을 어디에 저장할지 고민할 때 진짜 변수는 저장 비용이 아니라 다운로드(egress) 비용이다. R2·S3·Firebase Storage의 실제 단가로 트래픽 구간별 청구서를 시뮬레이션한다.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>cloudflare</category><category>r2</category><category>s3</category><category>cost-optimization</category></item></channel></rss>