天天看點

【實戰】手把手教你部署靈活資料開發環境

上一期我們介紹了靈活的資料開發環境需要保證測試、風險控制和自動化,本座始終認為沒有落地方法的課題研究都是耍流氓。那既然要落地就需要選擇合适的産品。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中使用,這跟将其作為企業排程工具的用法一樣。