跳至主要內容

架構師設計工作坊 — PCA 13 步驟實戰

這是一份為 Professional Cloud Architect 認證設計的動手式工作坊。挑一個虛構的業務情境,跟著 13 個步驟從商業需求、服務拆分、儲存選型、網路、可靠性、災難復原走到安全與成本—把架構思考的流程練成肌肉記憶。草稿會嘗試自動儲存在此瀏覽器,請查看下方儲存狀態;也能隨時下載 Markdown 備份。這份工作坊草稿不會同步到帳號。

自評紀錄載入後顯示 建議 60–90 分鐘 原創教材
先看範例假設與練習方式

登雲書店是虛構案例,流量、容量與恢復時間都是待驗證的練習假設。先寫需求與替代方案,再選產品;小團隊可從模組化應用開始,不必把每個邏輯模組拆成獨立服務。

為練習故障邊界,範例以 asia-east1 的 GKE Standard 與 Cloud SQL 區內 HA 為其中一個方案,跨區 DR 另在第 12 步設計。這不是低流量網站的預設建議;可另以 Cloud Run 等方案比較維運、可靠性與成本。

各步填完後展開「設計自查與官方參考」,檢查假設、限制與可驗證的證據,再決定是否自評完成。成本表需帶入查價日期與來源;範例不提供報價,也不會代你建立雲端資源。

產品說明查證日期:2026-10-20。練習題與設計取捨為本站原創整理。

選擇案例情境

挑一個你覺得好發揮的情境,整份工作坊都會圍繞它展開。三個都是虛構案例、歡迎改寫。各步驟「走一遍範例」裡的登雲書店是簡化版,數字與人物設定和「PCA 雲端架構師之旅」系列文不同。

想用考試級 case 練習?試試 PCA 案例研究庫 ,挑一個現行案例當作 workbook 的情境。

STEP 01 設計主題 · 商業需求分析

定義案例情境

學習目標

選一個貼近生活的營運場景,用三段文字把業務範圍、使用者組成與核心功能寫清楚,讓後續所有設計決策都能回到這份情境文件作依據。

思考提示
  • 這個系統要解決誰的哪個問題?業務目標用一句話講完是什麼?
  • 主要的使用者角色有哪些?他們之間會怎麼互動?
  • 需要哪些不可或缺的核心功能?排除哪些周邊功能先不處理?
  • 成功長什麼樣子?用一個 KPI 或可量化指標描述。
  • 目前是全新系統、還是要從傳統地端搬到雲端?這會決定你是綠地還是棕地設計。
走一遍範例(登雲書店簡化版)

以登雲書店為例:這是一個線上電商平台,讓讀者瀏覽書籍、加入購物車、結帳並追蹤訂單;核心角色是「讀者」與「書店營運人員」;目標是以穩定、低維運成本支撐每日約三萬筆瀏覽與兩千筆訂單。

你的答案

0 字 建議至少 120 字
0 字 建議至少 60 字
0 字 建議至少 40 字
設計自查與官方參考(3 項)

檢查你的設計

  • 業務目標、範圍外項目與三個核心使用情境是否寫清楚?
  • 流量、資料量與成長率是否標示為已知資料或待驗證假設,而非把每日訂單數當作尖峰 QPS?
  • 能否指出哪個角色負責確認需求,以及哪一項需求變動會迫使架構重選?

這些問題協助你找出缺口,不會自動判定答案正確或記錄另一份分數。

官方延伸閱讀

草稿儲存與備份 ↑

STEP 02 設計主題 · 商業需求分析

描繪 User Personas

學習目標

把抽象的「使用者」具體化為兩個帶有個性、工作情境與痛點的 Persona,避免設計時只想到 happy path。

思考提示
  • 這位使用者一天的流程長什麼樣子?他最常在什麼時間、從哪個裝置進來?
  • 他最大的痛點是什麼?過去用類似系統時卡在哪裡?
  • 哪些功能對他來說是「不用等就要有」、哪些是「有更好」?
  • 他的技術熟悉度?需要為他設計多少學習曲線?
  • 如果系統只能保證對一個 Persona 好用,你會先保誰?
