"Devops"
- 把遠端 agent 工作機鋪成一條路:個人尺度的 paved road
要從零架一台遠端 agent 工作機、卻面對選型 / 連線 / 認證 / 無人值守散在多篇不知照什麼順序走、或想把個人 infra 用一條可重現的路收斂決策時回來讀
- Health check endpoint 設計
設計服務的健康檢查端點時,判斷什麼回應算健康、check 要探到多深、依賴要不要一起檢查時回來讀
- Stateless 設計原則
要把服務改成能水平擴展的無狀態設計時,釐清什麼算「本機狀態」、哪些常見寫法會破壞無狀態、隱式狀態怎麼抓、以及定時 job 這種無狀態例外怎麼處理
- 反向代理的職責
釐清反向代理在單一入口後面承擔哪些職責、TLS 終止與路由怎麼設計、以及一條請求路徑上的 timeout 為什麼要由外到內遞減時回來讀
- 流量模型建立
要把「這個服務會收到什麼樣的流量」量化成容量規劃的輸入時,釐清該量哪幾個維度、峰均比為什麼是最關鍵的單一指標、以及怎麼從 production log 抽出可信的模型
- 計費模式理解
看懂雲端帳單怎麼生成時,先認清收費的維度、on-demand/reserved/savings plan/spot 的承諾差異、以及 egress 這類最常被忽略的隱藏成本
- 單點故障盤點
要系統性找出哪些元件掛了整個系統就跟著掛時,用 pre-mortem 反推失敗路徑、依賴 budget 算可用性上限、以及按 blast radius 排序缺口
- 突發流量的分類
突發流量依能不能事前知道分成兩類:各自的來源、倍率與持續時間,可預期突發的準備要提前多久由什麼決定、collector 在活動前要準備的項目,以及 collector 遇到 error storm 時的資料保留
- 背壓機制
下游處理慢時上游怎麼減速 — 有限 buffer + 回壓訊號的設計、和 rate limit 的區別
- 租用雲端主機之前的費用規劃:費用訊號的延遲、停止之前的最大超支、扣款的信用卡額度、配額與預算門檻的計算,以及停損停到哪一層
租用雲端主機或把試用帳號升級成付費帳戶之前,費用失控時從觸發到停止之間的金額怎麼從配額與訊號延遲推出來,再用它推扣款的信用卡額度、配額、預算警示與觸發處置的門檻;Oracle Cloud、Google Cloud 與 AWS 的扣款時點、預先授權、扣款失敗的後果、擋下建立與停止用量的機制各自涵蓋什麼,以及停損停到哪一層的判斷
- Liveness 與 Readiness
分不清該用哪種探針、或探針失敗後平台重啟了不該重啟的服務時,回來釐清 liveness、readiness、startup 三種探針各自宣告什麼、失敗後平台做什麼
- Session 處理
多實例下登入狀態的三種放法(sticky session、外部 session store、無狀態 token)的取捨;無狀態 token 以 token、使用者或簽章金鑰為單位各撤銷得了什麼;剛寫完就要讀到的 session 一致性怎麼保證
- 冗餘設計模式
在 active-passive、active-active、multi-region 之間選冗餘模式時,用資料同步方式與 standby 是否服務流量來區分,並知道冗餘不等於備份
- 負載分散演算法
在 round-robin、least-connections、IP hash、consistent hash 之間選負載分散演算法時,用請求成本是否均勻、實例是否同質、需不需要親和性當判斷標準
- 峰值估算
要估一個服務的峰值該準備多少時,先分清峰值屬於哪一種形狀、再用歷史倍率階梯與安全係數推算,並知道安全係數的數學根據在飽和曲線
- Rate Limiting
主動限制每個來源的請求速率 — per-client vs global、token bucket vs sliding window、優先級豁免
- 降級策略
系統超載時犧牲什麼保住什麼 — 動態取樣、事件優先級、功能降級、聚合前移四種策略
- GCP 預算警示與停損開關的實測紀錄:建預算、Pub/Sub 主題、服務帳號、函式與觸發器、兩段驗收、心跳監看與停用後的恢復
要在 GCP 專案上建預算警示,或建一個花費超過預算就解除帳單連結的停損開關,想照一次實跑過的順序做、看每一步漏掉或換一種做法的結果時讀;也用在函式部署成功、狀態 ACTIVE 卻從沒解除過帳單連結,或專案因超支被停用之後要恢復的時候
- GCP 上的雲端費用失控防護:預算警示、強制執行支出上限與自動停用帳單的作用範圍、反應時間與判斷
GCP 上為費用失控設防的機制:預算警示寄出通知的時機、範圍、抵免與通知對象、強制執行支出上限涵蓋的服務與暫停期間,以預算通知觸發函式停止用量的兩種處置(解除帳單連結、只停止花錢的資源)該選哪一種,帳單資料延遲對這些機制反應時間的影響,停損開關放在另一個專案的理由,以及驗收為什麼分成真實通知與測試訊息兩段、停用後的恢復為什麼要先調預算
- Failover 機制
設計單點掛掉自動切到替代路徑的機制時,釐清觸發靠探活、故障域要先劃定、恢復順序的循環等待風險、以及 rollback 與 roll-forward 怎麼選
- nginx 實務配置
用 nginx 當反向代理配 upstream、負載分散方法、健康檢查與 timeout 時,特別是要知道開源版的主動健康檢查限制與 proxy header 陷阱時回來讀
- Right-sizing
把配置規格調到貼近實際用量時,怎麼找出過度配置的資源、downsizing 不能砍過膝點、以及機型世代與 reserved 過剩的回收
- Shared storage 選型
把外置的狀態放進共享儲存時,按存取型態與狀態性質選 DB、KV、物件儲存,並處理多實例共享一個 DB 帶來的讀路徑與連線瓶頸
- systemd watchdog 與自動重啟
在單機 systemd 上做服務自動恢復時,釐清 watchdog 主動報活與 restart policy 被動拉起是兩套機制、以及為什麼要先重啟幾次才放棄
- 壓力測試工具與方法
要用壓測驗證容量規劃時,釐清壓測到底在找什麼、k6 與 wrk 各自的定位、怎麼讀壓測輸出的延遲分布,以及讓結果失真的幾個反模式
- Queue 緩衝
在 ingestion 和 processing 之間加 message queue 做 burst 緩衝 — Kafka / NATS / Redis Streams 的選型和引入條件
- 熔斷器
依賴服務失敗時怎麼快速失敗而非拖慢自己 — 三狀態模型(closed → open → half-open)和熔斷判斷條件
- Disaster recovery 策略
設計災難復原時,先確認恢復路徑走得通再談 RTO/RPO、用 restore drill 把估值變量值、以及知道恢復不是切回流量就結束
- Process supervisor 選型
在 systemd、supervisord、Docker restart policy、Kubernetes 之間選服務監管方式時,用平台能不能分開表達 startup、readiness、liveness、drain 當判斷標準
- 成本監控與告警
要讓雲端帳單不失控時,靠歸因把每筆花費追到擁有者、用異常告警抓突增、以及選 showback 或 chargeback 讓成本有人負責
- 健康檢查路由設計
設計負載平衡的健康檢查時,釐清被動與主動探測的差別、interval 與 threshold 怎麼定出兩個時間窗口、以及為什麼 LB 顯示 healthy 不等於服務可服務
- 規模拐點判斷
判斷什麼訊號代表該擴容、什麼代表可縮容、以及該往垂直還水平擴時,用飽和曲線的三段區間、膝點的早期訊號與 ramp-up 方法回來讀
- 擴展的觸發與縮回
設計自動擴縮時,釐清擴展前要先窮盡哪些低成本手段、觸發訊號怎麼分層、以及縮回為什麼比擴容難、要先 drain 才能縮
- Bulkhead 隔離
不同工作負載的資源池隔離 — 一個功能過載不拖垮其他功能的隔艙設計
- 規模分級應對表
自用級 → 中型 → 大型 → 商業網站級的四級應對方案 — 每級的觸發條件、架構組成和成本
- Graceful shutdown
設計服務收到停止信號後的收束流程時,釐清 SIGTERM 到 SIGKILL 的 grace period、退場的固定順序、以及不同 workload 的 drain 窗口要留多長
- LB 是水平擴展的前提
想靠加實例分攤流量卻發現擴不動時,釐清水平擴展的兩個前提——流量要分得進新實例(LB)、任何實例要能接任何請求(無狀態)
- 成本模型
把容量規劃的資源翻成錢時,釐清 on-demand、reserved、spot 三種計費模式的取捨、怎麼算單位請求成本、以及過度與不足配置各自的經濟代價
- 垂直與水平擴展的判斷
決定該加 CPU 還是加實例時,用「這個元件能不能做成無狀態」當判斷樞紐,並知道有狀態的節點先加大單機規格、讀路徑用副本擴、寫入量超過單機上限才分片
- 高可用的成本
判斷高可用值不值得時,用停機的商業代價衡量冗餘的 2x 成本、按可用性等級階梯評估投資、以及知道沒驗證的冗餘等於白付
- 開發環境成本控制
壓非 production 環境的隱形浪費時,用排程關機、用完即拆的 ephemeral 環境、CI 跑 spot、以及 per-team 成本上限
- 預知的大流量要加多大、編多少預算:從業務預估到擴容規格與費用區間的換算鏈、給決策者與會計的數字,以及每次活動之後的校準
行銷活動、檔期這類事先知道的大流量,容量規劃怎麼從業務預估換算成峰值請求量、各層要開幾台與擴容的計費時數,再換算成費用區間;三點估計怎麼帶著預估的誤差,給決策者的選項要附規格、費用、不足時的後果與回退方式,給會計的預算要對齊增量與付款時點,以及每次活動之後校準換算係數、沒有歷史資料時怎麼起步
- 小型服務的兩到三台主機配置:第二台與第三台主機的用法、監控主機的位置與連線、兩台主機互相監看,以及雲端業者負責的範圍
一台主機的服務擴充到兩到三台時,每一台放什麼:第二台給監控、給應用程式的副本或給資料庫各自換到什麼與前提,與第三方心跳監看服務的比較,監控主機放在另一個業者或地端時經 VPN 讀取、連線中斷的誤判,兩台主機互相監看的條件,第三台給資料庫或兩台應用主機搭配託管資料庫,備份的位置,以及加主機也換不到、由雲端業者或入口設定處理的故障與攻擊
- 容器的健康檢查:Docker HEALTHCHECK 的狀態、unhealthy 之後由誰處理、depends_on 的啟動把關與 distroless 映像檔
說明 Docker 的 HEALTHCHECK 與 Compose 的 healthcheck 怎麼運作:starting、healthy、unhealthy 三個狀態與時間參數的換算,容器變成 unhealthy 之後 Docker 與 restart policy 各自做什麼、不做什麼,depends_on 的 service_healthy 只在啟動時把關會帶來的連鎖失敗,以及沒有 shell 的 distroless 映像檔怎麼做健康檢查
- 自架 vs 雲端的成本交叉點
判斷該自架還是用雲端/商業方案時,看兩條成本曲線的交叉點、部署光譜的漸進選項、以及人力與 lock-in 這些不在帳單上的成本
- 多容器服務的存活監看:容器健康檢查、外部探測與指令列查詢的分工
說明一組用 Compose 跑的多容器服務怎麼回答「每個服務還活著嗎」:容器健康檢查、從另一個容器發請求的外部探測、SSH 進主機時用的查詢腳本各自看得到與看不到的範圍,外部探測工具(Gatus、Uptime Kuma)的選擇、TCP 檢查與經過負載平衡的檢查的限制,以及監看工具自己掛掉時怎麼發現
- 容器化資源設計
把容量規劃落到容器上時,怎麼定 memory 與 CPU 限制不觸發 OOMKill 或 throttle、以及 overlay filesystem 對高頻寫入的 I/O 影響
- 共用主機的資源競爭:容量估算、故障範圍、隔離層級與監控的位置
多個服務、資料庫與監控放在同一台主機(或同一台實體機上的多台虛擬機)時,資源競爭在容量估算、故障範圍、隔離的做法與監控的位置上各自要考慮什麼:共用發生在哪些層、量到的數字什麼時候能互相比較、哪些服務適合放在一起、從同機加限制到專用實體機的隔離層級與各層的觸發條件
- DevOps Dashboard 設計
Collector 和 SDK 是否健康 — 日常監控的服務狀態卡、吞吐量曲線、儲存用量,以及告警觸發後的排障視圖
- 持續交付與交付效能的選讀書目
依證據強度分層的持續交付選讀:統計實證、跨組織案例、零門檻敘事、單一組織的深度重建與量測的副作用,各由哪一本書討論,以及各書的時效
- Golden Path / paved road
要判斷該不該為一套重複性的 setup 鋪一條預設路徑、或分辨組織尺度的 developer portal 跟個人尺度的 repo 加腳本加路標哪個適用時回來讀