6 River Systems 如何透過 JSON Schema 節省時間並促進協作
在人工智慧和協作機器人的幫助下,6 River Systems 已成為履行業務的行業領導者。美國、加拿大和歐洲的公司使用他們全面的解決方案來優化他們的運輸工作流程,並每週履行數百萬件貨物。自 2015 年成立以來,6 River Systems 迅速成長,並經歷了許多隨著業務擴展而來的常見障礙。在這次歷程中,他們發現 JSON Schema 能夠幫助他們克服其中一些挑戰。
挑戰
與許多經歷快速成長的組織一樣,6 River Systems 在擴展規模時面臨了一系列的組織、技術和發展挑戰。當 6 River Systems 的倉庫客戶數量增加 10 倍時,公司本身也必須成長。6 River Systems 的營運、工程和分析團隊顯著擴張,因此,他們意識到他們需要更好的方法來保持一致,並溝通期望、合約和理解,不僅是彼此之間,還有與履行系統之間。
6 River Systems 使用大量的機器人和硬體,而許多這些技術並不總是能很好地協同工作。他們難以將一流的資料處理、儲存和分析工具整合到他們現有的系統中。例如,他們設施中的機器人使用機器人作業系統 (ROS) 框架,該框架儲存訊息、命令和系統狀態資訊。雖然像 ROSbag 這樣的工具可以更輕鬆地收集和分析機器人資料,但它們與 Elasticsearch 和 BigQuery 等現代資料堆疊工具不相容。此外,最廣泛使用的 ROS 版本依賴於已棄用的 Python 2.7。
快速成長不可避免的副產品之一是技術債。6 River Systems 早期的成功足以讓 Shopify 在 2019 年收購他們。他們實施的一些解決方案是短視的,他們知道他們下一個成長階段將需要他們專注於長期可持續的專案和實踐。

解決方案
透過擴大 JSON Schema 的使用,6 River Systems 能夠解決許多組織和技術問題。事實上,JSON Schema 已成為整個組織自動化的核心,這有助於他們實現更高的一致性和更高品質的結果。
為了應對溝通挑戰,6 River Systems 的分析師開始與產品工程師直接合作起草新的 schema。使用 JSON Schema,分析師可以編寫工程師立即理解的生產就緒規格。
6 River Systems 發現 JSON Schema 對於產生類型化 SDK 非常有幫助。當分析師和工程師完成 schema 的迭代後,他們使用 schema 來產生 TypeScript 介面,供機器人和整個應用程式使用。資料產生點的強類型性質使開發更加順暢,並在它們到達生產環境之前消除錯誤,這產生了重大差異。
6 River Systems 還使用他們的 schema 來自動更新目標資料庫,識別和隔離不符合規範的資料,並深入了解流經管道的資料。
以下是他們實施的一些技術解決方案
- 每次發布新的 schema 時,都會運行一系列資料庫協調步驟,以確保一切同步。資料庫表會自動建立或遷移,並且 schema 會被推送至註冊表。
- 資料處理系統使用 JSON Schema 來持續驗證資料。任何不符合 schema 規格的資料都會被重新導向到「無效事件」表(也稱為「死信」),並觸發警報。他們會追蹤無效事件的數量,並在需要時通知利害關係人。
- 他們使用 JSON Schema 來建立事件層級的命名空間,這些命名空間會被納入他們所有的指標和監控系統中。他們可以識別確切的儀器和正在管道中運行的版本,並且任何問題都會立即顯示在圖表上。
- 用於資料探索的工具(例如資料目錄)會以 JSON Schema 為基礎,因此這些工具不再需要手動抓取元資料。
- 他們開始使用 JSON Schema 來幫助自動化 dbt(一個受歡迎的倉庫分析平台)中來源的產生。因此,分析工程師或資料分析師不再需要幫助編寫新的 JSON Schema,然後在 YAML 中再次編寫相同的內容。
影響
由於使用了 JSON Schema,6 River Systems 在整個組織中看到了效益。他們發現 JSON Schema 可以節省他們技術堆疊所有層級的時間。有些人可能會說,在產生點對資料進行結構化會減慢速度,這種說法也有一定的道理。但是,6 River Systems 發現,當團隊擁有 TypeScript 介面來指出 IDE 中不正確的資料類型和遺失的屬性時,情況並非如此。
JSON Schema 是資料分析師和產品工程師都能理解的工具。這使得兩個使用截然不同語言(例如 TypeScript 和 SQL)的人可以直接溝通,6 River Systems 資料平台團隊負責人 Jacob Thomas 表示,這種好處「怎麼強調都不為過」。
JSON Schema 使 6 River Systems 能夠在整個堆疊中實施自動化。他們為儀器 SDK 實施了 TypeScript 介面,用它來產生資料倉庫的表,並在串流環境中使用它來產生 Kafka 主題和 dbt 來源。在大型履行中心,代碼發布後很難追蹤資料問題,因此使用 JSON Schema 在程式碼發布之前對其進行驗證可以節省時間並帶來安心。
隨著公司規模的擴大,讓個人透過複雜的基礎架構追蹤問題是不可持續的。使用 JSON Schema 作為整個組織的共同語言,提高了所有層級的資料品質和可見性,從而實現了可持續的實踐。