走一遍範例(登雲書店簡化版)

登雲書店 Persona A — 小陳,35 歲上班族,每週通勤時滑手機找書,最在意搜尋速度與推薦精準度;Persona B — 書店營運助理小葉,每天用後台批次上架新書,最怕圖檔上傳與庫存同步出錯。

你的答案

0 字 建議至少 100 字
0 字 建議至少 100 字
設計自查與官方參考(3 項)

檢查你的設計

  • 兩個角色的核心任務、裝置與使用限制是否有差異,而不只是名字不同?
  • 每個痛點是否連到一個可觀察的行為或可驗證的需求?
  • 是否納入網路慢、操作中斷或需要無障礙協助的情境?

這些問題協助你找出缺口,不會自動判定答案正確或記錄另一份分數。

官方延伸閱讀

草稿儲存與備份 ↑

STEP 03 設計主題 · 商業需求分析

撰寫 User Stories

學習目標

把 Persona 的需求拆成 3 個「身為 X,我想要 Y,以便 Z」格式的故事,讓每個故事都可以轉成一個測試情境。

思考提示
  • 每個故事是否都描述了「誰 / 做什麼 / 為了什麼」三段?
  • 故事背後的 acceptance criteria 能不能用 2–3 句話列出來?
  • 這個故事會觸發哪些系統動作?哪些是同步、哪些可非同步?
  • 如果這個故事失敗,使用者會怎麼感受到?
  • 故事之間是否有相依性?要先做哪一個?
走一遍範例(登雲書店簡化版)

例如:身為登雲書店讀者小陳,我想要在首頁看到依我歷史偏好排序的書單,以便三秒內決定今天要不要加入購物車—驗收條件包含首頁回應 < 1 秒、至少呈現 10 本書、登入狀態下顯示個人化結果。

你的答案

0 字 建議至少 60 字
0 字 建議至少 60 字
0 字 建議至少 60 字
設計自查與官方參考(3 項)

檢查你的設計

  • 每個故事是否具備角色、操作、價值與可測試的驗收條件?
  • 是否寫出失敗、重試與無權限時的結果,而不只描述成功路徑?
  • 能否把每個驗收條件連到下一步的量測或功能測試?

這些問題協助你找出缺口,不會自動判定答案正確或記錄另一份分數。

官方延伸閱讀

草稿儲存與備份 ↑

STEP 04 設計主題 · 可靠性設計

定義 SLI 與 SLO

學習目標

把 User Story 轉成可觀察的成功事件比例,定義量測位置、分母、排除規則與時間視窗,再設定 SLO。數字是需要驗證的目標,不是服務保證。

思考提示
  • 哪個使用者旅程最重要?什麼結果才算成功,而不只是 HTTP 沒有回 5xx?
  • 有效請求與成功請求如何定義?哪些無效請求會排除,原因是什麼?
  • 在入口量測時,如何記錄逾時、錯誤與延遲;是否漏掉沒有成功寫入應用日誌的事件?
  • 滾動 28 天的成功率與延遲目標各是多少?對應的 error budget 如何計算與使用?
  • 當錯誤預算耗盡時,誰決定減少變更、修復問題或重新檢討目標?
走一遍範例(登雲書店簡化版)

登雲書店搜尋 API:有效請求先依規則排除健康檢查與已確認的無效輸入;5xx、逾時及非預期 4xx 都計入失敗。成功率 SLI = 成功的有效請求/全部有效請求,滾動 28 天 SLO 暫定 99.9%。延遲另以「成功且 500ms 內完成的有效請求/全部有效請求」設定 95% 目標,兩個目標分別追蹤。

你的答案

0 字 建議至少 100 字
設計自查與官方參考(3 項)

檢查你的設計

  • 是否定義分母、成功事件、排除規則、量測位置與滾動視窗?
  • 逾時與非預期 4xx 是否會被捕捉,而非把所有非 5xx 當成成功?
  • 若 28 天有 1,000,000 次有效請求,99.9% 的請求成功率目標容許多少失敗?答案應為 1,000 次,不是 0 次。

這些問題協助你找出缺口,不會自動判定答案正確或記錄另一份分數。

官方延伸閱讀

