【实战】手把手教你部署敏捷数据开发环境-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

【实战】手把手教你部署敏捷数据开发环境

简介: 关注公众号“达摩院首座”,了解开发者最真实生活

上一期我们介绍了敏捷的数据开发环境需要保证测试、风险控制和自动化,本座始终认为没有落地方法的课题研究都是耍流氓。那既然要落地就需要选择合适的产品。Informatica大数据管理工具(BDM, Big Data Management)推出于2015年,作为业内首款大数据管理解决方案,该平台将大数据集成、大数据质量和治理,以及大数据安全整合到一起。

BDM部署方式概览
由Informatica开发人员开发的映射,工作流和其他对象存储在与模型库服务(MRS)集成的模型库中。在执行这些设计时对象,它们会被部署到运行时数据集成服务(DIS)环境中。而且在一般企业中往往会有多套Informatica环境,在Dev环境开发的代码随后会被部署到之后的非生产环境QA和UAT以及生产环境Production中。尽管Dev环境同时包含设计时和运行时服务,但之后的环境不必同时配置这两项服务。为将对象从一个环境部署到另一个环境,必须将对象添加到“应用程序”容器中。应用程序可以部署到运行时DIS或应用程序归档(.iar)文件中。随后,可以将应用程序归档文件部署到相同或不同域中的数据集成服务,如下所示。
1.png

BDM经典部署
在经典部署模型中,会有以下的流程:

  • 待部署的元数据/对象会部署到开发环境的运行时;
  • 单元测试完成后,对象将通过XML导出/导入或应用
  • 导出的形式迁移到后续环境(例如QA)的MRS中;
  • 在QA环境MRS中,重构并将应用部署到DIS;
  • 功能测试完成后,对象将再次从QA MRS迁移到UAT的MRS,同样通过XML导出/导入或应用导出的方式;
  • 在UAT环境中,重构并将应用部署到DIS;
  • 后续环境部署……

2.png

通过这种方法,在每个环境的MRS中都维护了映射和工作流的设计时副本。在每个环境中重建应用程序,并将其部署到相应的DIS。在将对象从一个MRS迁移到另一个MRS的过程中,可以选择一种可用的替换策略。替换策略包括:在发生冲突时从源替换对象,重用目标存储库中的对象等等。发生冲突时,如果目标库的对象未被源库替代,那每一个环境的应用会与先前环境不同,造成因版本问题导致的组件依赖性问题。

BDM敏捷部署
在敏捷部署模型中,会有以下的流程:

  • 一个应用归档会在Dev环境的模型库中构建;
  • 此应用归档文件(.iar)被上传到中心版本控制系统,例如GIT或SVN;
  • 此应用归档文件(.iar)从版本控制系统中通过infacmd命令行被下载并部署到Dev环境的DIS中;
  • 单元测试完成后,同样的步骤在QA DIS中重复并完成应用部署;
  • 功能测试完成后,同样的步骤在UAT DIS中重复并完成应用部署;
  • 后续测试与后续环境部署……
    3.png

在这种方式中,跨多个环境使用单个应用程序归档文件,因此可以确保一致性。尽管不常见,但可以选择将应用程序归档导入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任务中启动部署过程

4.png

通过Jenkins部署Informatica BDM不需要依赖任何第三方插件。infacmd的命令行工具也可以直接在Jenkins中使用,这跟将其作为企业调度工具的用法一样。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章