主要影響結果
6 River Systems 從使用 JSON Schema 中看到的最大優勢是他們節省的時間。對於這樣一個管理如此大量工作的小型團隊來說,每一分鐘都很重要!他們希望將所有可以自動化的內容自動化。
「我們已經處理了數億個事件,每一個事件都是『已知良好』的。這是一個有效且運作良好的模型。」
6 River Systems 發現,透過使用 JSON Schema,他們可以
- 將已知的良好儀器部署到現場數千個機器人。
- 實現以 TypeScript 和 JavaScript 思考的產品工程師、以 Python 思考的資料工程師以及以 SQL 思考的分析師之間的有效協作。
- 驗證到達他們資料收集基礎架構的每個有效負載。
- 主動為資料探索機制和目錄播種,而不是讓工具手動抓取元資料。
由於使用了 JSON Schema,他們已經能夠在生產者端實施諸如 Quicktype 和 TypeBox 之類的工具,並在客戶端實施基於 JSON Schema 的驗證器。透過一些連接兩者的邏輯,他們的資料倉庫可以保持最新狀態。
6 River Systems 的歷程
6 River Systems 於 2015 年在麻薩諸塞州沃爾瑟姆成立,並於 2019 年成為 Shopify 的子公司。與許多快速成長的公司一樣,6 River Systems 發現他們需要做出一些改變,以維持他們早期的成功。讓我們來看看 6 River Systems 如何經歷識別他們面臨的挑戰以及他們考慮的不同解決方案的過程。
識別痛點
在 6 River Systems 剛起步時,他們處理了大量沒有上下文的半結構化數據。他們無法得知數據的含義、如何結構化數據,以及哪些是可接受的,哪些不是。他們成立了一個團隊來分析這些數據,但隨著數據量的增加,擴展團隊變得難以持續。此外,儀器的設置經常變更,有時甚至完全移除,這使得數據的脈絡更加難以理解,並導致面向客戶的儀表板故障。
當所有這些事情發生的同時,新客戶持續加入。整個組織的成本都在增加,而 6 River Systems 知道他們需要使用可持續的長期解決方案盡快擴張,同時不阻礙目前的開發工作。
「我們很快就意識到,我們需要一個解決方案來表達期望、契約和理解——一個適用於各個團隊中系統和人員的 IDL。」
尋找解決方案
在他們尋找維護數據明確契約的解決方案時,以下是他們考慮的一些選項:
- Protobuf:雖然 Protobuf 運作良好,但它不如 JSON 常見。分析師通常不熟悉它,而 JSON 是他們每天都在使用的東西。由於 6 River Systems 的工程和分析團隊密切合作,他們需要一個對兩者都同樣容易理解的解決方案。
- Apache Avro:Avro 有很多優點,但它與 Kafka 生態系統密切相關,而 6 River Systems 並未使用 Kafka。
- JSON Schema:與其使用新技術完全重寫堆疊,不如使用 JSON Schema 作為一個易於理解的漸進式解決方案。JSON 已經被前端工程師廣泛使用,它可以很好地與 Node.js 和 TypeScript 生態系統集成,並且可以用少量的修改「附加」到現有程式碼。
驗證解決方案
事實證明,使用 JSON 和 JSON Schema 是堆疊各個層級的最佳解決方案。他們無需從頭開始,可以使用 JSON Schema 來增強上游流程,同時自動化下游流程。他們能夠使每個 schema 比以前更嚴格,並對數據強制執行更多約束。
「『啊哈!』的時刻是當團隊不再需要與我們溝通來推送新的儀器設置時。產品團隊和分析師可以互相交流,而良好的數據將會出現在 BigQuery 中。」
雖然 6 River Systems 以前曾在公司中的許多領域使用 JSON Schema,但他們現在使用它來驅動 UI 元件、工作流程和組態管理系統,以及與倉儲管理系統的傳入和傳出整合。透過在整個組織中一致地實施 JSON Schema,他們有信心在持續成長和擴展的同時,始終保持他們所聞名的高品質解決方案。
感謝 Jacob Thomas 和 6 River Systems 讓我們能與您分享這個案例研究。
經許可使用圖片。