草稿儲存與備份 ↑

STEP 05 設計主題 · 應用設計

服務邊界與部署取捨

學習目標

先找出模組、資料擁有者與介面,再決定哪些邊界需要獨立部署。模組化單體也可以是合理起點;拆成微服務必須能解釋額外維運與一致性成本。

思考提示
  • 哪個模組負責哪份資料與業務規則?
  • 什麼需求讓某個模組必須獨立部署或擴展,而不只是名稱不同?
  • 哪些讀寫需要同步回應?哪些可透過事件非同步完成?
  • 以目前團隊的人數與值班能力,模組化單體和多個服務的成本差在哪裡?
  • 付款逾時、訊息重送或下游失效時,狀態、冪等與對帳由誰負責?
走一遍範例(登雲書店簡化版)

登雲書店先定義 Catalog、Cart、Order、Payment Adapter、User、Recommendation、Notification 七個邏輯模組,不等同七個部署。小團隊可先用模組化 Web/API 加背景 worker;若推薦工作需要獨立資源,再拆出部署。Order 保存訂單狀態,付款供應商保存扣款結果,透過冪等與對帳協調。

你的答案

0 字 建議至少 120 字
0 字 建議至少 80 字
設計自查與官方參考(3 項)

檢查你的設計

  • 是否比較模組化單體與獨立服務,並用團隊負擔、部署或擴展需求解釋取捨?
  • 每份核心資料是否有明確擁有者;訂單與扣款跨系統的狀態如何對帳?
  • 對非同步訊息重送、順序變動及下游不可用,是否有冪等、重試與失敗處理?

這些問題協助你找出缺口,不會自動判定答案正確或記錄另一份分數。

官方延伸閱讀

草稿儲存與備份 ↑

STEP 06 設計主題 · 應用設計

設計 REST API

學習目標

為每個服務定義核心資源(collection)與標準 HTTP 方法。好的 API 讓新工程師一看就懂。

思考提示
  • 資源與集合路徑是否清楚?列表如何分頁、限制輸入與區分明細操作?
  • GET/POST/PUT/PATCH/DELETE 各自的副作用與重試語意是什麼?
  • 呼叫者是使用者還是服務?驗證身分後,如何檢查能否存取這一份資源?API key 不等同使用者登入。
  • 錯誤格式、status code、逾時、重試與冪等鍵的契約是否一致?
  • 版本與相容策略怎麼做?變更 API 後如何驗證既有客戶端?
走一遍範例(登雲書店簡化版)

Catalog 使用 GET /v1/books(列表/篩選)、GET /v1/books/{id}(明細),後台才可 POST 與 PATCH;實際刪除策略另記。購物車以 cartId 定位,但每次都檢查登入者的所有權。POST /v1/orders 接收冪等鍵,同一鍵重試回傳同一筆處理結果,付款狀態另外對帳。

你的答案

0 字 建議至少 120 字
設計自查與官方參考(3 項)

檢查你的設計

  • 資源路徑、查詢與寫入方法是否分開,且列表有分頁與輸入限制?
  • 是否分開使用者驗證與資源授權,拒絕讀寫另一個人的購物車或訂單?
  • 建立訂單或呼叫付款逾時後重試,是否會重複扣款;冪等鍵與結果保存在哪裡?

這些問題協助你找出缺口,不會自動判定答案正確或記錄另一份分數。

官方延伸閱讀

草稿儲存與備份 ↑

STEP 07 設計主題 · 儲存方案選型

儲存特性分析

學習目標

先描述每個服務的資料「長什麼樣」,再選擇 GCP 產品。特性優先、產品在後。

思考提示
  • 資料形狀、主要查詢與索引需求是什麼?
  • 平均與尖峰讀寫量、保留期限、今年及未來成長假設各是多少?
  • 哪些操作需要交易?讀取一致性、交易範圍與部署地點請分開說明。
  • 哪些資料是權威來源,哪些是可重建的快取或搜尋索引?
  • 需要跨 region 災難復原嗎?可接受多少資料遺失與停機?
走一遍範例(登雲書店簡化版)

