[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-solana-dapp-outgrew-free-rpc-production-zh":3,"article-related-solana-dapp-outgrew-free-rpc-production-zh":30,"series-tools-ac96be67-0ecc-4c8e-aa7e-d6903c089e23":80},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":22,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":29},"ac96be67-0ecc-4c8e-aa7e-d6903c089e23","solana-dapp-outgrew-free-rpc-production-zh","Solana dapp 何時該換 RPC","\u003Cp data-speakable=\"summary\">這篇在講 \u003Ca href=\"\u002Ftag\u002Fsolana\">Solana\u003C\u002Fa> dapp 何時該從免費 RPC 換成專用 RPC，還附可直接抄的切換模板。\u003C\u002Fp>\u003Cp>我看過太多 Solana 小專案死在同一個地方：前面 demo 很順，免費 RPC 一接就跑，交易也能送，大家都以為自己很會。結果一有真使用者進來，延遲、timeout、confirmation 卡住，整個體驗像在踩爛泥。我最煩的不是程式碼壞掉，是你明明以為自己在做產品，實際上只是把流量丟進一個本來就不想扛你的免費端點。這次讓我把這件事講清楚的，是 Insider Monkey 的這篇 \u003Ca href=\"https:\u002F\u002Fwww.insidermonkey.com\u002Fblog\u002Ffrom-hobby-project-to-production-how-one-developer-scaled-their-dapp-on-solana-1770388\u002F\">From Hobby Project to Production: How One Developer Scaled Their Dapp on Solana\u003C\u002Fa>。它不是技術白皮書，但它把那個尷尬時刻講得很準：專案從玩具變成產品，第一個要補的常常不是功能，是基礎設施。\u003C\u002Fp>\u003Cp>這篇原文沒有提供 star、bookmark 或閱讀數，我就不亂掰。它真正有價值的地方，是把「免費 RPC 夠用」和「免費 RPC 會開始騙你」這條線畫出來。這種故事我很吃，因為我自己也踩過。你以為你在省錢，其實是在把故障時間往後延，等到用戶最多、最難看的時候一起爆。\u003C\u002Fp>\u003Ch2>免費 RPC 不是架構，是試用期\u003C\u002Fh2>\u003Cblockquote>“For a hobby project making a few test transactions per day, it was perfect. No cost, no complexity, no friction.”\u003C\u002Fblockquote>\u003Cp>翻譯一下就是：免費 RPC 對學習、測試、玩票很舒服，但它不是拿來當產品骨架的。一天幾筆 test transaction，不叫負載，那只是熱身。你在 tutorial 階段覺得一切都很順，很多時候不是因為架構好，是因為根本沒人用。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780015709942-phr6.png\" alt=\"Solana dapp 何時該換 RPC\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我之前接一個 bot，前期也是這樣。免費、方便、免設定，看起來超省事。可是一旦有幾個人同時送交易，問題就開始冒出來。不是你的 code 突然變爛，是你把 app 建在共享資源上，然後還期待它像專屬服務一樣穩。這種期待本身就很不合理。\u003C\u002Fp>\u003Cp>實操上，我會把免費 RPC 的定位寫死：只給 local dev、內部測試、demo。只要你開始在意 confirmation time、吞吐量、或某個 action 不能失敗，免費 tier 就不該再被算進正式架構。它可以是起點，但不要騙自己它是終點。\u003C\u002Fp>\u003Cul>\u003Cli>免費 RPC 只拿來開發和內測。\u003C\u002Fli>\u003Cli>從第一天就記 request volume，不要等出事才看。\u003C\u002Fli>\u003Cli>先寫下「什麼情況算用戶看得到失敗」，再決定何時升級。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>上線那一刻，端點會直接講真話\u003C\u002Fh2>\u003Cblockquote>“Within the first hour, transactions started timing out.”\u003C\u002Fblockquote>\u003Cp>這句很刺耳，因為它通常是真的。實驗室裡看起來沒事，不代表上線後沒事。你在 staging 跑單人流程，RPC 看起來像沒脾氣；一旦真使用者同時進來，排隊、限流、延遲一起出現，app 就開始像壞掉。其實壞的常常不是 app，是你後面那條路。\u003C\u002Fp>\u003Cp>我最常看到的錯誤，是團隊先懷疑自己的商業邏輯、wallet flow、簽章流程、序列化，\u003Ca href=\"\u002Fnews\u002Fwhy-solana-is-the-top-blockchain-for-developers-today-zh\">什麼\u003C\u002Fa>都查一輪，最後才承認 upstream 有問題。這很人性，我也幹過。因為我們總想先怪自己，覺得外部服務應該沒那麼脆弱。結果現實就是，shared endpoint 在高峰時段就是會抖。\u003C\u002Fp>\u003Cp>實操寫法很簡單：不要只測 sequential request，要測 concurrent request。你要看 timeout rate、dropped submission、confirmation lag。尤其是交易、swap、bot 這類時間敏感功能，先做 burst test，再放真人上去。你要的是在 staging 把爛事逼出來，不是等到第一批用戶幫你找。\u003C\u002Fp>\u003Cul>\u003Cli>上線前先做並發測試，不要只跑單筆成功案例。\u003C\u002Fli>\u003Cli>把 timeout rate 當成一級指標，不是附帶資訊。\u003C\u002Fli>\u003Cli>Debug 時把 RPC 症狀和 app bug 分開記錄。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>專用 RPC 很無聊，但無聊就是你要的\u003C\u002Fh2>\u003Cblockquote>“The setup took 20 minutes. She updated her endpoint URL, redeployed her bot, and invited her users back.”\u003C\u002Fblockquote>\u003Cp>這段我很喜歡，因為它完全不浪漫。沒有什麼神奇遷移、沒有大改 codebase，就是換 endpoint、redeploy、回來繼續做事。這才是對的。基礎設施的升級如果搞得像大型工程，通常只有兩種可能：你太晚換，或你一開始就選錯方向。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780015712580-o25z.png\" alt=\"Solana dapp 何時該換 RPC\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>原文把專用 Solana infrastructure 講成把 hobby script 變成 production system 的那個開關，我認同。因為當用戶開始期待交易真的落地，你就不是在寫程式而已，你是在跑服務。專用 RPC 提供的是優先權、較穩的 uptime 預期、還有比較不會被別人流量拖下水的空間。白話一點，就是買可預測性。\u003C\u002Fp>\u003Cp>我自己看過太多團隊對月費很敏感，對故障成本卻很鈍。每次一看到 dedicated RPC 的帳單就皺眉，但如果那個帳單能換掉 support ticket、用戶流失、和一堆「我剛剛明明有按送出」的抱怨，那其實不貴。帳單是明的，損失是慢慢流血。\u003C\u002Fp>\u003Cp>實操上，我會建議在正式上線前就選好專用 provider，切換方式盡量只靠 environment variable。不要把 endpoint 寫死在 code 裡，這種事很容易把切換搞成一場災難。如果供應商有 staging endpoint，就先拿 staging 驗證 production config，再做一次乾淨的 redeploy。\u003C\u002Fp>\u003Cp>如果你要看 Solana 官方脈絡，可以先從 \u003Ca href=\"https:\u002F\u002Fsolana.com\u002F\">Solana\u003C\u002Fa> 的文件開始，再對照像 \u003Ca href=\"https:\u002F\u002Fwww.helius.dev\u002F\">Helius\u003C\u002Fa> 這類 RPC provider 的說明。重點不是我推薦哪一家，而是你要先承認 RPC 不是免費水電，它是你產品的一個依賴。\u003C\u002Fp>\u003Ch2>基礎設施不是背景音，它就是產品的一部分\u003C\u002Fh2>\u003Cblockquote>“Infrastructure is part of your product.”\u003C\u002Fblockquote>\u003Cp>這句我想直接貼在很多團隊的牆上。因為太多人以為產品是 UI、是功能列表、是交易流程圖，結果把基礎設施當成背景雜訊。問題是，使用者根本不看你的架構圖，他只感受到交易有沒有成功、swap 有沒有卡住、整個 app 穩不穩。\u003C\u002Fp>\u003Cp>也就是說，可靠性本身就是功能。如果你的 app 理論上很快，實際上卻常常失敗，那使用者體感就是爛。更糟的是，很多 bot 或 dapp 的商業模式還會偷偷依賴「網路平靜」這件事，一旦流量一上來，整個模型就露餡。那不是產品，那只是運氣。\u003C\u002Fp>\u003Cp>我看過團隊花很多時間修 UI 邊距、動畫、顏色，後端 request 卻一直被 throttling，這種落差很常見。前台看起來像 ready，log 也寫得像沒事，結果一有 spike 就整個垮掉。這篇原文最有用的提醒就是：不要把 delivery quality 和 product quality 分開看。它們本來就是同一件事。\u003C\u002Fp>\u003Cp>實操寫法：把你的基礎設施假設寫進需求文件。像是「需要 sub-second confirmation」、「可以接受 retry」、「可以接受 2% timeout」這種話要明講。然後把每個假設對應到 provider 能不能做到。做不到，就別說功能已完成；最多只能說 demo 能跑。\u003C\u002Fp>\u003Ch2>付錢買穩定，比付代價救火便宜\u003C\u002Fh2>\u003Cblockquote>“The $100\u002Fmonth she was spending on a dedicated node was nothing compared to the cost of losing users due to failed transactions.”\u003C\u002Fblockquote>\u003Cp>這段就是整篇最現實的地方。免費看起來很優雅，付費看起來像提早花錢，但只要你真的上線，這個帳很快就會算回來。因為使用者信任比月費貴太多了，而且它不是一次性成本，是會慢慢壞掉的成本。\u003C\u002Fp>\u003Cp>翻譯一下就是：你判斷 infra 花費，不能拿「以前都免費」當基準，要拿「失敗一次會損失多少」當基準。對任何涉及付款、swap、交易的產品來說，延遲和失敗都會直接打到信任。support time、退款、流失、重試，這些都不是抽象概念，是你真的會付出去的代價。\u003C\u002Fp>\u003Cp>我會建議團隊自己算一遍：一個失敗 action 的成本是多少？如果不精準，就抓區間。再拿這個數字去對照專用 RPC 的月費。多半會發現，所謂昂貴的方案其實便宜得離譜。尤其是你如果做的是金融相關功能，reliability spend 應該是產品預算，不是 ops 預算裡可有可無的一項。\u003C\u002Fp>\u003Cul>\u003Cli>先估一個失敗交易會帶來多少 support 和 churn 成本。\u003C\u002Fli>\u003Cli>把這個成本和月費直接對比。\u003C\u002Fli>\u003Cli>把 reliability 花費從「維運」升級成「產品預算」。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>免費 tier 可以留著，但不要讓它騙你\u003C\u002Fh2>\u003Cblockquote>“Free RPC endpoints are great for learning and testing. But the moment you have real users, real transactions, and real expectations, you need infrastructure that can scale with you.”\u003C\u002Fblockquote>\u003Cp>這句我同意。免費 tier 不是壞東西，我自己還是會拿來探索 \u003Ca href=\"\u002Ftag\u002Fapi\">API\u003C\u002Fa>、驗證鏈上流程、做 proof of concept。問題不在免費，而在你把「暫時能用」誤認成「可以承擔真實流量」。這種誤判很常見，而且很貴。\u003C\u002Fp>\u003Cp>白話講，學習和生產之間有一條很實際的線，不是哲學問題。當你不能再忍受 timing variance、dropped request、shared rate surprise，線就過了。過了之後，每一個 shortcut 都開始反咬你。你\u003Ca href=\"\u002Fnews\u002Ftensormesh-raises-20m-cut-llm-memory-waste-zh\">省下\u003C\u002Fa>來的不是成本，是把風險往後拖。\u003C\u002Fp>\u003Cp>實操上，我會先定一個 migration trigger。比如：DAU 到多少、每小時交易量到多少、timeout rate 超過多少，就切專用 RPC。這樣你就不是靠感覺做決策，而是靠規則。很多團隊會卡在「再看看」，最後就看進了事故單。\u003C\u002Fp>\u003Ch2>可抄的模板\u003C\u002Fh2>\u003Cpre>\u003Ccode># Solana dapp RPC 升級模板（可直接貼到團隊文件）\n\n## 目標\n把 dapp 從免費 public RPC 遷移到專用 RPC，確保上線後的交易確認、timeout 率、和 support 成本都可控。\n\n## 觸發條件\n只要符合任一條，就啟動切換：\n- 開始有真實使用者下單、swap、或送交易\n- timeout rate 連續 2 天高於可接受值\n- 使用者開始回報「送出但沒反應」\n- 交易延遲影響產品體驗或收入\n\n## 上線前檢查\n- [ ] RPC endpoint 改成 environment variable\n- [ ] staging 已驗證新 provider\n- [ ] 已做 concurrent request 測試\n- [ ] 已記錄 timeout \u002F dropped request \u002F confirmation latency\n- [ ] 已準備回滾到舊 endpoint 的方案\n\n## 切換步驟\n1. 選定專用 RPC provider\n2. 先在 staging 更新 endpoint\n3. 跑 10-30 分鐘並發測試\n4. 確認交易建立、送出、確認都正常\n5. 切 production traffic\n6. 觀察 24 小時 metrics\n7. 若異常，立刻回滾到舊設定\n\n## 團隊說法\n免費 RPC 是拿來學習的。\n專用 RPC 是拿來服務使用者的。\n只要產品開始依賴穩定性，RPC 就不是背景雜訊，而是產品的一部分。\n\n## 可直接貼的 rollout note\n我們要把 Solana dapp 從免費 public RPC 切到專用 RPC，原因是 production traffic 需要可預測的 confirmation、較低的 timeout 風險，以及可追蹤的支援能力。這次切換會透過 environment variable 控制，方便回滾與驗證。\n\n## Metrics\n- timeout rate\n- dropped request rate\n- confirmation latency\n- failed user actions\n- support tickets related to transaction issues\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>如果是我自己寫內部 playbook，我會就用這種語氣。不要裝得很偉大，直接講清楚什麼時候換、\u003Ca href=\"\u002Fnews\u002Fhow-to-use-claude-4-8-models-in-python-zh\">怎麼\u003C\u002Fa>測、成功長什麼樣子。這篇原文最有用的地方，也正是它把「之後再說」變成一個可以執行的切換決策。\u003C\u002Fp>\u003Cp>來源致謝：原始故事來自 \u003Ca href=\"https:\u002F\u002Fwww.insidermonkey.com\u002Fblog\u002Ffrom-hobby-project-to-production-how-one-developer-scaled-their-dapp-on-solana-1770388\u002F\">Insider Monkey\u003C\u002Fa>；我這篇的拆解是原文觀點加上我自己對 RPC-backed apps 和 production cutover 的實務整理。Solana 官方文件可參考 \u003Ca href=\"https:\u002F\u002Fsolana.com\u002F\">Solana\u003C\u002Fa>，RPC provider 範例可看 \u003Ca href=\"https:\u002F\u002Fwww.helius.dev\u002F\">Helius\u003C\u002Fa>。\u003C\u002Fp>","把 Solana 小工具升級成正式產品時，免費 RPC 何時該退場、怎麼切到專用 RPC，以及一份可直接複製的 rollout 模板。","www.insidermonkey.com","https:\u002F\u002Fwww.insidermonkey.com\u002Fblog\u002Ffrom-hobby-project-to-production-how-one-developer-scaled-their-dapp-on-solana-1770388\u002F",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780015709942-phr6.png","tools","zh","3809e553-dafa-4941-b5e6-a71b53e2b7f3",[17,18,19,20,21],"Solana","RPC","production","dapp","infrastructure",[23,24,25],"免費 RPC 適合學習與測試，不適合承擔真實使用者流量。","一旦出現 timeout、延遲或失敗交易，就該把 RPC 當成產品依賴來管理。","切換到專用 RPC 不需要大改架構，重點是用 environment variable、並發測試和明確的升級門檻。",2,"2026-05-29T00:47:59.124242+00:00","2026-05-29T00:47:59.117+00:00","c3c88dd2-a940-438a-b359-0e5a24562273",{"tags":31,"relatedLang":39,"relatedPosts":43},[32,34,36,37,38],{"name":17,"slug":33},"solana",{"name":18,"slug":35},"rpc",{"name":20,"slug":20},{"name":19,"slug":19},{"name":21,"slug":21},{"id":15,"slug":40,"title":41,"language":42},"solana-dapp-outgrew-free-rpc-production-en","How a Solana dapp outgrew free RPC","en",[44,50,56,62,68,74],{"id":45,"slug":46,"title":47,"cover_image":48,"image_url":48,"created_at":49,"category":13},"5656a6ab-9e07-41be-9cea-3440fb8846e2","nvidia-lg-ai-collaboration-playbook-zh","Nvidia 和 LG 把 AI 合作變成模板","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781056994999-8eng.png","2026-06-10T02:02:46.590133+00:00",{"id":51,"slug":52,"title":53,"cover_image":54,"image_url":54,"created_at":55,"category":13},"e48be66d-d7de-419e-b5fd-805f0784ef15","ollama-best-free-ai-path-2026-zh","Ollama 是 2026 年真正適合工作的免費 AI 路徑","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781056077878-11pc.png","2026-06-10T01:47:24.632993+00:00",{"id":57,"slug":58,"title":59,"cover_image":60,"image_url":60,"created_at":61,"category":13},"9b53427c-8c2a-4960-a773-f14d4528caae","awesome-production-ml-turns-chaos-into-stack-zh","這份 MLOps 清單把混亂拆成堆疊","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781055220958-dmar.png","2026-06-10T01:33:14.850634+00:00",{"id":63,"slug":64,"title":65,"cover_image":66,"image_url":66,"created_at":67,"category":13},"d5af1522-28aa-4cfb-8779-1ecf168bc0b5","bentoml-turns-model-serving-into-python-apis-zh","BentoML 把模型服務變成 Python API","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781054310299-c1gm.png","2026-06-10T01:17:56.193093+00:00",{"id":69,"slug":70,"title":71,"cover_image":72,"image_url":72,"created_at":73,"category":13},"63d8b456-ad6b-475e-86e9-d4677ca226aa","magenta-realtime-2-score-inside-daw-zh","Magenta RealTime 2 讓你在 DAW 裡即時改曲","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781046204038-8tox.png","2026-06-09T23:02:55.9651+00:00",{"id":75,"slug":76,"title":77,"cover_image":78,"image_url":78,"created_at":79,"category":13},"f60261ff-a42e-4cfb-9f90-97785e633289","open-source-ai-tools-beat-claude-paid-tiers-zh","開源 AI 工具在價值上已經贏過 Claude 付費方案","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781045266035-on7t.png","2026-06-09T22:47:20.195939+00:00",[81,86,91,96,101,106,111,116,121,126],{"id":82,"slug":83,"title":84,"created_at":85},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":87,"slug":88,"title":89,"created_at":90},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":92,"slug":93,"title":94,"created_at":95},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":97,"slug":98,"title":99,"created_at":100},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":102,"slug":103,"title":104,"created_at":105},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":107,"slug":108,"title":109,"created_at":110},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":112,"slug":113,"title":114,"created_at":115},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":117,"slug":118,"title":119,"created_at":120},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":122,"slug":123,"title":124,"created_at":125},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00",{"id":127,"slug":128,"title":129,"created_at":130},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]