先確認痛點,再上重武器

· tech

#concept#data-engineering

這是一篇概念筆記 —— 一個我反覆在用的判斷,獨立成篇,讓其他文章可以連回來。

一句話:在引入任何重型工具或架構之前,先確認你的痛點真的到了需要它的量級。 沒到,就別上 —— 因為重武器的成本不在「裝起來」,在「之後每天要餵養它」。

痛點還沒到 → 輕量解 本機 PySpark · dbt + 倉儲 直接打 API · 兩層架構 成本低、好維護 痛點到了 → 才上重武器 Spark 叢集 · Kafka Airflow · 多層 Medallion 威力強,但每天要餵養 痛點臨界點 痛點量級(資料量 · 來源數 · 編排複雜度)→
判準是「成本 ÷ 痛點」的比值:痛點具體到那個量級才跨線上重武器;只是「聽起來該有」就先待在左邊

什麼是「重武器」

我指的是那些威力強、但維運成本也高的東西:AirflowSparkKafka、自架叢集、多層資料架構…… 它們都能解決真實且困難的問題。但每一個都同時帶來一整套要學、要監控、要值班、要除錯的負擔。威力與負擔是綁在一起賣的,你不能只拿前者。

失敗模式:把複雜度當成就

我看過最貴的錯,不是「沒上對工具」,而是太早上、為了用而用:

  • 資料還在幾 GB,就先架一個 Spark 叢集 —— 其實本機 PySpark 甚至 dbt + 倉儲就解決了。
  • 兩三個服務偶爾傳個訊息,就扛一整套 Kafka —— 直接打 API 或用輕量佇列往往更划算。
  • 只有一兩個報表,就硬切三層 Medallion —— 兩層(原始 + 報表)就夠。

這些決定的共通點,是把「用了很厲害的東西」當成工程成就。但能扛的複雜度是有限的預算,花在這裡,就沒得花在真正有差異化的問題上。

判準:痛點到了那個量級了嗎

上重武器前,我會逼自己回答一個具體問題:現在這個痛,是它要解的那種痛嗎?

  • 單機真的裝不下、算不完了嗎?→ 才輪到 Spark。
  • 真的多來源、多消費者、要稽核與重建了嗎?→ 才輪到分層架構 / Kafka。
  • 真的有「定時、相依、失敗要重試」的編排需求了嗎?→ 才輪到 Airflow。

痛點具體、可指認,才上;只是「聽起來該有」或「履歷想寫」,就先忍住。

但這不是「反對工具」

關鍵的反面:一旦痛點到了,就別猶豫。 這個原則不是叫你停在土法煉鋼 —— 是叫你把重武器留給對的時機。它也有例外:像 dbt,導入成本低、下檔風險小、投報率高,我就會說「幾乎可以直接上」。判準從來是成本與痛點的比值,不是「工具越少越好」。

重武器是手段,不是成就。複雜度要花在刀口上 —— 這是我幾乎每次做技術選型都會先過一遍的那把尺。