結論先講

好的 Infra/DevOps 工程師不是「會在 AWS console 上點來點去」的人,也不是「CI/CD pipeline 工程師」。是能讓系統穩定運行、快速部署、出事時快速恢復的人。

如果你只會 docker run、只會複製貼上 Terraform 範例、監控只設了「CPU > 90% 就告警」——你可能還在入門階段。這篇幫你看清楚好的 Infra 工程師需要的完整能力。


1. Linux 基礎:不只是會下指令

DevOps 的底層是 Linux。你不需要從頭編譯 kernel,但你需要理解作業系統在做什麼。

Process 管理:

  • pstophtop 只是入口
  • 理解 PID、PPID、zombie process、orphan process
  • 知道 signal 是什麼(SIGTERM vs SIGKILL 的差別很重要)
  • systemd 的基本操作(systemctljournalctl

檔案系統:

  • inode 的概念(為什麼「磁碟還有空間但無法建立檔案」?)
  • 檔案權限不只是 chmod 777(那代表你放棄了所有安全)
  • /proc/sys 是系統的窗戶,不是不能碰的東西
  • 常用的除錯:lsof(誰開了這個檔案)、df/du(空間去哪了)

你該能回答的問題:

  • 一個 process 跟一個 thread 差在哪?
  • OOM Killer 是什麼?為什麼我的 process 被殺了?
  • swap 是什麼?什麼時候該關掉?
  • 為什麼 rm 一個大檔案後,磁碟空間沒有增加?

2. 網路概念:不只是「通了就好」

概念你該知道什麼常見問題場景
DNSA、CNAME、TTL、遞迴查詢換 IP 後為什麼還是連到舊的?
TCP/IP三次握手、TIME_WAIT、MSS為什麼連線數爆了?
HTTP/HTTPSTLS 握手流程、HTTP/2為什麼 SSL 憑證過期了沒人知道?
Load BalancerL4 vs L7、health check為什麼 502 一直出現?
CDNcache hit/miss、purge為什麼改了但使用者看到舊的?
Firewalliptables/Security Group為什麼連不上?

除錯工具箱:

  • dig / nslookup:DNS 問題
  • curl -v:HTTP 層問題
  • tcpdump / wireshark:封包層問題
  • traceroute / mtr:路由問題
  • ss / netstat:連線狀態

真實案例:某服務間歇性 timeout。用 ss 發現大量 TIME_WAIT 狀態的連線。原因是 connection pool 設定不當,每個 request 都建新連線。修復方式:調整 connection pool 設定,順便加了 keepalive。


3. Container:不只是 docker run

會把 app 包進 Docker 只是起點。好的 Infra 工程師要考慮更多。

Dockerfile 最佳化:

做法為什麼
用 multi-stage build最終 image 不需要 build tool
把不常變的層放前面利用 layer cache 加速 build
.dockerignore不要把 node_modules.git 複製進去
不要用 latest tag不可重現,遲早出事
不要用 root 執行安全基本原則
選對 base imagealpine 小但有時相容性差,slim 通常是好選擇

Orchestration(編排):

Docker Compose 適合開發環境,但 production 需要更多:

  • Kubernetes:業界標準,但學習曲線陡。如果團隊小,考慮 managed K8s(EKS/GKE/AKS)
  • 你該懂的 K8s 概念:Pod、Deployment、Service、Ingress、ConfigMap/Secret、HPA
  • 你不需要第一天就會的:Custom Operator、Service Mesh、eBPF

Container 安全:

  • 定期掃描 image 漏洞(Trivy、Snyk)
  • 不要在 image 裡放 secrets
  • Read-only filesystem(如果可以的話)
  • Network policy 限制 pod 間通訊

4. IaC 思維:為什麼不在 Console 上點

Infrastructure as Code 不是工具選擇,是思維方式。

為什麼要 IaC:

手動操作IaC
「那個設定是誰改的?」Git blame 就知道
「能不能再建一個一模一樣的環境?」terraform apply
「staging 跟 production 差在哪?」diff 兩個檔案
「新人要多久才能上手環境?」看 code 就懂

工具選擇:

工具特色適合
Terraform宣告式、多雲、社群大大多數場景
Pulumi用程式語言寫 IaC不想學 HCL 的團隊
CloudFormationAWS 原生全 AWS 的團隊
Ansible設定管理、imperativeVM 設定、一次性任務

IaC 的紀律:

  • 所有環境變更都走 code review
  • State file 存在遠端(S3 + DynamoDB lock)
  • 不要手動改 console(改了就跟 code 不同步了)
  • Module 化:重複使用,不要複製貼上

5. 監控哲學:Metrics vs Logs vs Traces

監控不是「設幾個告警就好」。好的監控讓你在用戶發現問題之前就知道出事了。

三根支柱:

類型回答什麼問題工具範例
Metrics系統現在怎麼樣?趨勢是什麼?Prometheus + Grafana
Logs剛剛到底發生了什麼事?ELK Stack、Loki
Traces一個 request 在各個服務間走了什麼路徑?Jaeger、Datadog APM

告警設計原則:

  • 告警要 actionable:收到告警後你知道要做什麼。「CPU 高」不是好告警,「訂單 API P99 延遲超過 2 秒」是
  • 減少噪音:告警太多 = 沒有告警。大家會開始忽略
  • 分級:P1(立即處理,用戶受影響)、P2(盡快處理)、P3(工作時間處理)
  • SLO-based alerting:基於服務等級目標來設告警,不是基於資源使用率

Golden Signals(Google SRE 的黃金訊號):

  1. Latency:request 回應時間
  2. Traffic:request 量
  3. Errors:錯誤率
  4. Saturation:系統容量還剩多少

比起監控 CPU 使用率,你更應該監控 error rate 和 latency。CPU 80% 但一切正常 = 沒問題。CPU 20% 但 error rate 暴增 = 大問題。


6. Incident Response:出事了怎麼辦

出事是正常的。重要的是你怎麼處理。

On-Call 的基本紀律:

  • 收到 page 在 X 分鐘內回應(通常 5-15 分鐘)
  • 先止血,再找根因(先把服務恢復,再慢慢查為什麼壞)
  • 溝通比修復重要(讓相關人知道狀況)

Runbook 該有什麼:

區塊內容
症狀什麼告警觸發了?用戶看到什麼?
影響範圍誰受影響?嚴重程度?
診斷步驟一步一步怎麼確認問題
修復步驟怎麼止血?怎麼根治?
升級路徑解決不了找誰?

Postmortem(事後檢討):

  • Blameless:不是找誰的錯,是找系統的問題
  • 時間軸:什麼時間點發生了什麼
  • 根因分析:用 5 Whys 或 Fishbone diagram
  • Action items:具體的改善措施,有 owner 有 deadline
  • 分享:讓整個團隊學到教訓

好的 Infra 工程師不是「讓系統永不出事」的人(那不可能),是「出事時能快速恢復,而且同樣的事不會出第二次」的人。


7. Junior vs Senior 能力對比表

面向JuniorSenior
Linux會下基本指令理解 OS 層面,能從系統層面除錯
網路知道 IP 和 port能從封包層面分析問題
Container會 docker run能設計 container 策略、優化 image、管理 orchestration
IaC會跑 terraform apply能設計 module、管理 state、建立 IaC 規範
監控設幾個基本告警設計完整的 observability 策略
Incident出事會緊張冷靜處理、有系統的診斷和溝通
CI/CD會寫 pipeline設計部署策略(canary、blue-green)、rollback 機制
安全知道要注意實踐 security hardening、定期掃描和更新

FAQ

Q1: DevOps 和 SRE 有什麼不同?

DevOps 是文化和實踐(打破 Dev 和 Ops 的牆),SRE 是 Google 提出的具體實踐方式(用軟體工程方法做運維)。SRE 更強調 SLO/SLI/Error Budget 的概念。在很多公司,這兩個角色的工作內容高度重疊。

Q2: 要考 AWS 認證嗎?

如果你在找工作,Solutions Architect Associate 是個不錯的敲門磚。但認證不等於能力。實際操作經驗比證照重要。建議:先做專案,再去考認證(這樣準備起來也比較快)。

Q3: 要學 Kubernetes 嗎?

如果你的目標是 Infra/DevOps,2026 年 K8s 是必修。但不要一開始就學。先把 Docker 用熟,理解 networking 和 Linux,再學 K8s 會快很多。直接跳進 K8s 你只會被 YAML 淹沒。

Q4: Infra 工程師需要會寫程式嗎?

需要。不一定要寫 production code,但你要能寫 script(Bash/Python)、IaC code(Terraform/Pulumi)、小工具。好的 Infra 工程師會用程式解決重複性的工作,而不是每次都手動操作。

Q5: 從後端轉 DevOps 需要補什麼?

主要補 Linux 系統管理、網路、雲端服務、IaC 工具。你的優勢是理解應用程式怎麼運作,這在 DevOps 非常有用。建議從幫自己的 side project 建一套完整的 CI/CD + 監控開始。


系列導航