I04 · 資料層運維 詳細 ROADMAP
計畫文件,不會被 Quartz 渲染。
回主 roadmap → infra/ROADMAP.md
章節目標
Request 進到 compute 層後,應用會打資料服務 :DB / Cache / Queue / Storage / Search。本章處理這些資料服務的運維面 ——HA / replication / backup / 容量規劃 / 效能調校。
跟 backend 的分工 :backend 講「我怎麼用 Redis / RabbitMQ」;infra 這章講「怎麼把 Redis / RabbitMQ 架起來、HA、scale、災難恢復」。
🌱 基本介紹
# 主題 Slug Stage 大綱 01 資料層運維全景 01-data-ops-landscape🌱 DB / Cache / Queue / Object Storage / Search 運維的共通議題:HA / backup / scaling / 成本
❓ 為什麼需要
# 主題 Slug Stage 大綱 02 為什麼 DB 不能單機跑 production 02-why-no-single-db🌱 單點故障、備份難、擴展撞牆;雲上 managed vs 自架對比 03 為什麼 Redis 需要 Cluster / Sentinel 03-why-redis-ha🌱 單 master 掛了全服務斷;從 backend B13 吸收的 HA 架構需求 04 為什麼 RabbitMQ / Kafka 運維複雜 04-why-mq-ops-complex🌱 cluster / 磁碟 / partition / consumer lag 監控都是運維專業
🕰️ 演進
# 主題 Slug Stage 大綱 05 資料平台演進 ⛔️ infra/data-ops/12-database-landscape 🌿 跨系列 06 資料運維演進驅動力 06-data-ops-evolution-drivers🌱 單機 DB 容量撞牆 → replication / sharding;手動 failover 撞牆 → auto-failover / managed;自架運維成本撞牆 → RDS / ElastiCache 等 managed;managed 反噬:vendor lock-in + cost 推 open-source managed(PlanetScale / Neon / Aiven)
🧠 知識型
F04-A 關聯式 DB 運維
# 主題 Slug Stage 大綱 07 PostgreSQL 運維 ⛔️ infra/data-ops/11-database-postgresql 🌿 跨系列 08 PG 進階運維 ⛔️ infra/data-ops/13-postgresql-advanced 🌿 跨系列 09 DB 全景選型 ⛔️ infra/data-ops/12-database-landscape 🌿 跨系列 10 Replication / HA 架構 10-replication-ha🌱 Primary-Replica / Multi-Primary / Patroni;failover 自動化;跟 infra/cloud/aws/06 RDS 對照 11 Backup / PITR 策略 11-backup-pitr🌱 Full / incremental / WAL;PITR(point-in-time recovery);自架 pg_basebackup 跟 pgBackRest 12 DB Connection Pooling(Infra 層) 12-db-connection-pooling🌱 PgBouncer / ProxySQL 部署;跟 backend B03 connection pool 分工 13 DB-on-K8s 運維 13-db-on-k8s🌱 2024+ 新常態 :CloudNativePG / Zalando PG Operator / Strimzi(Kafka)/ StackGres;跟 StatefulSet 配合(見 I03 #23);Operator pattern vs Managed DB 選擇;storage 策略(local-PV / CSI driver);backup 整合14 Schema Migration 運維 14-schema-migration-ops🌱 Zero-downtime migration 策略:Expand / Contract pattern、Shadow table、online DDL(pt-online-schema-change / gh-ost);lock table / timeout 防範;版本 drift 對策;跟 backend/database/ B03 migration timing 分工
F04-B Cache 運維(吸收 backend B13)
# 主題 Slug Stage 大綱 15 Redis 持久化(吸收 backend B13 #09) 15-redis-persistence🌱 RDB / AOF / 混合模式;災難恢復策略;磁碟 IOPS 需求 16 Redis Cluster / Sentinel(吸收 backend B13 #10) 16-redis-ha-architecture🌱 Sentinel vs Cluster 選型;shard / slot;failover 機制 17 Redis 替代選項(DragonflyDB / KeyDB / Valkey) 17-redis-alternatives-ops🌱 多執行緒 Redis;遷移成本;2025 Valkey fork 事件影響 18 Memcached 運維 18-memcached-ops🌱 適用場景、consistent hashing、跟 Redis 定位差異
F04-C Queue / Messaging / Streaming 運維(吸收 backend B12)
# 主題 Slug Stage 大綱 19 Event-driven Queue 概觀 ⛔️ infra/data-ops/22-event-driven-queue 🌿 跨系列 20 RabbitMQ 運維(吸收 backend B12 #10) 20-rabbitmq-ops🌱 Cluster / HA / quorum queue;mirroring / shovel / federation;磁碟 / memory 警戒線 21 Kafka 運維(吸收 backend B12 #11) 21-kafka-ops🌱 Broker / ZK / KRaft;partition / rebalance / consumer lag;跨 data center 複製(MirrorMaker) 22 NATS / JetStream 運維(吸收 backend B12 #12) 22-nats-ops🌱 Cluster / leaf node / 持久化;low-latency 場景部署 23 Redis Streams 運維(吸收 backend B12 #13) 23-redis-streams-ops🌱 Consumer group / XADD / XACK;跟 Redis Cluster 整合 24 Stream Processing 運維(Kafka Streams / Flink / ksqlDB) 24-stream-processing-ops🌱 即時資料處理的運維面 :Kafka Streams 部署模式(embedded vs standalone);Flink JobManager / TaskManager HA;ksqlDB cluster;state store / checkpoint 策略;處理 exactly-once;跟 #21 Kafka broker 運維分工
F04-D Object Storage / 檔案運維
# 主題 Slug Stage 大綱 25 Object Storage 基礎 ⛔️ infra/data-ops/10-storage-management 🌿 跨系列 26 自架 MinIO / SeaweedFS 26-self-hosted-object-storage🌱 地端 / 混合場景;HA 部署;跟 S3 API 相容性 27 Lifecycle Policy 實作 27-lifecycle-policy-ops🌱 冷熱資料自動遷移(從 backend B14 吸收);Glacier / Archive tier 策略
F04-E Search Engine 運維
# 主題 Slug Stage 大綱 28 Elasticsearch 深入運維 ⛔️ infra/data-ops/14-elasticsearch-deep-dive 🌿 跨系列 29 OpenSearch vs Elasticsearch 2026 29-opensearch-vs-es🌱 License 事件後的選型;跨雲部署 30 Vector DB 運維深入 30-vector-db-ops🌱 2024+ AI 應用標配 :pgvector / Qdrant / Weaviate / Milvus / Pinecone(SaaS)選型;Vector Index 機制 (HNSW / IVF-Flat / IVF-PQ 記憶體 vs 召回率 trade-off);scaling 策略(shard by embedding space);embedding pipeline 整合(batch vs realtime);跟 backend/ai/ B20 RAG 連動
F04-F ETL / Data Movement / CDC
# 主題 Slug Stage 大綱 31 ETL / Data Movement ⛔️ infra/data-ops/20-data-movement-etl 🌿 跨系列 32 CDC 平台選型 32-cdc-selection🌱 Debezium(self-host)vs AWS DMS vs GCP Datastream vs Airbyte vs Fivetran(SaaS);源端 DB 支援度(PG logical replication / MySQL binlog / MongoDB oplog);cost model 對比 33 CDC 運維踩坑 33-cdc-ops-pitfalls🌱 Schema evolution(source 改欄位 → sink 怎麼跟上);backpressure(sink 慢 → source lag);event ordering / dedup;Debezium transformation chain;跟 backend B03 #47 + B12 連動
F04-G Batch Processing 基礎設施(補)
跟 F04-C Streaming(realtime)對照——batch 處理是另一條軸:大量資料、非即時、排程觸發 。Airflow / Dagster / K8s Jobs 是 infra 層要選的。
# 主題 Slug Stage 大綱 34 Batch Processing 架構選型 34-batch-processing🌱 Airflow / Dagster / Prefect / K8s CronJob / Argo Workflows 對比;scheduler 選型標準;backfill 策略;失敗重試機制;跟 streaming(F04-C #24)的取捨 35 Spark / Flink Batch 運維 35-spark-flink-batch-ops🌱 Spark on K8s / Flink batch mode;資源配置;shuffle 磁碟 / spill;跟 Lakehouse 讀寫整合
F04-H 分析型存儲 / Lakehouse
2024+ 新戰場:OLTP 跟 OLAP 不再嚴格分離。Lakehouse (data lake + data warehouse)用 object storage(S3 / MinIO)當底層,用 open table format(Iceberg / Delta / Hudi)當元資料,配 query engine(Trino / Spark / ClickHouse / DuckDB)讀取。infra 要處理資料分層 / 存活期 / query 引擎部署 。
# 主題 Slug Stage 大綱 38 Lakehouse 全景選型 38-lakehouse-landscape🌱 存儲格式 :Apache Iceberg / Delta Lake / Apache Hudi 三巨頭對比;Query 引擎 :ClickHouse / DuckDB / DataFusion / Trino / Spark;OLTP vs OLAP 分野 ;為什麼不直接用傳統 DW(Snowflake / BigQuery);對接 CDC 做 near-realtime 分析39 ClickHouse 運維深入 39-clickhouse-ops🌱 生產最常見 OLAP :MergeTree engine family;Sharding / Replication;物化視圖;跟 Kafka 整合(Kafka engine);ZooKeeper / ClickHouse Keeper;backup(clickhouse-backup);跟 ES / Tempo 對比(ClickHouse 做 log / trace 儲存的新趨勢)
🔧 小實作注意事項
# 主題 Slug Stage 大綱 40 本機起 DB + Cache + MQ HA stack 40-local-data-ha-stack🌱 Docker Compose 模擬 Primary-Replica PG + Redis Cluster + RabbitMQ cluster 41 PG 跨 AZ failover 演練 41-pg-failover-drill🌱 Patroni + etcd;停 primary 測 RTO 42 Backup 還原演練 42-backup-restore-drill🌱 每季做一次 restore;測 RPO 是否達標 43 Debezium + Kafka + Sink demo 43-debezium-cdc-demo🌱 PG → Debezium → Kafka → ClickHouse / ES 的完整 CDC pipeline 本機起
💣 Anti-pattern
# 主題 Slug Stage 大綱 44 資料運維 Anti-patterns 44-data-ops-antipatterns🌱 DB 跑在同機器 / container 沒 persistent volume、只有 backup 沒 restore 演練、Redis 單點 production、Kafka 沒監控 consumer lag、MQ 滿了才發現、ES index 不管不分 shard、忽視 disk full alerts、Vector DB 用 flat index 撞記憶體、CDC sink 跟不上 source 卻不告警、Lakehouse 沒設 compaction、ClickHouse sharding 設錯要重建;Batch 沒 backfill plan、scheduler 單點沒 HA
🧰 對應檢查工具
# 主題 Slug Stage 大綱 45 資料運維工具 45-data-ops-tooling🌱 OLTP :pgAdmin / DBeaver / pgBackRest / Barman;Cache :RedisInsight / redis-cli;MQ :Kafka UI(AKHQ / Kafdrop)/ kcat;Search :Kibana / OpenSearch Dashboards;Vector :Qdrant UI / Weaviate console;CDC :Debezium UI / Kafka Connect API;Lakehouse :Trino UI / DuckDB CLI / ClickHouse clickhouse-client;Batch :Airflow UI / Dagster UI / Argo Workflows UI
📎 補充
# 主題 Slug Stage 大綱 S01 Database-per-service 的運維挑戰 s01-db-per-service-ops🌱 從 backend B03 F03-J 視角反向看:infra 要 manage N 個 DB 的實際負擔 S02 Managed DB 選型(RDS / Aurora / PlanetScale) s02-managed-db-selection🌱 lock-in vs 便利;成本模型;跟 infra/cloud/aws/06 RDS 對照
章節進度統計
知識主題 :41 + 2 補充 = 43 項(2026-04 新增 7 題:DB-on-K8s #13、Schema Migration 運維 #14、Stream Processing #24、Vector DB 加深 #30、CDC 選型/運維拆 32-33 、F04-G Lakehouse 全景 #34 + ClickHouse 運維 #35、CDC demo #39)
🌿 growing:8(既有 infra/data-ops + pointer)
🌱 seed:35
跨系列連結
→ infra/data-ops/10, 11, 12, 13, 14, 20, 22(原始 data-ops 篇)
→ backend/database/ B03(DB 選型 / ORM)
→ backend/cache/ B13 09-10 (已 pointer 到本章 13-14 )
→ backend/queue/ B12 10-13 (已 pointer 到本章 18-21 )
→ backend/storage/ B14(lifecycle policy)
→ backend/micro-service/20, 56-57, 59-61(DB 實戰)
→ infra/cloud/aws/06 RDS / 05 Storage(雲端 managed 實作對照)
→ I03 Compute(StatefulSet for DB on K8s)
→ I05 Observability(DB metrics)
→ I09 DR(backup / restore)