Skip to content

Steve Trucking 的全景圖

另有 28 種語言版本

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

A cracked truck-yard surface with each problem circled in bright paint and orange cones set out, nothing repaired yet, a delivery truck at the dock behind.
圖片由 AI 生成

第 6 個模組,共 6 個,屬於 Data Architect 課程第 4 章理解企業資料。每個模組都可以單獨閱讀。 上一篇:org 策略是全景層面的決定 · 下一篇:下一章資料品質與治理

**本模組回答的問題:**在我們設計任何東西之前,一張真實的全景圖能告訴我們什麼?

這一章一直在把鏡頭拉遠:Salesforce 只是眾多系統之一,資料的類型,Salesforce 周圍的系統,如何畫全景圖,以及 org 策略。現在我們在 Steve Trucking 上把它們串起來。但我們還不打算修復任何東西。這就是紀律:畫出存在的東西,走查每一個箭頭,看看全景圖告訴了我們什麼。

Steve Trucking 有一個 Salesforce org,在美國。Service Cloud 處理來自收貨人和零售合作夥伴的案例;Field Service 管理預約、配送小組和移動應用;Experience Cloud 給零售合作夥伴提供了一個入口網站,目前只用於索賠和報表;Sales Cloud 追蹤合作夥伴合同和新配送中心的投標。所以 Salesforce 放在中間。

左邊是人:在零售合作夥伴的配送中心裡工作的 45 名排程協調員,330 輛卡車上大約 700 名配送小組成員,60 名客戶服務人員,40 名運營、財務和銷售人員,以及大約 300 名零售合作夥伴使用者。這已經告訴了我們一些東西:這不是一個部門級的 CRM。它是覆蓋大部分業務的運營平台。但它仍然是一個方框。現在我們來看看它周圍有什麼。

Steve Trucking 的現狀全景圖 Steve Trucking 今天的全景圖,標著「現狀:今天,正式導入之前」。左邊:在九個合作夥伴配送中心內的 45 名排程協調員,330 輛卡車上約 700 名配送小組成員,100 名客服與辦公室人員,約 300 名零售合作夥伴使用者,以及每年約一百萬名收貨人。中間是一個位於美國的 Salesforce org,帶有零售合作夥伴入口網站;上方的企業身分提供商與它共用一個憑證,僅限辦公室人員。中間還有一個排程匯出作業,透過 Bulk API 從 Salesforce 拉取每週匯出,並載入 Snowflake。FleetLink 與 Salesforce 之間有一條紅色點線:缺失,卡車在哪裡?RouteDesk 與 Salesforce 之間有兩個紅色虛線箭頭:路線被重新輸入 Salesforce,完成的停靠點再被重新輸入回 RouteDesk,都是人工的。紅色虛線箭頭還把配送數量從 RouteDesk 帶進一份月度試算表,再送到財務 ERP,也是人工的。每個零售合作夥伴與 RouteDesk 之間有兩個箭頭:裝貨清單進入,由合作夥伴發起(Keystone 的檔案、Redrock 的 API、Brightwave 的 EDI);狀態發出,由 RouteDesk 發起。右下角,RouteDesk 透過簡訊和電子郵件服務商傳送一條沒有連結的前一天訊息,標為紅色;收貨人打電話來,標為紅色,其中 60% 在問「我的貨到哪裡了?」;電子郵件在 Salesforce 中變成案例。圖例:紅色表示目前不良或不當的流程,虛線表示人工完成,紅點表示缺少的連線。 現狀:今天,正式導入之前 上方:身分、APPEXCHANGE、WEB 人員 右側:內部系統 下方:客戶管道 右下:合作夥伴和服務商 排程協調員 45 名,在 9 個合作夥伴配送中心內 配送小組 約 700 人,330 輛卡車 客服與辦公室人員 100 名:服務、營運、財務 零售合作夥伴使用者 3 個合作夥伴,約 300 名 收貨人 每年約 100 萬 企業 IdP SSO 僅限辦公室人員 零售合作夥伴入口網站 匯出作業 Snowflake 營運與財務分析 FleetLink 每分鐘一筆 GPS;單獨的螢幕 財務 ERP 向合作夥伴開發票,付款給配送小組 月度試算表 配送數量,人工 RouteDesk(舊系統) 配送中心內的路線;8 年歷史 電話 客服人員 電子郵件 電子郵件轉案例 簡訊和電子郵件服務商 前一天訊息,無連結 Redrock REST API、webhook Keystone 透過 SFTP 傳送 CSV Brightwave 透過第三方網路的 EDI Salesforce 一個美國 org 僅限辦公室人員 打電話:60% 問貨到哪裡了? 案例進入 裝貨清單進入(API) 狀態發出(webhook) 裝貨清單進入(檔案) 狀態發出(檔案) 裝貨清單進入(EDI) 狀態發出(EDI) 每週匯出(Bulk API) 每週載入 路線,重新輸入 完成的停靠點,重新輸入 缺失:卡車在哪裡? 前一天訊息,無連結 配送數量 每月,人工 Salesforce 社群 人員 身分、應用程式、Web 內部系統 客戶管道 資料進出 整合層 從發起連線的系統開始;標籤說明傳送的內容 虛線:人工完成 紅色:目前不良或不當的流程 紅點:缺少的連線 共用憑證:信任,無直接呼叫 © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

