B18 · 部署與 DX 詳細 ROADMAP
計畫文件,不會被 Quartz 渲染。
回主 roadmap → backend/ROADMAP.md
章節目標
從「我在本機跑起來了」到「production 24/7 穩定」的距離,全在本章。涵蓋容器化 / K8s / CI/CD / 發布策略 / migration / 環境管理 / Registry。Infra 系列已有 30+ 篇實戰素材,本章整合並從後端工程師視角切入。
🌱 基本介紹
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 01 | 後端部署是什麼 | 01-what-is-backend-deployment | 🌱 | 從 FTP / SCP → Docker → K8s → Serverless;「部署 = 把 code 變使用者能用的 service」 |
❓ 為什麼需要
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 02 | 為什麼後端一定要會容器化 | 02-why-containerize | 🌱 | 環境一致性、依賴打包、水平擴展、K8s 生態;2026 後端工程師 baseline |
| 03 | 為什麼 rolling / blue-green 不是選擇題 | 03-why-deployment-strategies-matter | 🌱 | 直接停機部署 = 使用者看到 502;金流 / 訂單系統必須 zero-downtime |
🕰️ 演進
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 04 | 部署方式演進 | 04-deployment-evolution | 🌱 | FTP → Capistrano / Ansible → Docker(2013)→ K8s(2014)→ Serverless(2015+)→ Edge(2020+) |
| 05 | CI/CD 演進 | 05-cicd-evolution | 🌱 | Jenkins → Travis → CircleCI → GitHub Actions / GitLab CI 主流 → Dagger(2022+ code-as-pipeline) |
🧠 知識型
F18-A 容器化
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 06 | 容器化基礎 | ⛔️ fundamentals/containerization | 🌿 | 跨系列 |
| 07 | Dockerfile 最佳實踐 | 07-dockerfile-best-practice | 🌱 | Multi-stage build、layer caching、image size 優化、distroless / Chainguard |
| 08 | Container Runtime | ⛔️ infra/03-container-runtime | 🌿 | 跨系列 |
| 09 | Container Registry | ⛔️ infra/07-container-registry | 🌿 | 跨系列 |
| 09-2 | Docker Compose vs K8s | ⛔️ micro-service/41-docker-compose-vs-k8s | 🌿 | 跨系列 |
| 09-3 | Docker Compose Production | ⛔️ micro-service/42-docker-compose-production | 🌿 | 跨系列 |
| 09-4 | Docker Compose Cookbook | ⛔️ infra/32-docker-compose-cookbook | 🌿 | 跨系列 |
F18-B Kubernetes
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 10 | K8s 後端工程師必懂 | 10-k8s-for-backend | 🌱 | Pod / Deployment / Service / Ingress、不是要當 platform engineer,但要看得懂 YAML |
| 10-2 | K8s 入門 | ⛔️ infra/33-kubernetes-intro | 🌿 | 跨系列 |
| 11 | K8s 完整系列 | ⛔️ k8s/index | 🌿 | 跨系列 |
| 12 | Liveness / Readiness / Startup Probe | 12-k8s-probes | 🌱 | 三種 probe 分工、readiness 配合 graceful shutdown;proto 案例 |
| 13 | ConfigMap / Secret | 13-configmap-secret | 🌱 | K8s 原生方式、跟 Vault / AWS Secrets Manager 整合 |
| 14 | HPA(Horizontal Pod Autoscaler) | 14-hpa | 🌱 | CPU / memory-based、custom metrics(Prometheus Adapter)、壓測驗證 |
F18-C CI/CD
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 15 | CI/CD 核心 | ⛔️ infra/05-infra-core-cicd | 🌿 | 跨系列 |
| 16 | Git CI 流程 | ⛔️ infra/06-git-ci-release | 🌿 | 跨系列 |
| 17 | GitLab CI/CD 模板 | ⛔️ infra/08-gitlab-cicd-templates | 🌿 | 跨系列 |
| 18 | GitHub Actions 深入 | 18-github-actions | 🌱 | reusable workflow / matrix / composite action / secret 管理 |
| 18-2 | 微服務 CI/CD | ⛔️ micro-service/48-cicd-microservice | 🌿 | 跨系列 |
| 19 | 好的 CI/CD Pipeline | ⛔️ standards/06-good-cicd-pipeline | 🌿 | 跨系列 |
| 20 | 多環境 promotion | 20-multi-env-promotion | 🌱 | dev → staging → prod 策略、artifact 共用、DB migration 時機 |
| 20-2 | IaC(Infrastructure as Code) | ⛔️ infra/31-infrastructure-as-code | 🌿 | 跨系列 |
F18-D 發布策略
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 21 | 發布策略(Rolling / Blue-Green / Canary) | ⛔️ process/08-release-methodology | 🌿 | 跨系列 |
| 21-2 | Zero-downtime Deploy 實戰 | ⛔️ micro-service/49-zero-downtime-deploy | 🌿 | 跨系列 |
| 22 | Feature Flag 後端視角 | 22-feature-flag-backend | 🌱 | LaunchDarkly / PostHog / Unleash / 自建、decoupling deploy from release |
| 23 | Database Migration 時機 | 23-db-migration-timing | 🌱 | expand-contract 搭 rolling deploy;backward / forward compat 策略 |
F18-E 環境管理
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 24 | 環境規劃 | ⛔️ process/01-environment-planning | 🌿 | 跨系列 |
| 25 | 環境分離 | ⛔️ infra/25-environment-separation | 🌿 | 跨系列 |
| 26 | 12-Factor App | 26-12-factor-app | 🌱 | Heroku 原則、現代版本(cloud-native 應用) |
| 27 | Local dev stack 設計 | 27-local-dev-stack | 🌱 | Docker Compose / Tilt / Skaffold;跟 production 的差異管理 |
| 27-2 | DX 本機開發環境實戰 | ⛔️ micro-service/52-dx-local-development | 🌿 | 跨系列 |
| 27-3 | DX Debugging 工作流 | ⛔️ micro-service/53-dx-debugging | 🌿 | 跨系列 |
F18-F Migration 管理
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 28 | Migration 管理策略 | 28-migration-management | 🌱 | 跟 deployment pipeline 整合、自動 vs 手動、rollback 策略 |
| 29 | 資料遷移 | ⛔️ micro-service/32-pg-migration-guide | 🌿 | 跨系列 |
F18-G 災難復原
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 30 | Backup / Disaster Recovery | ⛔️ infra/28-backup-disaster-recovery | 🌿 | 跨系列 |
| 31 | RTO / RPO | 31-rto-rpo | 🌱 | Recovery Time / Point Objective;定義跟量測 |
🔧 小實作注意事項
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 32 | 寫一個 production-grade Dockerfile | 32-production-dockerfile | 🌱 | Multi-stage、non-root、HEALTHCHECK、.dockerignore |
| 33 | 寫 K8s Deployment / Service / Ingress YAML | 33-k8s-yaml-from-scratch | 🌱 | 最小可用版本、跟 Helm 取捨 |
| 34 | GitHub Actions deploy to K8s | 34-gha-k8s-deploy | 🌱 | OIDC、kubectl apply、rollback 策略 |
💣 Anti-pattern
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 35 | 部署 Anti-patterns | 35-deployment-antipatterns | 🌱 | Container 跑 root、沒 graceful shutdown、readiness probe 沒設、memory limit 沒設、secret 存 ConfigMap、CI 每次都 latest tag、部署流程沒 lockfile、開發/prod Docker image 差很多、DB migration 沒 rollback 計畫 |
🧰 對應檢查工具
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 36 | 部署相關工具 | 36-deployment-tooling | 🌱 | Docker / Buildah、Kubectl / k9s、Helm / Kustomize、Argo CD / Flux(GitOps)、Trivy(image scan)、hadolint(Dockerfile lint) |
📎 補充
| # | 主題 | Slug | Stage | 大綱 |
|---|
| S01 | GitOps 入門 | s01-gitops | 🌱 | Argo CD / Flux;Git 作為 source of truth |
| S02 | Serverless 部署 | s02-serverless-deployment | 🌱 | Lambda / Cloud Run / Cloudflare Workers;跟傳統 K8s 的分工 |
| S03 | 好的 Infra Setup | ⛔️ standards/05-good-infra-setup | 🌿 | 跨系列 |
章節進度統計
- 知識主題:36 + 3 補充 = 39 項
- 🌿 growing:12(跨系列)
- 🌱 seed:27
跨系列連結
- →
infra/ 系列(大量基礎建設素材,含 IaC / Docker Compose cookbook / K8s intro)
- →
k8s/ 系列
- →
micro-service/41–42(Docker Compose 實戰)、48-49(CI/CD / zero-downtime)、52-53(DX)、67 conclusion-infra
- →
process/01 環境 / 08 發布
- →
standards/05 infra / 06 CI-CD / 08 DX
- →
fundamentals/containerization
- →
backend/os/ B04(Signal / Graceful shutdown)
- →
backend/observability/ B17(部署配套觀測)