[{"data":1,"prerenderedAt":386},["ShallowReactive",2],{"\u002Fblog\u002Fcloudflare-broke-stack\u002F:ko":3,"\u002Fblog\u002Fcloudflare-broke-stack\u002F-surround:ko":283,"blog-all-posts:ko":284},{"id":4,"title":5,"author":6,"body":10,"date":265,"description":266,"extension":267,"image":268,"locale":269,"meta":270,"minRead":271,"navigation":272,"original":273,"path":274,"pinned":273,"seo":275,"source":276,"sourceUrl":23,"stem":277,"tags":278,"updated":268,"__hash__":282},"blog\u002Fblog\u002Fcloudflare-broke-stack.ko.md","2026 인디 개발 베스트 프랙티스: Cloudflare 가난뱅이 올인원 스택",{"name":7,"avatar":8},"Chen Dahuang",{"src":9,"alt":7},"\u002Favatar.jpg",{"type":11,"value":12,"toc":251},"minimark",[13,28,36,41,158,162,167,170,174,177,181,184,206,210,213,217,237,241,244],[14,15,16],"blockquote",{},[17,18,19,20,27],"p",{},"고정 글. 원문은 ",[21,22,26],"a",{"href":23,"rel":24},"https:\u002F\u002Fx.com\u002Frealchendahuang\u002Fstatus\u002F2066586160902881542",[25],"nofollow","X","에 게시되었습니다. 4만+ 조회수.",[17,29,30,31,35],{},"2026년 인디 개발 베스트 프랙티스: ",[32,33,34],"strong",{},"Cloudflare 가난뱅이 올인원 스택",".",[37,38,40],"h2",{"id":39},"기술-스택-한눈에-보기","기술 스택 한눈에 보기",[42,43,44,60],"table",{},[45,46,47],"thead",{},[48,49,50,54,57],"tr",{},[51,52,53],"th",{},"영역",[51,55,56],{},"선택",[51,58,59],{},"비용",[61,62,63,75,86,97,107,118,128,138,148],"tbody",{},[48,64,65,69,72],{},[66,67,68],"td",{},"코드 작성",[66,70,71],{},"Codex",[66,73,74],{},"구독제",[48,76,77,80,83],{},[66,78,79],{},"버전 관리",[66,81,82],{},"GitHub",[66,84,85],{},"무료",[48,87,88,91,94],{},[66,89,90],{},"결제",[66,92,93],{},"Stripe",[66,95,96],{},"건당 수수료",[48,98,99,102,105],{},[66,100,101],{},"프런트엔드",[66,103,104],{},"TanStack Start",[66,106,85],{},[48,108,109,112,115],{},[66,110,111],{},"백엔드",[66,113,114],{},"Hono + Cloudflare Workers",[66,116,117],{},"무료 할당량",[48,119,120,123,126],{},[66,121,122],{},"배포",[66,124,125],{},"Cloudflare Pages",[66,127,85],{},[48,129,130,133,136],{},[66,131,132],{},"데이터베이스",[66,134,135],{},"Cloudflare D1",[66,137,117],{},[48,139,140,143,146],{},[66,141,142],{},"파일 스토리지",[66,144,145],{},"Cloudflare R2",[66,147,117],{},[48,149,150,153,156],{},[66,151,152],{},"캐시 \u002F 설정",[66,154,155],{},"Cloudflare KV",[66,157,117],{},[37,159,161],{"id":160},"왜-이-조합인가","왜 이 조합인가",[163,164,166],"h3",{"id":165},"codex-코드를-쓰고-풀스택-개발을-해결한다","Codex: 코드를 쓰고 풀스택 개발을 해결한다",[17,168,169],{},"AI 코딩은 이미 인디 개발자의 기본 생산성 도구가 됐다. Codex의 Agent 모드는 \"요구사항 → 코드 → 테스트 → 배포\"의 파이프라인을 거의 한 순간으로 압축한다. 한 명이 팀 전체의 일을 하는 셈이다.",[163,171,173],{"id":172},"프런트엔드-tanstack-start-백엔드-hono","프런트엔드 TanStack Start + 백엔드 Hono",[17,175,176],{},"TanStack Start는 Workers 생태계와 잘 맞는 풀스택 React 프레임워크다. 백엔드는 Hono — Workers를 위해 태어난 작은 프레임워크로, 라우팅과 미들웨어, 타입 힌트 모두 쾌적하고, 용량은 작고 시작은 빠르다.",[163,178,180],{"id":179},"데이터베이스-d1-스토리지-r2-캐시-kv","데이터베이스 D1 + 스토리지 R2 + 캐시 KV",[17,182,183],{},"이 삼총사가 Cloudflare 무료 할당량의 핵심이다:",[185,186,187,194,200],"ul",{},[188,189,190,193],"li",{},[32,191,192],{},"D1",": SQLite 호환 관계형 데이터베이스. 개인 프로젝트에는 무료 할당량만으로 충분하다.",[188,195,196,199],{},[32,197,198],{},"R2",": S3 호환 객체 스토리지. 10GB 무료 스토리지에 아웃바운드(이그레스) 요금이 0원 — 이것 하나만으로 AWS를 압살한다.",[188,201,202,205],{},[32,203,204],{},"KV",": 전 세계에 분산된 키-값 스토리지. 설정, 캐시, 세션에 안성맞춤이다.",[163,207,209],{"id":208},"pages-배포-전부-무료인-인프라","Pages 배포 + 전부 무료인 인프라",[17,211,212],{},"Pages는 GitHub 저장소에 바로 연결된다. push 하면 배포되고, CDN과 HTTPS가 기본 포함이다. 도메인, DNS, CDN까지 Cloudflare에서 원스톱으로 해결된다. 무료 할당량이 제품 라인 하나를 통째로 지탱한다.",[37,214,216],{"id":215},"가난뱅이-전략의-핵심","가난뱅이 전략의 핵심",[185,218,219,225,231],{},[188,220,221,224],{},[32,222,223],{},"무료 할당량을 끝까지 긁어쓴다",": DNS, CDN, Pages, Workers, KV, D1, R2, Tunnel, AI Gateway — 무료인 건 죄다 챙긴다.",[188,226,227,230],{},[32,228,229],{},"무료로 쓸 수 있으면 돈을 안 쓴다",": 구독비는 정말 필요한 곳(Codex)에만 쓰고, 나머지는 전부 무료 인프라로 돌린다.",[188,232,233,236],{},[32,234,235],{},"한 플랫폼으로 모든 걸 처리한다",": 여러 클라우드를 오갈 필요가 없어서 운영에 드는 인지 부담이 최소화된다.",[37,238,240],{"id":239},"이런-사람에게-맞다","이런 사람에게 맞다",[17,242,243],{},"예산이 빠듯하면서 제품을 빠르게 검증하고 싶은 인디 개발자, 인프라에 힘을 쏟고 싶지 않은 AI 코딩 애호가, 그리고 \"일단 만들고 나중에 생각하자\"는 모든 프로젝트.",[17,245,246,247,35],{},"Cloudflare는 인디 개발자의 사이버 보살이다. 한 푼도 들이지 않고도 제품을 완전히 돌릴 수 있다. 자세한 내용: ",[21,248,250],{"href":249},"\u002Fblog\u002Ffree-cloudflare","무료 사용자가 Cloudflare를 끝까지 짜먹는 법",{"title":252,"searchDepth":253,"depth":253,"links":254},"",2,[255,256,263,264],{"id":39,"depth":253,"text":40},{"id":160,"depth":253,"text":161,"children":257},[258,260,261,262],{"id":165,"depth":259,"text":166},3,{"id":172,"depth":259,"text":173},{"id":179,"depth":259,"text":180},{"id":208,"depth":259,"text":209},{"id":215,"depth":253,"text":216},{"id":239,"depth":253,"text":240},"2026-06-15","인디 개발자를 위한 무료 기술 스택: 코드는 Codex, 버전 관리는 GitHub, 결제는 Stripe, 프런트엔드는 TanStack Start, 백엔드는 Hono + Workers, 데이터베이스는 D1, 스토리지는 R2, 캐시는 KV — 전부 Cloudflare 위에서 돌아간다.","md",null,"ko",{},6,true,false,"\u002Fblog\u002Fcloudflare-broke-stack",{"title":5,"description":266},"x","blog\u002Fcloudflare-broke-stack.ko",[279,280,281],"Cloudflare","인디 개발","기술 스택","DP8eAtNIETX0S5PyQb_HVN_G-MK2_7QZ_gi_jH67zv4",[268,268],[285,293,295,304,311,317,324,332,340,346,353,362,369,377],{"path":286,"title":287,"description":288,"date":289,"minRead":271,"tags":290},"\u002Fblog\u002Fagent-harness-selection","Pi Agent, OMP, Codex, ZCode를 이리저리 만져본 끝에, 내가 마지막으로 OpenCode + OpenChamber를 고른 이유","Agent Harness 선택 회고: GUI 경험, 벤더 종속, 2차 개발 자유도라는 세 가지 기준으로 Pi Agent, OMP, Codex, ZCode를 탈락시키고, 마지막으로 OpenCode 코어 + OpenChamber 인터페이스를 선택했다.","2026-08-06",[291,292],"AI Agent","도구 선택",{"path":274,"title":5,"description":266,"date":265,"minRead":271,"tags":294},[279,280,281],{"path":296,"title":297,"description":298,"date":299,"minRead":271,"tags":300},"\u002Fblog\u002Fdeepseek-api-web-search","DeepSeek API에 내장된 웹 검색 — Responses API로 공식 검색을 공짜로 쓰자","DeepSeek가 API 안에 웹 검색을 내장했다: Responses 인터페이스로 deepseek-v4-flash를 호출하고 web_search 도구만 선언하면 된다. 타사 검색 엔진 연동도, 검색 API 키도 필요 없다.","2026-08-05",[301,302,303],"DeepSeek","API","AI 도구",{"path":305,"title":306,"description":307,"date":299,"minRead":308,"tags":309},"\u002Fblog\u002Fdeepseek-v4-flash-review","DeepSeek V4 Flash 정식 버전 핸즈온: 싸고, 빠르고, 1M 컨텍스트, 내장 검색","DeepSeek V4 Flash 정식 버전을 며칠간 깊게 써본 결과: 공격적으로 싸고, 번개처럼 빠르고, 1M 컨텍스트, 공식 내장 웹 검색, 완전 오픈소스. 유일한 약점은 멀티모달 — 하지만 다른 모델을 조합하면 메울 수 있다.",7,[301,310,303],"모델 리뷰",{"path":249,"title":312,"description":313,"date":265,"minRead":314,"tags":315},"무료 사용자가 Cloudflare를 끝까지 짜먹는 법 — 무료 플랜이 실제로 어디까지 되나?","Cloudflare 무료 플랜이 개인 인터넷 인프라 전체를 지탱할 수 있다: DNS, CDN, Pages, Workers, KV, D1, R2, 이메일, Tunnel, AI Gateway 등.",8,[279,316,122],"무료 플랜",{"path":318,"title":319,"description":320,"date":321,"minRead":314,"tags":322},"\u002Fblog\u002Fmodel-harness-decoupling","순정 Harness가 곧 버전 정답은 아니다: 오픈 모델 시대에는 모델과 Harness를 따로 골라라","Claude 쓰면 Claude Code? 오픈 모델 시대에는 이 직관을 업그레이드할 때다. 순정의 강점은 진짜지만, 좋은 모델을 만드는 일과 좋은 Harness를 만드는 일은 별개의 공학이다 — 이 글은 모델과 Harness를 분리해서 선택할 수 있게 된 이유와 다섯 가지 Harness의 포지셔닝 맵을 정리한다.","2026-09-09",[291,323,292],"Harness",{"path":325,"title":326,"description":327,"date":321,"minRead":314,"tags":328},"\u002Fblog\u002Fopencode-productive-stack","안정, 빠름, 고생산성, 저렴함: 내 AI Coding 스택 완전 기록","OpenCode + OpenChamber + DeepSeek V4 Flash 구독 두 장으로 15개 프로젝트를 동시에 돌려도 쿼터는 거의 안 줄었다. 이 글은 Context 프루닝, 계층 메모리, 데스크톱 자동화, 그리고 '역시 원래 조합'이라는 선택의 교훈까지, 내 전체 설정을 모두 까보는 글이다.",[329,330,331],"OpenCode","AI 코딩","설정",{"path":333,"title":334,"description":335,"date":336,"minRead":337,"tags":338},"\u002Fblog\u002Fproduct-faxin-principle","발심의 원리: 인디 개발자는 왜 버리는 법을 배워야 하나","왜 출발하는가? 누구를 위해 출발하는가? 도대체 어떤 문제를 풀고 싶은가? 제품의 날카로움은 감히 버리는 것에서 나온다.","2026-06-20",10,[339,280],"제품 사고",{"path":341,"title":342,"description":343,"date":336,"minRead":314,"tags":344},"\u002Fblog\u002Fproduct-pain-vs-itch","사용자가 '대박'이라 해도 들뜨지 마라: 통증 포인트와 가려움 포인트","입으로 하는 좋아함은 한 푼 가치도 없다. 수요를 판단하는 기준은 딱 하나다: 사용자가 무엇을 지불할 의향이 있는가.",[339,345],"수요 판단",{"path":347,"title":348,"description":349,"date":289,"minRead":350,"tags":351},"\u002Fblog\u002Fqwen-vision-for-deepseek","DeepSeek에 멀티모달 더하기: Qwen-3.7-Flash 비전 접근법","DeepSeek V4 Flash에는 멀티모달이 없다 — 이미지 이해는 어떻게 할까? 시장을 조사해 보니 현재 가장 가성비 좋은 방법은 Qwen-3.7-Flash다: 이미지 한 장을 인식하는 비용이 거의 들지 않고, V4 Flash와 조합하면 빈틈이 메워진다.",5,[301,352,310],"멀티모달",{"path":354,"title":355,"description":356,"date":357,"minRead":358,"tags":359},"\u002Fblog\u002Fsub-store-cloudflare","프록시 구독 통합을 Cloudflare로 옮겼다","여러 프록시 서비스와 자체 노드를 하나의 구독으로 합치고, 라우팅 규칙을 서버 쪽에서 설정 — 클라이언트는 그냥 구독만 하면 된다.","2026-06-28",4,[279,360,361],"우회","오픈소스 프로젝트",{"path":363,"title":364,"description":365,"date":321,"minRead":308,"tags":366},"\u002Fblog\u002Ftui-cognitive-bandwidth","TUI는 당신의 인지 대역폭을 죽이고 있다: AI Coding의 '긱 필터'는 깨질 때가 됐다","AI Coding Agent가 앞다투어 TUI를 올리면서 인터랙션을 80년대 터미널 패러다임으로 되밀어 놓고는 '몰입형', '프로그래머 존중'이라고 미화한다. 이 글은 TUI가 인지 대역폭을 체계적으로 떨어뜨리는 세 가지 메커니즘과, Web UI가 왜 정답인지를 해부한다.",[330,367,368],"인터랙션 디자인","에세이",{"path":370,"title":371,"description":372,"date":373,"minRead":271,"tags":374},"\u002Fblog\u002Fvalue-not-external","가치가 있는지 논하는 것 자체가 가치가 없다","우리의 가치는 누구도 정의하지 않는다. AI 시대에 인간은 도대체 어떻게 자신을 이해해야 하는가?","2026-06-18",[375,376],"AI 사고","인문 에세이",{"path":378,"title":379,"description":380,"date":381,"minRead":382,"tags":383},"\u002Fblog\u002Fx-growth-1000-followers","하루 조금 넘게 팔로워 1000+ 달성 — 내가 한 일","6월에 X 계정을 진지하게 운영해 하루 조금 넘게 팔로워 1000+를 달성했다. 이 글은 내가 한 일과 받은 피드백을 기록한다.","2026-06-16",12,[384,385],"X 운영","콘텐츠 성장",1789752317423]