正式實施之前的 Steve Trucking 現狀。每一份裝貨清單都落到 RouteDesk;協調員手工把路線重新錄入 Salesforce,再把完成的停靠點錄回去;FleetLink 缺少它的連線。

這是一個現狀,在正式實施之前,我會在圖上寫明這一點。然後我把調色盤開啟。在一個已完成系統的全景圖上,我不用紅色;在現狀圖上我會用。紅色標出糟糕或不當的流程,虛線標出手工完成的事情,紅色點線標出缺失的連線。不畫某個箭頭本身也說明了一些東西。這些都不是裝飾:每一條紅線都是一條等著被寫下來的需求。

三個零售合作夥伴用三種不同的方式傳送裝貨清單,所以要把每一個分開畫。

Keystone 每天下午把一份 CSV 裝貨清單放到一臺 SFTP 伺服器上,用於兩天後的配送,並希望每晚收到一份回傳的狀態檔案。兩個箭頭:裝貨清單以檔案方式進來,由 Keystone 發起;狀態以檔案方式出去,由 RouteDesk 發起。非同步,時間視窗很寬。

Redrock 通過一個 REST API 傳送裝貨清單,並期望狀態一發生變化就通過 webhook 收到更新。兩個箭頭,兩種機制:Redrock 通過 API 呼叫進來送裝貨清單,RouteDesk 通過 webhook 向外呼叫送狀態。近即時。

Brightwave 通過一個第三方網路傳送 EDI 檔案,並期望收到回傳的 EDI 狀態報文。又一種格式,又一種機制。

同樣的業務概念(裝貨清單、配送、狀態),三種完全不同的整合。不要因為你希望它們一致就把圖簡化。它們不一致。這就是現狀。

然後走查它們。Keystone:SFTP 連線如何認證,檔案落在哪裡,什麼去拾取它,我們怎麼知道整個檔案都被處理了,壞的一行會怎樣,Keystone 如何在今晚的檔案之前得知一個變更?Redrock:API 如何認證,任何一方宕機時會怎樣,什麼算一次成功的 webhook,同一個狀態到達兩次會怎樣?Brightwave:誰運營 EDI 網路,轉換在哪裡做,會回傳什麼確認?我們沒有重新設計任何東西。我們在發現問題。這正是全景圖的工作。

RouteDesk 是遺留的桌面排程和路線規劃工具,各個配送中心的協調員用它把裝貨清單變成路線。它存著八年的配送歷史,而且已經計劃退役。照樣把它畫出來。一個常見的錯誤是漏掉那個「我們正在淘汰的」系統。什麼時候淘汰?假設答案是十八個月。那麼它至少在十八個月裡都是架構的一部分,而它八年的歷史,大約五百萬次配送,不會隨著應用消失而消失。再看看全景圖暴露了什麼:RouteDesk 和 Salesforce 並沒有連起來。配送小組在 Salesforce 的 Field Service 應用裡處理他們的停靠點,但路線是在 RouteDesk 裡建的,所以協調員每天晚上把路線重新錄入 Salesforce,然後再把完成的停靠點錄回 RouteDesk,好讓它向合作夥伴傳送狀態。每天大約 3,300 個停靠點,錄兩遍,全靠手工。這在圖上是紅色虛線。它還告訴你,Redrock 那個「一發生變化就傳送」的 webhook 其實並不是一發生變化就傳送。RouteDesk 今天擁有什麼?什麼依賴它?哪些歷史必須在它之後存續下來,存到哪裡:Salesforce、資料倉儲、某個檔案庫?我們還不回答。全景圖只是把問題暴露了出來。

車載遠端資訊平台 FleetLink 接收每輛卡車的 GPS:每天大約 20 萬條讀數,每輛卡車,行駛中的每一分鐘。而它沒有和任何東西相連。協調員在一塊單獨的螢幕上看它。所以把 FleetLink 畫出來,不帶任何箭頭。不要因為我們覺得應該有一條整合線,就憑空畫一條。

