資料產品的應用日益廣泛,如何有效設計、開發和管理這些產品成為企業的重要課題。本文深入探討資料產品生命週期各階段的關鍵要素,從內部組件的定義到生產環境的佈署和管理,提供全面的理論框架和實踐。 隨著資料量的增長和資料複雜性的提升,企業需要更加關注資料產品的品質和可靠性。這需要一套完善的流程和方法來確保資料產品的設計、開發和運作符合預期。 從定義清晰的內部組件開始,到制定嚴格的資料管理策略,再到建立可靠的發布、治理和消費機制,每個環節都至關重要。
從資料產品的內部組件定義開始,應用程式與基礎設施資源的協同運作是確保資料產品有效性的關鍵。應用程式負責實作資料轉換邏輯,而基礎設施資源則提供計算和儲存能力。透過描述檔,可以清晰地定義這些組件的屬性、版本和平台資訊,方便後續的開發和管理。資料產品的資料管理策略也至關重要,包括資料來源的取得模式、資料處理的管道設計以及資料服務的輸出方式。 確保資料品質和一致性是資料產品成功的關鍵因素,雙時性等技術的應用可以有效提高資料產品的可靠性和可追溯性。在生產環境中,資料產品的發布、治理和消費環節也需要嚴格的流程和規範。 連續整合和連續交付可以提高發布效率,觀察性和控制機制可以確保資料產品的穩定運作,而便捷的搜尋和存取方式則可以提升資料產品的價值和應用範圍。
資料產品的內部組件描述
資料產品的內部組件可以是應用程式或基礎設施資源。應用程式實作邏輯,透過資料管道轉換,並透過輸出連接埠暴露給使用者。應用程式也可以實作有用的功能,例如實作控制、可觀察性和發現性連接埠的服務。
以下程式碼塊顯示了庫存資料產品的應用程式組件物件定義:
{
"applicationComponents": [
{
"name": "ingestion-app",
"version": "1.0.1",
"description": "從輸入連接埠讀取資料的 sidecar 應用程式",
"platform": "aws:eu-south-1:eks",
"applicationType": "sourcing-sidecar"
},
{
"name": "event-processor-app",
"version": "1.1.0",
"description": "將輸入資料轉換為 delta 庫存事件的應用程式",
"platform": "aws:eu-south-1:confluent",
"applicationType": "stream-transformation"
},
{
"name": "db-sink-connector-app",
"version": "1.1.3",
"description": "將庫存狀態儲存到 PostgresDB 的應用程式",
"platform": "aws:eu-south-1:confluent",
"applicationType": "stream-transformation"
},
{
"name": "consumption-app",
"version": "1.0.1",
"description": "透過輸出連接埠暴露資料的 sidecar 應用程式",
"platform": "aws:eu-south-1:eks",
"applicationType": "consumption-sidecar"
}
]
}
管理資料產品的中繼資料
應用程式使用各種基礎設施資源來運作(計算)和儲存已處理的資料(儲存)。以下程式碼塊顯示了庫存資料產品的基礎設施組件物件定義:
{
"infrastructuralComponents": [
{
"name": "eventStore",
"version": "1.0.1",
"description": "儲存從銷售點解除安裝的事件和由玄貓生成的領域事件的 Kafka 主題拓撲",
"platform": "aws:eu-south-1:confluent",
"infrastructureType": "storage-resource"
},
{
"name": "stateStore",
"version": "1.0.0",
"description": "玄貓使用的資料函式庫",
"platform": "aws:eu-south-1:postgres",
"infrastructureType": "storage-resource"
},
{
"name": "computeEngine",
"version": "1.0.0",
"description": "玄貓使用的叢集",
"platform": "aws:eu-south-1:eks",
"infrastructureType": "compute-resource"
}
]
}
看圖說話:
graph LR A[應用程式] --> B[基礎設施資源] B --> C[計算資源] C --> D[儲存資源] D --> E[資料函式庫] E --> F[事件儲存] F --> G[玄貓]
在這個圖中,我們可以看到應用程式如何使用基礎設施資源來運作和儲存資料。計算資源和儲存資源是基礎設施資源的兩個重要部分,資料函式庫和事件儲存則是儲存資源的具體實作。玄貓是整個系統的核心,負責處理和轉換資料。
在本文中,我們探討了如何管理資料產品的中繼資料。在下一節中,我們將深入探討設計和實作資料產品的關鍵元素。
資料產品資料管理
資料產品的核心是管理和提供高品質的資料,以支援業務需求。為了實作這一目標,需要關注資料產品的內部組件,包括資料來源、資料處理和資料服務。
資料來源
資料產品畫布(Data Product Canvas)可以幫助確定每個資料產品所需的資料、資料來源以及如何取得資料。這些訊息可以在描述檔的輸入連接埠(Input Port)部分正式描述。每個輸入連接埠可以從外部系統或其他資料產品中取得有趣的資料。
資料取得模式
資料取得模式可以分為兩種:推播模式(Push Mode)和提取模式(Pull Mode)。在推播模式中,資料源將資料推播給資料產品。在提取模式中,資料產品主動從資料源中提取資料。
期望物件
期望物件(Expectation Object)可以用於指定從資料源取得的資料必須滿足的約束條件,以確保資料產品能夠正確地處理這些資料。
適配器
適配器(Adapter)是負責從外部系統或其他資料產品中取得資料並將其儲存在適合的儲存倉函式庫中,以便於後續處理的應用組件。適配器需要根據描述檔中輸入連接埠的描述來實作。
資料處理
資料產品畫布可以幫助確定需要對輸入資料應用哪些業務邏輯,以使其豐富化並準備好供消費。為此,需要實作一個或多個應用程式,組織成一個或多個資料管道。
資料管道
資料管道的實作取決於所選擇的整合框架。平台團隊需要提供參考框架和組件以支援這些框架,使其更容易被產品團隊使用。然而,產品團隊應該保留選擇替代整合工具和基礎設施資源的自主權。
重複結果的可重現性
重複結果的可重現性是指保證消費者在不同時間讀取相同資料時獲得相同的結果。這可以透過確保管理的資料不可變來實作。一旦資料被取得和暴露給消費者,就不能修改。
雙時性
如果資料是狀態(State),則需要使用雙時性(Bi-Temporality)來保證不可變性。雙時性涉及跟蹤有效時間(Validity Time)和事務時間(Transaction Time)。有效時間是指資料在真實世界中被視為正確的時間,而事務時間是指資料被記錄在系統中的時間。
資料服務
資料產品畫布可以幫助確定如何暴露豐富化的資料以供消費。每種方法都支援特定的消費型別,並與輸出連接埠相關聯。提供的消費方法越多,資料產品就越通用和可重用,以支援多個業務案例。
輸出連接埠
輸出連接埠應該使用專用的適配器實作。這些適配器根據消費方法的需求轉換輸出資料,實作消費服務,並控制安全性和存取策略。
交通層
當在產品之間傳輸資料時,輸出連接埠和輸入連接埠使用的適配器可以直接通信。或者,可以有一個平台級別的交通層來調節通信。如果存在交通層,它會定義資料代理工具和路由和安全資料傳輸期間的策略。例如,交通層可能依靠一個資料虛擬化或資料分享平台來處理所有靜態資料,並使用一個串流媒體平台來處理所有透過實時事件交換的資料。然後,可以在這些資料代理工具上開發路由和安全邏輯。
資料產品的設計與開發
資料產品的設計與開發是一個複雜的過程,需要考慮多個因素,包括資料的收集、轉換和暴露。在本章中,我們將探討資料產品的設計和開發,包括如何定義資料產品的內部元件、如何描述這些元件使用描述檔,以及如何開發這些元件以收集、轉換和暴露資料。
資料產品的內部元件
資料產品的內部元件包括資料收集、資料轉換和資料暴露等。這些元件需要被設計和開發,以確保資料產品的正常運作。描述檔是用於描述資料產品的內部元件的檔案,包括資料收集、資料轉換和資料暴露等元件的描述。
描述檔的重要性
描述檔對於資料產品的管理和理解至關重要。它提供了一個統一的方式來描述資料產品的內部元件,從而方便資料產品的發現和理解。描述檔應該具有表達性、可計算性、靈活性、可擴展性、可組合性和獨立性等特點。
資料產品的開發
資料產品的開發需要考慮多個因素,包括資料收集、資料轉換和資料暴露等。開發人員需要選擇合適的方法和工具來開發資料產品的內部元件。然而,開發人員應該遵循一些關鍵原則,以確保資料產品的正常運作和可靠性。
資料產品在生產環境中的操作
在生產環境中,資料產品需要被正確地佈署和管理。這包括了資料產品的發布、治理和消費等。發布是指將資料產品佈署到生產環境中的過程,治理是指確保資料產品的完整性和遵守組織標準的過程,消費是指使用資料產品暴露的資料的過程。
資料產品的發布
資料產品的發布需要考慮多個因素,包括連續整合和連續交付等。連續整合是指在開發過程中定期驗證元件之間的整合性,以確保資料產品的正常運作。連續交付是指自動化資料產品的發布過程,以確保快速和可靠地將資料產品佈署到生產環境中。
資料產品的治理
資料產品的治理需要考慮多個因素,包括觀察性和控制等。觀察性是指監視資料產品的運作狀態,以確保其正常運作。控制是指確保資料產品遵守組織標準和政策,以確保其安全性和可靠性。
資料產品的消費
資料產品的消費需要考慮多個因素,包括搜尋和存取等。搜尋是指查找和存取資料產品暴露的資料的過程。存取是指使用資料產品暴露的資料的過程,以支援多個業務案例和管理其演化。
看圖說話:
flowchart TD A[開始] --> B[設計與開發] B --> C[描述檔] C --> D[開發] D --> E[發布] E --> F[治理] F --> G[消費] G --> H[結束]
在上面的流程圖中,我們可以看到資料產品從設計到消費的整個過程。首先,我們需要設計和開發資料產品,然後建立描述檔以描述其內部元件。接下來,我們需要開發資料產品的內部元件,然後發布到生產環境中。在生產環境中,我們需要進行治理以確保資料產品的安全性和可靠性,最後,我們可以消費資料產品暴露的資料以支援多個業務案例。
從資料產品生命週期管理的完整視角來看,構建一個高效且可持續的資料產品生態系統,關鍵在於平衡技術實踐與業務價值。深入分析資料產品的內部組件、中繼資料管理、資料管理流程以及設計、開發、營運環節,我們可以發現,資料產品的成功並非僅僅依靠技術架構的完善,更需要清晰的業務目標導向、嚴謹的資料治理策略以及持續的迭代最佳化。
挑戰在於如何有效整合不同階段的工作,打破資料孤島,並確保資料品質和一致性。例如,描述檔的標準化和可計算性至關重要,它不僅是跨團隊溝通的橋樑,更是自動化流程的基本。同時,雙時性資料管理策略的應用,有效解決了資料變更帶來的挑戰,確保了資料分析結果的可靠性和可重複性。此外,構建靈活的資料服務層,支援多種消費模式,才能最大化資料產品的價值,賦能更多業務場景。
展望未來,隨著資料中台概念的普及和資料治理體系的完善,預計資料產品的開發和管理效率將大幅提升。低程式碼/無程式碼平台的興起,也將降低資料產品的構建門檻,讓更多業務人員參與到資料產品的建立和應用中。同時,更人工智慧化的資料品質監控和預警機制,將進一步保障資料產品的穩定性和可靠性。
玄貓認為,資料產品的發展趨勢將會更注重業務價值的快速交付和資料資產的有效管理。對於企業而言,建立一套完善的資料產品管理體系,並將其融入到企業的資料戰略中,將是未來制勝的關鍵。