服務頁教材合約
核心原則
服務頁教材合約的責任是把「某個服務是什麼」寫成「讀者能學會什麼」。服務頁可以討論 PostgreSQL、SQLite、MongoDB、Redis、Kafka、Kubernetes、Okta 或 k6,但文章目標應是教讀者理解該服務承擔的系統責任、服務對象、操作語意、失敗訊號與替代邊界。
服務頁教材合約把 vendor profile 升級成可教學的單篇文章。Vendor profile 描述功能、價格、適用場景與競品;服務頁教材還要讓讀者取得一個可遷移的心智模型,讀完後能把同一套判讀方式帶到相鄰服務。
這份合約約束的是教學功能,不約束章節模板。Go 目錄提供的是討論細節、漸進教學、操作判讀與邊界意識的成熟度參照;Backend 服務頁要達到同等教學深度,但 SQLite、MongoDB、PostgreSQL、Redis、Kafka 或 Okta 的章節順序可以完全不同。
WARP 分析摘要
| 面向 | 內容 |
|---|---|
| Anchor | 這次決策錨點從「服務清單是否完整」上移到「Backend 服務頁是否已達教材層級」。 |
| Step 0 | 現有資料足以判斷:Backend vendor index 已完整,但服務頁正文成熟度不均;Go 目錄提供單篇教材成熟度參照。 |
| Widen | 選項有三種:統一章節模板、完全自由撰寫、定義教學功能合約。第三種能保護教學深度,也能保留服務差異。 |
| Reality Test | 抽樣 Redis、Kafka、Kubernetes、Okta 接近成熟教材;PostgreSQL、SQLite、MongoDB、k6 需要依服務對象重設教學路線。 |
| Prepare | 若缺少合約就批量補正文,服務頁容易回到產品介紹、選型摘要或容量分析,教學完整度會持續漂移。 |
反向驗證:章節統一會傷害服務頁。Go 目錄的價值是提供成熟教材的功能檢查,Backend 服務頁仍依自己的服務責任、讀者對象、案例壓力與操作比例安排標題。
情境
Backend 已完成總體教學設計、checkout episode map、vendor index audit 與各分類服務順序同步。下一步評估時,讀者提出更高標準:每個服務的探討內容與教學量級,應接近一篇成熟技術教材,讓選型摘要與 vendor backlog 成為教材材料。
這個標準指向教學深度,而不是統一章節。SQLite 服務的讀者可能在意 embedded state、local-first、測試資料與低操作成本;MongoDB 服務的讀者可能在意 document shape、schema governance、index 與 transaction boundary。兩篇都要達到成熟教材深度,但學習路線應由服務對象決定。
這個提醒揭露了三種不同完成度:
| 完成度 | 訊號 | 風險 |
|---|---|---|
| 索引完成 | 服務存在於 vendors/_index.md,有類型與撰寫批次 | 只證明有入口,尚未形成教材 |
| 大綱完成 | 服務頁有定位、目標、操作、進階、排錯、案例與路由骨架 | 可以開寫,但仍需檢查段落深度 |
| 教材完成 | 每段能教讀者判讀服務責任、操作訊號、替代邊界與失敗模式 | 可作為長期教材單篇交付 |
服務頁若只停在第一層,讀者會看到很多服務名稱;若能到第三層,讀者會理解服務能力如何在 production system 中承擔責任。
服務頁教材功能合約
教學功能先於章節格式
服務頁教材合約約束的是功能而不是格式。成熟服務頁要具備學習目標、核心概念、操作形狀、判讀訊號、替代邊界、案例回寫與下一步路由;這些功能可以出現在不同標題、不同順序與不同敘事密度中。
| 教學功能 | 可變形態 |
|---|---|
| 學習目標 | 可以是「本章目標」、開場學習成果、或讀法段 |
| 核心概念 | 可以是服務定位、服務對象、資料形狀、流量形狀或控制面責任 |
| 操作形狀 | 可以是 CLI / API、schema 設計、工作流、平台操作或治理流程 |
| 判讀訊號 | 可以是 metrics、logs、query、事件、audit trail、cost signal 或人工流程訊號 |
| 替代邊界 | 可以是同類服務比較、相鄰分類路由、或規模 / 組織能力分界 |
| 案例回寫 | 可以是公開案例、反例、規模對照或 checkout episode |
章節名稱要服務該服務的學習路線。SQLite 可以先談「正式狀態能否在單機成立」,MongoDB 可以先談「document shape 與 schema governance」,PostgreSQL 可以先談「SQL baseline 與 transaction」,這三篇不應被壓成同一套段落順序。
學習目標要先於服務介紹
服務頁開頭要先說讀者讀完後能做什麼判斷。產品名稱與服務定位很重要,但學習目標決定文章是否是教材。
成熟服務頁至少要回答:
- 讀者能辨識這個服務承擔哪類 backend 責任。
- 讀者能知道這個服務解哪種壓力,承擔哪種操作成本。
- 讀者能用訊號判斷服務健康、退化或失配。
- 讀者能知道何時改走相鄰服務。
概念段要建立服務專屬心智模型
概念段的責任是建立讀者能帶走的模型。Redis 頁不只教 Redis command,還要教「可重建副本如何保護 origin」;Kafka 頁不只教 topic,還要教「event log、consumer progress 與 replay window」;Kubernetes 頁不只教 YAML,還要教「workload lifecycle、readiness、traffic 與 rollback contract」。
服務專屬心智模型要貼近服務對象。SQLite 面向小型正式狀態、local data、edge 與測試資料;MongoDB 面向 document model、聚合查詢、索引與 schema governance;PostgreSQL 面向 SQL baseline、transaction、query boundary 與 schema evolution。三者同屬 database,教學路線仍可完全不同。
操作段要服務判讀
操作段的責任是讓讀者理解日常決策形狀。指令、設定、console 或 CLI 範例可以存在,但每個例子都要回到訊號、風險或下一步判斷。
較穩定的操作段功能包含:
| 操作面 | 教學責任 |
|---|---|
| 最短判讀路徑 | 讓讀者快速判斷是否該考慮這個服務 |
| 日常操作形狀 | 說明服務平常怎麼被維護、監控與調整 |
| 失敗快速判讀 | 說明異常發生時先看哪些訊號 |
| Evidence route | 說明哪些結果要交給 observability / gate |
替代邊界要讓服務回到能力地圖
服務頁要寫「何時改走其他服務」。這段把服務放回能力地圖:正式狀態回 database、可重建副本回 cache、durable replay 回 queue、traffic lifecycle 回 deployment、release evidence 回 reliability、identity control 回 security、協作交接回 incident。
案例回寫要提供情境壓力
案例回寫的責任是讓服務頁有真實壓力來源。案例要提供流量形狀、資料形狀、組織能力、失敗代價或回退路徑;案例只停在「某公司使用 X」時,對教材幫助有限。
沒這樣做的麻煩
服務頁會變成產品百科
產品百科容易累積功能、版本、價格與競品資訊,讀者可以查到很多答案,但仍難以建立系統責任模型。服務頁教材合約要求每個資訊都回到教學責任。
統一模板會抹平服務對象
統一模板會把同分類服務壓成相同讀法,讓服務對象消失。SQLite、MongoDB、DynamoDB、PostgreSQL 都在 database 分類,但它們回答的讀者問題不同;用同一套章節順序處理,會讓 embedded state、document model、access pattern 與 SQL transaction 的差異變成表格欄位,而不是學習路線。
內容會被選型語氣帶走
選型語氣會問「什麼情境選 X」,但教材還要問「X 在系統中承擔什麼責任」。只寫選型,讀者能做局部選擇;補上教材合約,讀者能理解整個 backend 能力地圖。
大量服務頁會產生完成錯覺
服務頁數量增加會帶來覆蓋感,但覆蓋不等於完成。125 個服務頁如果只有入口與摘要,仍是素材庫;每篇具備學習目標、操作判讀與案例回寫後,才是教材。
跟其他抽象層原則的關係
| 原則 | 關係 |
|---|---|
| #130 教材目標先於決策框架 | #130 定義教材的上位目標;本卡把上位目標落到「單篇服務頁」的教學功能合約。 |
| #131 教材完整性要用讀者旅程驗證 | #131 用讀者旅程檢查系列完整性;本卡用單篇教材合約檢查服務頁是否能獨立教會一個服務能力。 |
| #132 貫穿式案例是服務教材的教學骨架 | #132 提供跨模組案例主線;本卡要求每篇服務頁能回寫至少一段 case route 或明確標示案例缺口。 |
| #97 Metadata surface 要納入寫作 review 範圍 | 服務頁教材合約也要檢查 title、description、heading、index entry 與下一步路由,避免正文與入口語意不一致。 |
| #126 寫作 review 是多軸完整性 | 服務頁 review 要同時看教材目標、服務責任、操作訊號、案例回寫、metadata surface 與跨模組路由。 |
| #122 Cadence 同質化是模板的隱形維度 | 本卡補服務頁的結構層防護:教學功能要完整,章節順序要依服務對象與責任形狀調整,避免批量服務頁同質化。 |
判讀徵兆
| 訊號 | 該做的事 |
|---|---|
| 服務頁只有定位、適用場景與競品比較 | 補本章目標、操作形狀、排錯判讀與案例回寫 |
| 服務頁內容很豐富,但缺少清楚學習路線 | 依服務對象重排 heading |
| 排錯段只有常見錯誤列表 | 改成「訊號 → 判讀 → 下一步路由」 |
| 案例段只列公司名稱 | 補案例提供的壓力、失敗代價或回退條件 |
| 服務頁讀完仍不知道下一步讀哪裡 | 補上游概念、平行服務、下游 artifact 與 case route |
| 批量服務頁都套同一標題但失去分類語言 | 回到分類責任調整段落順序 |
| 同分類服務頁看起來像同一篇文章換名詞 | 重新辨識每個服務的讀者對象、服務責任與操作語境 |
核心原則:服務頁完成的標準是讀者能透過單篇文章學會一個服務能力。成熟服務頁要同時提供學習目標、概念模型、操作判讀、替代邊界、案例回寫與下一步路由。