然後數一數零:每天 20 萬條,一年就超過 7,000 萬條。這不是「我們有 GPS 資料」。這是一個有很多零的流式資料來源,位於 Salesforce 體驗之外。Salesforce 需要每年 7,000 萬條讀數嗎?多半不需要全部。這是一個留給以後的設計問題。

財務 ERP 按每次配送、安裝和拉走舊貨向每個零售合作夥伴開票,並支付配送小組的激勵。而配送數量是通過一份月度電子表格到達它那裡的。把這份電子表格畫出來。不要因為我們是架構師、懂得更多,就把它換成一個整潔的 API 箭頭;它是當前架構的一部分。一旦畫出來,問題就來了:誰製作它,從哪個系統來,誰核對它,如果一次配送在表格發出後發生了變化會怎樣,以誰的數字為準?答案關係到錢。

Snowflake 存放運營和財務分析資料,由每週一次的匯出供數。Snowflake 自己做不到這一點;是中間的某樣東西在做:一個執行在 Salesforce 之外的計劃匯出作業,通過 Bulk API 拉取資料並載入到 Snowflake。分析放在哪裡,取決於資料放在哪裡,而 Snowflake 已經是分析的歸宿了。但時序也告訴了我們一些東西。「上個月發生了什麼?」每週一次的資料完全夠用。「這次配送現在在哪裡?」Snowflake 就不是我會開始找的地方。同一個企業,不同的工作負載,不同的新鮮度,不同的答案。

身分並非以同樣的方式覆蓋每個人

Section titled “身分並非以同樣的方式覆蓋每個人 ”

企業身分提供商放在 Salesforce 上方。辦公室員工用單點登入。但協調員和配送小組用 Salesforce 憑據登入。所以從 IdP 到 Salesforce 只畫一條信任線,會把一半的故事藏起來。真正的問題是哪些使用者通過哪條路徑登入,而這屬於全景圖。

簡訊和電子郵件服務商從 RouteDesk 給收貨人傳送一條通用的「您的貨明天送到」訊息。沒有追蹤連結。與此同時,每年大約有 18 萬個案例,其中大約 60% 是「我的貨到哪兒了?」:**每年大約 108,000 個案例在問同一個問題。**現在把它和 FleetLink 放在一起。公司知道它的卡車在哪裡。它的收貨人卻不停地打電話來問。而知道答案的系統,和回答問題的系統,並沒有連起來。我還不需要設計解決方案。全景圖已經在講這個故事了。

現在數一數移動的是什麼。和模組 4 一樣,零的個數不放在箭頭上;它們放進圖背後的清單裡,等我們做設計時,它們會決定機制。每年大約一百萬次配送,每天大約 3,300 次,每年增長 30%;每次配送大約 1.6 個明細項目;每次大約八次狀態更新,所以今天是每年八百萬次狀態更新;每年四五百萬張照片,目前存在配送小組成員自己的手機上;每天大約 20 萬條 GPS 讀數;每年大約 18 萬個案例。一個標註「配送狀態」的箭頭不是偶爾才有的一條訊息。方框告訴你存在什麼。箭頭告訴你什麼在移動。零的個數告訴你,你的假設能否經得起現實的考驗。

