上一期我們介紹了敏捷的數據開發環境需要保證測試、風險控制和自動化,本座始終認為沒有落地方法的課題研究都是耍流氓。那既然要落地就需要選擇合適的產品。Informatica大數據管理工具(BDM, Big Data Management)推出於2015年,作為業內首款大數據管理解決方案,該平臺將大數據集成、大數據質量和治理,以及大數據安全整合到一起。
BDM部署方式概覽
由Informatica開發人員開發的映射,工作流和其他對象存儲在與模型庫服務(MRS)集成的模型庫中。在執行這些設計時對象,它們會被部署到運行時數據集成服務(DIS)環境中。而且在一般企業中往往會有多套Informatica環境,在Dev環境開發的代碼隨後會被部署到之後的非生產環境QA和UAT以及生產環境Production中。儘管Dev環境同時包含設計時和運行時服務,但之後的環境不必同時配置這兩項服務。為將對象從一個環境部署到另一個環境,必須將對象添加到“應用程序”容器中。應用程序可以部署到運行時DIS或應用程序歸檔(.iar)文件中。隨後,可以將應用程序歸檔文件部署到相同或不同域中的數據集成服務,如下所示。
BDM經典部署
在經典部署模型中,會有以下的流程:
- 待部署的元數據/對象會部署到開發環境的運行時;
- 單元測試完成後,對象將通過XML導出/導入或應用
- 導出的形式遷移到後續環境(例如QA)的MRS中;
- 在QA環境MRS中,重構並將應用部署到DIS;
- 功能測試完成後,對象將再次從QA MRS遷移到UAT的MRS,同樣通過XML導出/導入或應用導出的方式;
- 在UAT環境中,重構並將應用部署到DIS;
- 後續環境部署……
通過這種方法,在每個環境的MRS中都維護了映射和工作流的設計時副本。在每個環境中重建應用程序,並將其部署到相應的DIS。在將對象從一個MRS遷移到另一個MRS的過程中,可以選擇一種可用的替換策略。替換策略包括:在發生衝突時從源替換對象,重用目標存儲庫中的對象等等。發生衝突時,如果目標庫的對象未被源庫替代,那每一個環境的應用會與先前環境不同,造成因版本問題導致的組件依賴性問題。
BDM敏捷部署
在敏捷部署模型中,會有以下的流程:
- 一個應用歸檔會在Dev環境的模型庫中構建;
- 此應用歸檔文件(.iar)被上傳到中心版本控制系統,例如GIT或SVN;
- 此應用歸檔文件(.iar)從版本控制系統中通過infacmd命令行被下載並部署到Dev環境的DIS中;
- 單元測試完成後,同樣的步驟在QA DIS中重複並完成應用部署;
- 功能測試完成後,同樣的步驟在UAT DIS中重複並完成應用部署;
- 後續測試與後續環境部署……
在這種方式中,跨多個環境使用單個應用程序歸檔文件,因此可以確保一致性。儘管不常見,但可以選擇將應用程序歸檔導入MRS,以維護對象的設計時副本。
BDM自動化部署
infacmd命令行工具除了下載應用歸檔外,還可以實現應用的自動化部署。上述兩種部署模型都可以通過命令行工具實現自動化。集成自動化工具(例如Jenkins)的BDM可以實現全流程的自動化。
通過集成對象導入導出(oie)插件的infacmd命令行工具可以將設計時應用部署到Informatica應用歸檔(.iar)文件中。命令行示例如下:
infacmd.sh oie deployApplication -dn $infaDomainName -un $infaUserName -pd $infaPassword -sdn $infaSecurityDomain -rs $designTimeMRSName -ap $applicationPath -od $Output_Directory
上述使用了若干用戶定義的環境變量。根據企業/組織的命名要求可以定製化。提供的密碼區分大小寫。當然也可以將加密的密碼字符串存儲在預定義的環境變量INFA_DEFAULT_DOMAIN_PASSWORD中。使用加密密碼時,不需要添加-pd選項。
一旦應用歸檔文件創建完畢,GIT或其他版本控制系統就可以追蹤並審計該文件的一切變更操作。
接下來,可以將應用歸檔文件部署到相同或不同域的DIS中。通常,應用歸檔文件是在開發域之外創建的,並最終部署到QA,UAT和生產域中。這可通過帶有數據集成服務(DIS)插件的infacmd命令行工具來實現。此類部署命令的示例如下:
infacmd.sh dis deployApplication -dn $infaDomainName -un $infaUserName -pd $infaPassword -sdn $infaSecurityDomain -sn $dataIntegrationServiceName -a $applicationName -f $applicationArchiveFileName
一旦部署成功,DIS插件中的listApplications和listApplicationObjects可用於分別獲取已部署應用程序及其內容的列表。此信息可用於部署後驗證/健全性檢查。
與Jenkins集成
上述的命令行工具也可用於在Jenkins任務中啟動部署過程
通過Jenkins部署Informatica BDM不需要依賴任何第三方插件。infacmd的命令行工具也可以直接在Jenkins中使用,這跟將其作為企業調度工具的用法一樣。