Order 需要關聯與單一資料庫內的交易;假設每年成長 10GiB,尖峰讀寫量另行估計。主要服務位於 asia-east1,以區內 HA 處理 zone 故障;跨 region 的資料保護另在 DR 步驟設計。搜尋索引可以落後,但結帳必須回權威來源驗證價格與庫存。

你的答案

0 字 建議至少 120 字
設計自查與官方參考(3 項)

檢查你的設計

  • 交易範圍、讀取一致性與部署位置是否分開描述?
  • 是否列出實際查詢、索引需求、尖峰讀寫與保留期限,而不只先填 SQL/NoSQL?
  • 訂單與庫存需要什麼真實狀態;搜尋索引落後時能否誤導結帳?

這些問題協助你找出缺口,不會自動判定答案正確或記錄另一份分數。

官方延伸閱讀

草稿儲存與備份 ↑

STEP 08 設計主題 · 儲存方案選型

GCP 儲存服務選擇

學習目標

根據上一步的特性表,把每個服務對應到具體的 GCP 產品,並解釋選擇理由。

思考提示
  • Cloud SQL 與 Spanner 的功能、查詢、容量及部署配置,哪個符合需求?不要用舊的最小節點數替代比較。
  • 文件、寬欄與關聯模型分別適合哪些查詢?若有全文搜尋,edition 與索引方案是什麼?
  • 物件儲存的 location 與 storage class 各自如何選擇?存取與復原需求是什麼?
  • 快取存哪些可重建資料?失效、過期與穿透回來源如何處理?
  • 區內 HA、備份/PITR、匯出與跨區副本各自解決什麼故障?
走一遍範例(登雲書店簡化版)

本練習 Order 採 Cloud SQL PostgreSQL 的 regional HA(同一 region 的不同 zone)。Catalog 書目採 Firestore Standard edition,分類查詢與關鍵字搜尋索引分開設計;文字搜尋能力依 edition 查證,不能只寫 Native mode。封面圖先用 asia-east1 的 Cloud Storage Standard;快取是可選的後續最佳化,先以量測證明需求。

你的答案

0 字 建議至少 100 字
0 字 建議至少 120 字
設計自查與官方參考(3 項)

檢查你的設計

  • 是否區分 Cloud SQL 同一 region 的 HA 與跨 region 的 DR,而非把 HA 當跨區切換?
  • 是否用工作負載、功能與實際配置比較 Spanner,沒有再使用「最小 3 node」的舊說法?
  • 若選 Firestore,是否說明 edition、查詢與索引能力;全文搜尋不能僅憑 Native mode 這個名稱推定可用?

這些問題協助你找出缺口,不會自動判定答案正確或記錄另一份分數。

官方延伸閱讀

草稿儲存與備份 ↑

STEP 09 設計主題 · 網路設計

網路與 Load Balancing

學習目標

判斷每個服務是否需對外暴露、要用哪種 Load Balancer、是否需跨區。網路決定你的延遲與成本。

思考提示
  • 哪些入口公開,哪些由內部 API 或背景 worker 使用?是否真的需要獨立 LB?
  • 流量是 HTTP(S) 還是其他協定?TLS 在哪裡終止,後端通道如何保護?
  • 目前是單 region 服務,還是跨 region 服務?全球入口不代表後端自動跨區。
  • 哪些靜態或公開資料可被 Cloud CDN 共享?購物車、付款與個人化回應如何排除?
  • Cloud Armor 與後端 VPC 防火牆各自保護哪一段?LB 代理與健康檢查如何到達後端?
走一遍範例(登雲書店簡化版)

書店以 global external Application Load Balancer 作公用 HTTP(S) 入口,依支援的後端與政策整合 Cloud Armor/Cloud CDN;CDN 只快取明確允許公開共享的內容。Order 在 Web/API 內部處理,不因為有邏輯模組就另建一個 LB。背景通知由事件觸發;後端防火牆依實際 LB 代理與健康檢查需求配置。

你的答案

0 字 建議至少 100 字
設計自查與官方參考(3 項)

檢查你的設計

  • 是否解釋公用入口、內部服務與背景工作各自為何需要或不需要 LB?
  • 是否只快取允許公開共享的資料,排除購物車、付款與個人化回應?
  • Cloud Armor、後端防火牆與健康檢查是否各自有對應設定,而非以一條開放 443 規則代替?

