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、災難恢復」。


🌱 基本介紹

#主題SlugStage大綱
01資料層運維全景01-data-ops-landscape🌱DB / Cache / Queue / Object Storage / Search 運維的共通議題:HA / backup / scaling / 成本

❓ 為什麼需要

#主題SlugStage大綱
02為什麼 DB 不能單機跑 production02-why-no-single-db🌱單點故障、備份難、擴展撞牆;雲上 managed vs 自架對比
03為什麼 Redis 需要 Cluster / Sentinel03-why-redis-ha🌱單 master 掛了全服務斷;從 backend B13 吸收的 HA 架構需求
04為什麼 RabbitMQ / Kafka 運維複雜04-why-mq-ops-complex🌱cluster / 磁碟 / partition / consumer lag 監控都是運維專業

🕰️ 演進

#主題SlugStage大綱
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 運維

#主題SlugStage大綱
07PostgreSQL 運維⛔️ infra/data-ops/11-database-postgresql🌿跨系列
08PG 進階運維⛔️ infra/data-ops/13-postgresql-advanced🌿跨系列
09DB 全景選型⛔️ infra/data-ops/12-database-landscape🌿跨系列
10Replication / HA 架構10-replication-ha🌱Primary-Replica / Multi-Primary / Patroni;failover 自動化;跟 infra/cloud/aws/06 RDS 對照
11Backup / PITR 策略11-backup-pitr🌱Full / incremental / WAL;PITR(point-in-time recovery);自架 pg_basebackup 跟 pgBackRest
12DB Connection Pooling(Infra 層)12-db-connection-pooling🌱PgBouncer / ProxySQL 部署;跟 backend B03 connection pool 分工
13DB-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 整合
14Schema 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)

#主題SlugStage大綱
15Redis 持久化(吸收 backend B13 #09)15-redis-persistence🌱RDB / AOF / 混合模式;災難恢復策略;磁碟 IOPS 需求
16Redis Cluster / Sentinel(吸收 backend B13 #10)16-redis-ha-architecture🌱Sentinel vs Cluster 選型;shard / slot;failover 機制
17Redis 替代選項(DragonflyDB / KeyDB / Valkey)17-redis-alternatives-ops🌱多執行緒 Redis;遷移成本;2025 Valkey fork 事件影響
18Memcached 運維18-memcached-ops🌱適用場景、consistent hashing、跟 Redis 定位差異

F04-C Queue / Messaging / Streaming 運維(吸收 backend B12)

#主題SlugStage大綱
19Event-driven Queue 概觀⛔️ infra/data-ops/22-event-driven-queue🌿跨系列
20RabbitMQ 運維(吸收 backend B12 #10)20-rabbitmq-ops🌱Cluster / HA / quorum queue;mirroring / shovel / federation;磁碟 / memory 警戒線
21Kafka 運維(吸收 backend B12 #11)21-kafka-ops🌱Broker / ZK / KRaft;partition / rebalance / consumer lag;跨 data center 複製(MirrorMaker)
22NATS / JetStream 運維(吸收 backend B12 #12)22-nats-ops🌱Cluster / leaf node / 持久化;low-latency 場景部署
23Redis Streams 運維(吸收 backend B12 #13)23-redis-streams-ops🌱Consumer group / XADD / XACK;跟 Redis Cluster 整合
24Stream 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 / 檔案運維

#主題SlugStage大綱
25Object Storage 基礎⛔️ infra/data-ops/10-storage-management🌿跨系列
26自架 MinIO / SeaweedFS26-self-hosted-object-storage🌱地端 / 混合場景;HA 部署;跟 S3 API 相容性
27Lifecycle Policy 實作27-lifecycle-policy-ops🌱冷熱資料自動遷移(從 backend B14 吸收);Glacier / Archive tier 策略

F04-E Search Engine 運維

#主題SlugStage大綱
28Elasticsearch 深入運維⛔️ infra/data-ops/14-elasticsearch-deep-dive🌿跨系列
29OpenSearch vs Elasticsearch 202629-opensearch-vs-es🌱License 事件後的選型;跨雲部署
30Vector 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

#主題SlugStage大綱
31ETL / Data Movement⛔️ infra/data-ops/20-data-movement-etl🌿跨系列
32CDC 平台選型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 對比
33CDC 運維踩坑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 層要選的。

#主題SlugStage大綱
34Batch Processing 架構選型34-batch-processing🌱Airflow / Dagster / Prefect / K8s CronJob / Argo Workflows 對比;scheduler 選型標準;backfill 策略;失敗重試機制;跟 streaming(F04-C #24)的取捨
35Spark / 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 引擎部署

#主題SlugStage大綱
38Lakehouse 全景選型38-lakehouse-landscape🌱存儲格式:Apache Iceberg / Delta Lake / Apache Hudi 三巨頭對比;Query 引擎:ClickHouse / DuckDB / DataFusion / Trino / Spark;OLTP vs OLAP 分野;為什麼不直接用傳統 DW(Snowflake / BigQuery);對接 CDC 做 near-realtime 分析
39ClickHouse 運維深入39-clickhouse-ops🌱生產最常見 OLAP:MergeTree engine family;Sharding / Replication;物化視圖;跟 Kafka 整合(Kafka engine);ZooKeeper / ClickHouse Keeper;backup(clickhouse-backup);跟 ES / Tempo 對比(ClickHouse 做 log / trace 儲存的新趨勢)

🔧 小實作注意事項

#主題SlugStage大綱
40本機起 DB + Cache + MQ HA stack40-local-data-ha-stack🌱Docker Compose 模擬 Primary-Replica PG + Redis Cluster + RabbitMQ cluster
41PG 跨 AZ failover 演練41-pg-failover-drill🌱Patroni + etcd;停 primary 測 RTO
42Backup 還原演練42-backup-restore-drill🌱每季做一次 restore;測 RPO 是否達標
43Debezium + Kafka + Sink demo43-debezium-cdc-demo🌱PG → Debezium → Kafka → ClickHouse / ES 的完整 CDC pipeline 本機起

💣 Anti-pattern

#主題SlugStage大綱
44資料運維 Anti-patterns44-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

🧰 對應檢查工具

#主題SlugStage大綱
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

📎 補充

#主題SlugStage大綱
S01Database-per-service 的運維挑戰s01-db-per-service-ops🌱從 backend B03 F03-J 視角反向看:infra 要 manage N 個 DB 的實際負擔
S02Managed 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)