Steve Trucking 的清單,附上零的個數 Steve Trucking 今天的清單,每類資料一行,資料量和機制用同一種顏色標示。合作夥伴裝貨清單:交易資料,從每個零售合作夥伴進入 RouteDesk,每年約一百萬次配送,成長 30%,透過 SFTP 檔案、REST API 和 EDI。配送狀態:交易資料,從 RouteDesk 到各合作夥伴,每年約八百萬次更新,透過夜間檔案、webhook 和 EDI。路線與完成的停靠點:在 RouteDesk 與 Salesforce 之間,每天約 3,300 個停靠點,雙向,由協調員人工重新輸入。GPS 讀數:串流資料,在 FleetLink 中,每天約 20 萬筆,每年超過 7,000 萬筆,沒有連線,只有一塊單獨的螢幕。配送照片:非結構化資料,在配送小組成員自己的手機上,每年四五百萬張,完全沒有機制。案例:交易資料,在 Salesforce 中,每年約 18 萬個,60% 在問配送到哪裡了,透過電話和電子郵件轉案例。用於開票的配送數量:交易資料,在財務 ERP 中,每月一次,透過一份根據 RouteDesk 人工製作的試算表。營運與財務分析:在 Snowflake 中,每週一次,透過一個經 Bulk API 拉取資料並載入 Snowflake 的匯出作業。配送歷史:在 RouteDesk 中,八年,約五百萬次配送,在一個舊系統應用程式裡。底部寫著:方框告訴你存在什麼,箭頭告訴你什麼在移動,零的個數告訴你,你的假設能否經得起現實的考驗。 資料 類型 目前所在 工作負載 資料量與時序 目前機制 合作夥伴裝貨清單 交易資料 各零售合作夥伴,再到 RouteDesk 營運 每年約 100 萬次配送,成長 30% SFTP 檔案、REST API、EDI,進入 RouteDesk 配送狀態 交易資料 RouteDesk,傳送給合作夥伴 營運 每年約 800 萬次更新 夜間檔案、webhook、EDI,來自 RouteDesk 路線與完成的停靠點 交易資料 RouteDesk 和 Salesforce 營運 每天約 3,300 個停靠點,雙向 由協調員人工重新輸入 GPS 讀數 串流資料 FleetLink 串流、營運 每天約 20 萬筆,每年超過 7,000 萬筆 無:單獨的螢幕 配送照片 非結構化資料 配送小組自己的手機 營運、歷史 每年 400 萬到 500 萬張 無 案例 交易資料 Salesforce 營運 每年約 18 萬個;60% 是「我的 貨到哪裡了?」 電話、電子郵件轉案例 用於開票的配送數量 交易資料 財務 ERP 財務 每月 一份根據 RouteDesk 人工製作的試 算表 營運與財務分析 分析資料 Snowflake 分析 每週 匯出作業:以 Bulk API 匯出,載入 Snowflake 配送歷史 歷史資料 RouteDesk 引用 8 年,約 500 萬次配送 舊系統應用程式 方框告訴你存在什麼。箭頭告訴你什麼在移動。零的個數告訴你,你的假設能否經得起現實的考驗。 © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Steve Trucking 全景圖背後的清單:資料量就寫在它將決定的機制旁邊。

還沒有目標架構,而我已經能看到重要的資料在哪裡,它是哪類資料,它流動得多快,以及各個系統如何交換它。

**考試之外:AI 改變了什麼。**假設 Steve Trucking 構建了一個代理程式,來回答收貨人的「我的貨到哪兒了?」。它應該問哪個系統?Salesforce 知道預約,FleetLink 知道卡車在哪裡,合作夥伴的裝貨清單定義了這次配送。當前的全景圖就是代理程式的地圖,而在代理程式能安全地回答之前,架構師必須知道每個事實由哪個系統權威提供,以及它有多新。把代理程式指向錯誤的來源,過時的資料就會變成一個自信的答案。

退後一步看。三個合作夥伴,三種整合風格。一個存著八年曆史的遺留排程工具,協調員每天把 3,300 個停靠點重新錄入 Salesforce,再錄回去。一個每天 20 萬條讀數、卻沒連起來的車載遠端資訊平台。財務根據一份月度電子表格來統計配送。分析資料落後一週。有些使用者用單點登入,有些不用。沒有追蹤連結,每年 108,000 個案例在問貨到哪兒了。而這一切每年都在增長 30%。

一張圖裡有這麼多架構資訊。誘惑是開始修復它。不要。還不要。我希望你能坦然地讓一張現狀圖保持難看,因為有時現狀就是難看的。重點不是用乾淨的圖讓誰刮目相看,而是對現實形成共同的理解。邊記錄邊重新設計,你就會失去基線。之後我希望能說:這是當時存在的,這是我們解決的問題,這是我們改變的東西,以及為什麼。第 6 章開始就所有權和身分做出決定,檢查點 1 則把第 1 部分串起來。Integration Architect 課程會深入設計合作夥伴的資料流。

在這個階段,架構師並不是在決定目標架構。要決定的是對現狀的理解是否足以設計一個目標架構:

  • 今天實際存在哪些系統、使用者群體、資料儲存和外部合作夥伴。
  • 什麼資料跨越每一條重要的邊界,朝哪個方向,多頻繁,通過什麼機制。
  • 運營、分析、流式、歷史和非結構化資料現在放在哪裡。
  • 哪些資料流承載的資料量最大,值得儘早關注。
  • 哪些缺口、手工步驟、孤立的系統、不清晰的權威和不一致的模式,要變成明確的設計問題。

這一章從一個想法開始:**在設計 org 之前先畫全景圖。**如果我從 Steve Trucking 的資料模型開始,我可能會在物件和關係上花好幾個小時,而與此同時,FleetLink 帶著每天 20 萬條讀數待在外面,RouteDesk 存著八年的歷史,三個合作夥伴說著三種語言,財務在用一份電子表格,每年十萬個案例在問貨到哪兒了。這些不是物件模型的問題,而是企業資料的問題。把難看的整合、那份電子表格、那個據說正在退役的系統都畫出來。寫下零的個數。走查每一個箭頭。然後你才準備好去改變它。

  • Steve Trucking 的簡介,第 2–4 節,以及它的全景圖。