這些問題協助你找出缺口,不會自動判定答案正確或記錄另一份分數。

官方延伸閱讀

草稿儲存與備份 ↑

STEP 10 設計主題 · 網路設計

繪製網路拓樸

學習目標

用文字/ASCII 把整張網路圖畫出來,至少包含 VPC、Subnet、Region、LB、主要服務與外部連線。圖畫得出來,架構才清楚。

思考提示
  • VPC 是全球資源、subnet 是 regional 資源;IP 範圍與 zone 邊界畫在哪裡?
  • 應用透過哪條路連接 Cloud SQL 私有 IP,以及 Firestore/Cloud Storage API?兩者不要畫成串接的資料庫。
  • 沒有外部 IP 的執行個體如何存取 Google API?一般網際網路出口是否另需 Cloud NAT?
  • 同一 VPC 跨 region 不等於必須用 VPC Peering;什麼情況才需要連接不同 VPC 或地端?
  • DR 需準備哪些副本、應用映像、網路、身分、設定與流量切換?
走一遍範例(登雲書店簡化版)

公用入口連到 asia-east1 的 GKE;Web/API 分別連 Cloud SQL 私有 IP、Firestore 與 Cloud Storage API,不是 Cloud SQL 再連到 Firestore。VPC 跨 region,兩區各有 subnet。Cloud SQL 向 asia-northeast1 的副本非同步複寫;備援區的應用、權限與流量切換也要演練。

你的答案

0 字 建議至少 100 字
0 字 建議至少 60 字
設計自查與官方參考(3 項)

檢查你的設計

  • VPC、regional subnet、zone 與服務端點是否畫出正確的範圍?
  • 應用是否分別連接資料庫與 API 服務,沒有把 Cloud SQL 畫成通往 Firestore 的中繼?
  • region 故障時,資料、副本、應用、設定、身分與流量路徑是否都能在備援區接續?

這些問題協助你找出缺口,不會自動判定答案正確或記錄另一份分數。

官方延伸閱讀

草稿儲存與備份 ↑

STEP 11 設計主題 · 可靠性設計

可靠性與擴展性

學習目標

回到 SLO,規劃高可用、自動擴展與延遲控制三大策略,確保系統在尖峰與故障時仍能達標。

思考提示
  • 單點故障(SPOF)在哪裡?如何透過冗餘消除?
  • 水平擴展靠誰觸發?CPU、QPS、還是自訂 metric?
  • 尖峰時段要不要預先暖機(pre-warm)?
  • 延遲熱區在哪?資料庫、跨服務呼叫、還是冷啟動?
  • 降級(graceful degradation)機制:當某服務掛了,系統還能做什麼?
走一遍範例(登雲書店簡化版)

Regional GKE 讓 control plane 跨 zone,但應用仍須配置足夠副本與分散排程,並驗證失去一個 zone 後的容量。CPU 百分比 HPA 以 Pod requests 為基準;副本擴容和節點擴容是兩件事。Cloud SQL regional HA 處理區內故障,跨 region 故障交由下一步的 DR 計畫。

你的答案

0 字 建議至少 100 字
0 字 建議至少 80 字
0 字 建議至少 80 字
設計自查與官方參考(3 項)

檢查你的設計

  • 是否有足夠的應用副本並分散到不同 zone,而不只把 control plane 設成 regional?
  • HPA 的 CPU 百分比是否對應 requests;節點容量、最大副本與資料庫連線上限是否能支撐擴容?
  • 是否量測失去一個 zone 後的剩餘容量、尾端延遲與降級功能,並用結果回頭核對 SLO?

這些問題協助你找出缺口,不會自動判定答案正確或記錄另一份分數。

官方延伸閱讀

草稿儲存與備份 ↑

STEP 12 設計主題 · 可靠性設計

災難復原(DR)

學習目標

按故障範圍區分高可用、時間點復原與跨區災難復原,為資料遺失和服務恢復設定可演練的 RPO/RTO。計畫需涵蓋資料與應用,不把產品功能直接等同達標。

