"Graphql"
- GraphQL Schema 演進:versionless 的紀律代價
只加不改、deprecation 標注、nullable 預設怎麼共同取代版本號 — 以及每個紀律各自的隱藏帳單
- GraphQL 執行成本與攻擊面
resolver 執行模型讓請求成本不再是常數 — N+1 的基礎設施化、成本計點限流、introspection 偵察、persisted queries 的收斂路線
- 公開 API 的 GraphQL 進退
GitHub 雙軌、Shopify all-in、與撤退案例 — 同一技術不同結局的情境變數、GraphQL 的適用邊界
- 11.C18 GitHub:採用 GraphQL 的可量化動機
REST 佔資料庫層 60% 請求、over/under-fetching 並存的重構動機;什麼規模的痛才值得換風格的錨點
- 11.C19 GitHub:GraphQL point system 成本計點限流
GraphQL 打破 per-request 限流假設、平台被迫發明查詢成本模型、加 node 上限雙層防線
- 11.C20 GitHub:REST 與 GraphQL 雙軌並行的十年穩態
2016 採用者的長期終點是共存而非取代、功能覆蓋不對等被官方明文承認
- 11.C21 Shopify:宣告 GraphQL 為唯一 API、REST 轉 legacy
跟共存路線相反的策略極端:用新功能只上 GraphQL 製造遷移壓力、配套降成本加倍配額
- 11.C22 Matt Bessey:六年 GraphQL 老手的撤退清單(反例)
反例:授權下推到 field、成本不可預測、解析層攻擊面的執行期代價清單、附撤退判準
- 11.C23 Echobind:從 GraphQL 撤到 tRPC 的量化帳(反例)
反例:五層重複宣告與三層 codegen 拖垮 DX 的量化紀錄、同時自列 tRPC 的適用前提
- 11.C24 DataLoader 譜系:N+1 的官方解法變成基礎設施
resolver-per-field 讓 N+1 從偶發變預設、官方生態把 batching 做成基礎設施而非優化技巧
- 11.C25 HackerOne:introspection 列舉出未授權的 CreateAdminUser
introspection 作為攻擊面偵察工具的實證:schema 自我揭露讓隱藏 mutation 免 fuzzing 直接可見
- 11.C26 GraphQL 官方:versionless API 與 nullable-by-default
no-versioning 的成本轉嫁鏈:只加不改、deprecation、nullable 預設三個紀律換掉版本號
- 11.C27 WunderGraph:GraphQL 不該直接暴露在公網
介於全開與撤退之間的第三條路:GraphQL 當 server-side 查詢語言、對外只開 persisted operations;vendor 立場需標明