後端開發 Roadmap
後端工程師的完整學習地圖。按五層架構組織:跨語言共通 → 語言特定 → 架構決策 → 應用層 → 品質跨切面。
詳細計畫(20 章)→
backend/ROADMAP.md(規劃文件,未公開) 計畫已含:各章五段式展開、backend/language/+backend/framework/觸發清單、跨系列 cross-reference 盤點、B07「後端專案共用規範」專章(整理 protoshared/40+ 模組)。
學習路徑
[基礎層]
語言共通概念 → 網路協議 → 資料持久化 → 作業系統基礎
↓
[抽象層]
語言特定(Go / Node / Python / JVM / PHP / Rust)→ Framework
↓
[架構層]
單體 vs 微服務 → API 設計 → 架構風格(Layered/Clean/DDD/CQRS)
↓
[應用層]
認證授權 / 資料驗證 / Queue / Cache / 儲存
↓
[品質與跨切面]
測試 / 資安 / 觀測 / 部署 / 壓測與效能
↓
[實作驅動]
walkthroughs/(Level 1~5 後端專案、無 framework 從零建站)
跨領域連結:
- 工程師能力地圖 → 好的後端工程師
- 微服務壓測系列 → Micro-service
- 架構風格詳解 → architecture-patterns
- 好的後端 framework 體檢表 → 02
- 運維踩雷 → ops-notes
- 後端工程師需要的軟實力 → soft-skills
- 實作練習 → walkthroughs W04~W05
Stage:🌱 seed(待寫) / 🌿 growing / 🌳 mature
基礎層
B01 跨語言共通概念
| # | 主題 | stage |
|---|---|---|
| 01 | 變數、Scope、Closure(跨語言差異) | 🌱 |
| 02 | 錯誤處理模式(Exception / Result / Error wrapping) | 🌱 |
| 03 | Concurrency 模型(Thread / Coroutine / async/await / Actor) | 🌱 |
| 04 | 記憶體管理(GC / Manual / Ownership) | 🌱 |
| 05 | 型別系統(靜態 vs 動態、Structural vs Nominal) | 🌱 |
| 06 | IO 模型(Blocking / Non-blocking / Async / Event-driven) | 🌱 |
B02 網路與協議
| # | 主題 | 連結 | stage |
|---|---|---|---|
| 01 | TCP / UDP 基礎 | — | 🌱 |
| 02 | HTTP 1.1 → 2 → 3 演進 | — | 🌱 |
| 03 | DNS 運作機制 | DNS | 🌿 |
| 04 | TLS 基礎 | Reverse Proxy + TLS | 🌿 |
| 05 | WebSocket | WebSocket | 🌿 |
| 06 | gRPC 基礎 | — | 🌱 |
| 07 | Message queue protocols(AMQP / MQTT) | — | 🌱 |
B03 資料持久化
| # | 主題 | 連結 | stage |
|---|---|---|---|
| 01 | SQL 基礎 | Database | 🌿 |
| 02 | ORM vs Query Builder vs Raw SQL | — | 🌱 |
| 03 | Transaction 與 Isolation Level | — | 🌱 |
| 04 | 索引與查詢規劃 | Bulk & Index | 🌿 |
| 05 | 連線池管理 | DB Pool | 🌿 |
| 06 | PostgreSQL vs MySQL | PG vs MySQL | 🌿 |
| 07 | NoSQL 分類(KV / Document / Column / Graph) | — | 🌱 |
| 08 | Redis / Memcached | Redis & ES | 🌿 |
| 09 | Search Engine(Elasticsearch / OpenSearch) | ES Deep Dive | 🌿 |
B04 作業系統基礎
| # | 主題 | stage |
|---|---|---|
| 01 | Process vs Thread | 🌱 |
| 02 | File descriptor 與 IO | 🌱 |
| 03 | Signal 與 Process 管理 | 🌱 |
| 04 | 容器化基礎 | Containerization 🌿 |
抽象層
B05 語言特定實作(同一個 CRUD 跨語言比較)
| # | 語言 | 連結 | stage |
|---|---|---|---|
| 01 | CRUD 跨語言總覽 | CRUD Overview | 🌿 |
| 02 | Go | Go CRUD | 🌿 |
| 03 | Node.js | Node.js CRUD | 🌿 |
| 04 | Python | Python CRUD | 🌿 |
| 05 | JVM(Java / Kotlin) | CLR CRUD | 🌿 |
| 06 | PHP(Laravel) | Laravel CRUD | 🌿 |
| 07 | Rust(待規劃) | — | 🌱 |
B06 後端 Framework 系列
→ B06 完整文章索引(62 篇泛用層 + Express 子系列)
泛用層 62 篇已完成(🌿),涵蓋:
| 分類 | 文章 | stage |
|---|---|---|
| 概論(01–09) | 為什麼要框架、Magic vs Explicit、框架演進驅動力 | 🌿 |
| 選型比較(10–17) | Node.js / Python / Go / JVM / PHP / .NET / Rust / Meta-framework | 🌿 |
| 核心能力(18–28) | Routing、Middleware、DI、Request Binding、Error Handling、Lifecycle、Benchmark 讀法 | 🌿 |
| Production 模組(29–62) | DB Migration、Auth/RBAC/ABAC、API 版本 / Rate Limit / 分頁 / 冪等、Log、Cache、WebSocket/SSE、i18n、OpenAPI、Observability… | 🌿 |
Framework 深入子系列(各語言 backend/framework/{name}/):Express 5🌿 + 9🌱,其他待觸發。
後端框架擴充策略(新結構:backend/framework/{name}/)
現有:backend/framework/express/(5 🌿 已搬入,後續擴展到 ~15)
預計觸發子目錄(詳見 B06 Framework 系列):
| 優先度 | Framework | 子目錄 | 內容重點 |
|---|---|---|---|
| 🔴 | FastAPI | backend/framework/fastapi/ | proto 完整實作(auth / events / RBAC / async SQLAlchemy) |
| 🔴 | Express | backend/framework/express/ | 既有 5 篇 + 擴展到 ~15 |
| 🟡 | NestJS | backend/framework/nestjs/ | Module / Guard / Pipe / Interceptor |
| 🟡 | Fastify | backend/framework/fastify/ | Plugin / Schema / 效能 |
| 🟡 | Django | backend/framework/django/ | ORM / Admin / DRF / Celery |
| 🟡 | Spring Boot | backend/framework/spring-boot/ | Bean / AOP / JPA / WebFlux |
| 🟡 | Laravel | backend/framework/laravel/ | Eloquent / Queue / Horizon |
| 🟡 | Gin | backend/framework/gin/ | Context / middleware / binding |
| 🟡 | ASP.NET Core | backend/framework/aspnet-core/ | Minimal API / EF Core |
| 🟢 | Axum / Actix | backend/framework/rust-web/ | Tokio 生態 |
語言觸發(backend/language/{name}/,詳見 B05 language ROADMAP(規劃文件,未公開)):
| 優先度 | 語言 | 子目錄 |
|---|---|---|
| 🔴 | JS / TypeScript | backend/language/nodejs/ |
| 🔴 | Python | backend/language/python/ |
| 🔴 | PHP | backend/language/php/ |
| 🟡 | Java | backend/language/java/ |
| 🟡 | Go | backend/language/go/ |
| 🟡 | C# / .NET | backend/language/dotnet/ |
| 🟢 | Rust | backend/language/rust/ |
B07 後端專案共用規範(新章)
整理 proto
shared/的完整 40+ 模組。跨 framework 的 pattern — 換成 NestJS / Spring Boot 這些 pattern 一樣適用。詳見 B07 conventions ROADMAP(規劃文件,未公開)。
涵蓋:JWT 非對稱簽名 / BaseRepository / EventBus / CacheService / structured logging / 11 個 middleware / statistics / audit log / health probe / 統一錯誤處理。
Express 系列目前位置:
| 文章 | 目前位置 |
|---|---|
| Express + TypeScript 從零開始 | backend/framework/express/init |
| ESLint + Typings 設定 | backend/framework/express/eslint-typings |
| Jest 測試設定 | backend/framework/express/jest-setup |
| Base Controller 設計 | backend/framework/express/base-controller |
| 泛用 Log 設計 | backend/framework/express/generic-log |
架構層
B08 後端架構決策
| # | 主題 | 連結 | stage |
|---|---|---|---|
| 01 | 單體 vs 微服務 | 微服務 | 🌿 |
| 02 | 拆分時機與原則 | — | 🌱 |
| 03 | Serverless vs Server | Serverless vs Server | 🌿 |
| 04 | Event-driven architecture | — | 🌱 |
| 05 | BFF(Backend for Frontend) | — | 🌱 |
| 06 | 架構風格應用 | → common/foundations/architecture-patterns/ | 🌱 |
B09 API 設計
| # | 主題 | 連結 | stage |
|---|---|---|---|
| 01 | RESTful 基礎 | RESTful | 🌿 |
| 02 | API 設計完整指南 | API Design | 🌿 |
| 03 | Proto Planning | Proto Planning | 🌿 |
| 04 | GraphQL 後端視角 | — | 🌱 |
| 05 | gRPC 服務設計 | — | 🌱 |
| 06 | API Versioning 策略 | — | 🌱 |
| 07 | OpenAPI / Swagger 文件 | Swagger | 🌿 |
| 08 | 錯誤碼設計與回傳格式 | — | 🌱 |
| 09 | Idempotency(冪等性) | — | 🌱 |
| 10 | Rate Limiting 與限流策略 | — | 🌱 |
應用層
B10 認證與授權
| # | 主題 | 連結 | stage |
|---|---|---|---|
| 01 | Session vs JWT vs Cookie | — | 🌱 |
| 02 | OAuth 2.0 / OIDC | OAuth Guide | 🌿 |
| 03 | 權限模型(RBAC / ABAC / ReBAC) | — | 🌱 |
| 04 | bcrypt / argon2 密碼雜湊 | bcrypt、bcrypt vs argon2 | 🌿 |
| 05 | Token 刷新與撤銷 | — | 🌱 |
| 06 | SSO 整合 | — | 🌱 |
B11 資料驗證與序列化
| # | 主題 | stage |
|---|---|---|
| 01 | Input validation 策略(Boundary vs Everywhere) | 🌱 |
| 02 | Schema validation(Zod / Pydantic / Joi / JSR-380) | 🌱 |
| 03 | 序列化格式(JSON / Protobuf / MsgPack / Avro) | 🌱 |
| 04 | DTO vs Entity 分離 | 🌱 |
B12 背景任務與 Queue(已有 15 篇)
入門從這裡:Queue 是什麼 → 三個 async primitive → 排程任務是什麼
| 主題 | 文章 | stage |
|---|---|---|
| Queue 基礎概念 | 01 Queue 是什麼、持久化 | 🌿 |
| MQ 演進與驅動力 | 04 演進史、06 驅動力 | 🌿 |
| Broker 選型 | 14 RabbitMQ vs Kafka vs NATS vs Redis Streams | 🌿 |
| 三個 async primitive | Cron 怎麼分工 | 🌿 |
| Production EDA 系列 | 16 名詞速查、19 入門、20 Outbox、21 Consumer 冪等、22a DB 寫入冪等、22b 亂序與鎖、23 Retry 與 DLQ、24 端到端追蹤、25 架構決策 | 🌿 |
| Scheduled Jobs 與 Cron | 26 排程任務是什麼 | 🌿 |
| Worker Pool / Job Queue(Celery / BullMQ)等 | 規劃中 | 🌱 |
B13 快取策略(已有 2 篇)
| 主題 | 文章 | stage |
|---|---|---|
| 快取是什麼 | 01 為什麼你的 DB 遲早逼你加一層 | 🌿 |
| Redis 是什麼 | 07 不只快取,是後端的瑞士刀 | 🌿 |
| Cache Patterns / Invalidation / 熱點與雪崩 | 規劃中 | 🌱 |
B14 檔案與儲存
| # | 主題 | stage |
|---|---|---|
| 01 | 檔案上傳(Multipart / Streaming / Chunked) | 🌱 |
| 02 | 物件儲存(S3 / MinIO) | 🌱 |
| 03 | Pre-signed URL 策略 | 🌱 |
| 04 | CDN 整合 | 🌱 |
品質與跨切面
B15 測試
| # | 主題 | 連結 | stage |
|---|---|---|---|
| 01 | 測試金字塔:Unit / Integration / Contract / E2E | Testing Strategy | 🌿 |
| 02 | Fixture、Factory、Seed Data | — | 🌱 |
| 03 | Contract Testing(Pact) | API Contract Testing | 🌿 |
| 04 | TDD / BDD / SDD | SDD | 🌿 |
B16 資安
| # | 主題 | 連結 | stage |
|---|---|---|---|
| 01 | OWASP Top 10 | Web Security | 🌿 |
| 02 | SQL Injection / Parameterized Query | — | 🌱 |
| 03 | Secret 管理 | Secrets & Config | 🌿 |
| 04 | Dependency Scanning | — | 🌱 |
| 05 | API 安全(CORS / CSRF / Rate Limit) | — | 🌱 |
B17 觀測性
| # | 主題 | 連結 | stage |
|---|---|---|---|
| 01 | 結構化 Log 設計 | Generic Log | 🌿 |
| 02 | Metrics(Prometheus / StatsD) | Metrics | 🌿 |
| 03 | Tracing(OpenTelemetry) | — | 🌱 |
| 04 | Log 聚合(Loki / ELK) | Log Management | 🌿 |
| 05 | 告警設計 | Alerts、Alert Webhook | 🌿 |
| 06 | APM 與問題定位 | — | 🌱 |
B18 部署與 DX
| # | 主題 | 連結 | stage |
|---|---|---|---|
| 01 | 容器化 | Containerization | 🌿 |
| 02 | Container Registry | Container Registry | 🌿 |
| 03 | Kubernetes 部署 | K8s Series | 🌿 |
| 04 | CI/CD Pipeline | CD 核心、CD | 🌿 |
| 05 | 發布策略(Blue-Green / Canary / Rolling) | Release Methodology | 🌿 |
| 06 | Migration 管理 | — | 🌱 |
| 07 | 環境管理 | Environment Planning | 🌿 |
B19 壓測與效能
| # | 主題 | 連結 | stage |
|---|---|---|---|
| 01 | 為什麼要做 API 壓測 | Why Stress Test | 🌿 |
| 02 | 壓測平台架構 | 平台架構 | 🌿 |
| 03 | 控制變因 | Controlled Variables | 🌿 |
| 04 | k6 腳本撰寫 | k6 Scripting | 🌿 |
| 05 | Grafana Dashboard 設計 | Grafana Dashboard | 🌿 |
| 06 | 效能剖析與 profiling | — | 🌱 |
AI 輔助後端 + LLM Backend(新增)
B20 AI 後端章節(跟前端 CH17 對稱)
詳細計畫 → B20 AI ROADMAP(規劃文件,未公開)(~42 子題)
兩個面向:
| 面向 | 涵蓋 |
|---|---|
| AI 輔助後端開發 | Cursor / Claude Code / Copilot 寫 API / migration / test;AI code review 後端視角 |
| 建 LLM Backend 服務 | OpenAI / Anthropic API 整合;RAG + pgvector / Qdrant;Prompt 管理;Streaming response;Tool use / MCP;Prompt Injection 防禦;Token cost / rate limit / provider routing |
實作練習(連到 walkthroughs/)
Level 1~5 專案路徑
詳細走法未來放 walkthroughs/:
- RESTful User CRUD — 路由、ORM、驗證、錯誤處理(相關:Base Controller、CRUD 壓測總覽)
- Auth 系統(JWT + RBAC) — bcrypt、middleware、refresh token(相關:bcrypt 瓶頸)
- 檔案上傳 + 圖片處理 — multipart、streaming、S3(相關:泛用 Log)
- 任務佇列 + 通知 — Redis Queue、事件驅動、Email
- 拆微服務 — API Gateway、Service Discovery、Tracing(相關:CRUD 總覽)
無 framework 從零建站系列(W04)
每種語言用最小依賴做一個 HTTP 伺服器,不用 framework。知道 framework 在幫你做什麼。涵蓋 7 語言,詳見 walkthroughs/ROADMAP.md(規劃文件,未公開):
- 🔴 Node.js / Python / PHP(作者熟,詳細展開)
- 🟡 Go / Java / C#(有素材,高階佔位)
- 🟢 Rust(遠期)
策展地圖
- 工程師職涯地圖
- architecture-patterns — 架構風格專區
- standards — 好的後端體檢清單
跨目錄相關內容(後端視角)
實作練習 → walkthroughs/
- W04 無 framework 後端(4 語言版本)— Node / Python / Go / Rust
- W05 後端 Level 1~5 — CRUD / Auth / 上傳 / Queue / 拆微服務
- W07 Rust 壓測平台(規劃中)
技術系統案例 → case-studies/
後端工程師必看:
- C03 金融/支付(Stripe Architecture)
- C04 即時通訊(Discord、WhatsApp 單機 million connections)
- C05 搜尋/派單(Uber Dispatch、Google Search)
- C07 OSS 源碼深讀(PostgreSQL MVCC、Redis、Kafka、K8s Control Plane)
- C08 AI/ML 系統推估
商業系統分析 → case-studies/business/
後端主要戰場:
- B01 電商金流(訂單狀態機、對帳)
- B02 SaaS 訂閱計費(trial → dunning)
- B04 分潤 / 傭金
- B08 多租戶 SaaS 資料隔離
- B10 財務對帳審計(複式記帳)
運維踩雷 → ops-notes/
實戰 Kong / K8s / Docker / Probe / CI/CD 坑:
- O01 K8s 部署阻斷(5 案例)
- O02 Kong Gateway 坑(8 案例,最多)
- O06 Env / Secret 管理
- O08 資源限制與壓測調校
軟實力 → common/people/soft-skills/
- SS01 歸納收斂(技術決策文件 ADR、trade-off 分析)
- SS04 Spec 寫作、API doc
- SS05 Code Review 互動
體檢清單 → common/quality/standards/
程式架構 → common/foundations/architecture-patterns/
所有 A01~A13 都跟後端相關(後端是架構模式的主戰場)
進度統計
- 主題群:20(B01~B20)+ 實作練習
- 章節子題:~760(含 B20 AI 章,不含觸發子系列與 walkthroughs)
- 觸發子系列(language × 7 + framework × 10):~225 額外
- 🌿 growing:約 52(很多已在 backend/micro-service/ 68 篇、infra/ 33 篇)
- 🌱 seed:約 700+
- 🌳 mature:0
詳細計畫 → backend/ROADMAP.md(規劃文件,未公開)
架構設計說明
| 層 | 內容 | 範圍 |
|---|---|---|
| 基礎層 | B01~B04 | 跨語言共通 / 網路 / DB / OS |
| 抽象層 | B05~B07 | 語言比較 / Framework / 共用規範 |
| 架構層 | B08~B09 | 架構決策 / API 設計 |
| 應用層 | B10~B14 | 認證 / 驗證 / Queue / Cache / 儲存 |
| 品質與跨切面 | B15~B19 | 測試 / 資安 / 觀測 / 部署 / 壓測 |
| AI 時代 | B20 | AI 輔助後端 + LLM Backend |
| 實作驅動 | walkthroughs/ | W04 無 framework(7 語言)、W05 Level 1~5 |