思考提示
  • zone 故障、整個 region 故障與資料誤刪各使用哪種復原方式?
  • RPO/RTO 的起迄如何量測?5 分鐘/30 分鐘若是目標,演練結果與限制是什麼?
  • PITR 需要的備份、交易日誌與可用時間窗如何配置及驗證?邏輯匯出是另外一種備份,不能取代整套策略。
  • 跨區副本為非同步複寫,如何觀察延遲、決定可接受的資料遺失並隔離舊主?
  • 副本提升後,應用設定、權限、連線端點、流量驗證、資料對帳與回切由誰操作?
走一遍範例(登雲書店簡化版)

區內 zone 故障由 Cloud SQL regional HA 處理;資料誤刪依可用備份/日誌做 PITR。Region 故障則依計畫提升 asia-northeast1 的跨區 read replica,再切換應用與流量。RPO 5 分鐘、RTO 30 分鐘只是練習目標,須依複寫延遲與端到端演練驗證;每日匯出本身不能證明 5 分鐘 RPO。

你的答案

0 字 建議至少 100 字
0 字 建議至少 80 字
0 字 建議至少 120 字
設計自查與官方參考(3 項)

檢查你的設計

  • 是否分開 zone 故障、region 故障與資料誤刪,為每種情境選對復原機制?
  • 5 分鐘 RPO/30 分鐘 RTO 是否明確標為待演練驗證的目標,並記錄複寫延遲與實際耗時?
  • Runbook 是否包含隔離舊主、提升跨區副本、切換應用連線、資料對帳及回切;沒有用區內 HA failover 代替跨區提升?

這些問題協助你找出缺口,不會自動判定答案正確或記錄另一份分數。

官方延伸閱讀

草稿儲存與備份 ↑

STEP 13 設計主題 · 安全 & 成本最佳化

安全與成本最佳化

學習目標

將身分、資源授權、網路防護與可重算的成本表一起檢查。先寫明工作負載和計費假設,再用官方試算與來源驗證,不把未查證的總額當作報價。

思考提示
  • 工作負載身分與最小權限如何配置?資料庫內角色是否也限制到需要的資料?
  • 使用者驗證與資源所有權如何檢查?API key 不能取代使用者身分。
  • LB 的邊緣防護與後端防火牆如何分工?健康檢查需要哪些路徑?
  • 金鑰與憑證如何儲存、授權與輪替?避免長期服務帳戶金鑰散落在程式或設定。
  • 試算是否納入 region、edition、HA/DR、用量、網路、備份、日誌與固定費?穩定基線確定後才評估適用的承諾折扣。
走一遍範例(登雲書店簡化版)

先採未折扣的 USD 試算:GKE Standard 節點規格/數量與管理費、Cloud SQL regional HA 的運算/儲存/備份、跨區 DR 副本、物件儲存、LB/CDN、Cloud Armor 與日誌分列。每項記錄計費單位、用量、查價地點和日期,再加總。

你的答案

0 字 建議至少 120 字
0 字 建議至少 120 字
設計自查與官方參考(3 項)

檢查你的設計

  • 工作負載身分、Google API 權限、資料庫內角色與使用者授權是否分開檢查?
  • 每個試算項目是否記錄地點、規格、數量、計費單位、幣別與查價日期,並區分正式服務與 DR?
  • 是否納入網路傳輸、備份、日誌、負載平衡與安全服務,檢查流量重複計價及總額加總?

這些問題協助你找出缺口,不會自動判定答案正確或記錄另一份分數。

官方延伸閱讀

草稿儲存與備份 ↑

檢查設計,再與夥伴討論

匯出這份設計文件,拿去跟同事或學習夥伴對焦,或是印出來在讀書會上討論。把同一份草稿換個情境重做一次,你會驚訝地發現自己選擇開始不一樣。

徽章解鎖!
Nimbus

學習教練 Nimbus

你的雲端學習夥伴

依已保存的資源進度與學習目標提供練習建議。完成度不代表掌握程度或應考能力。

0
連續天數
0
確認讀完
0
收藏
0%
資源完成度
練習建議
    推薦下一步
    開始