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

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

上一期我们介绍了敏捷的数据开发环境需要保证测试、风险控制和自动化,本座始终认为没有落地方法的课题研究都是耍流氓。那既然要落地就需要选择合适的产品。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中使用,这跟将其作为企业调度工具的用法一样。

相关文章
|
Java 关系型数据库 MySQL
开发环境部署教程
开发环境部署教程
75 0
|
监控 网络协议 Java
|
12天前
|
开发工具 git iOS开发
阿里同学都在用的开发环境和工具
本文主要介绍后端开发同学常用的工具以及开发环境搭建。
|
机器学习/深度学习 存储 人工智能
Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)
Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)
|
4月前
|
运维 Cloud Native Java
Java项目部署的发展流程
本文介绍了四种不同的应用部署方式:传统部署、虚拟化部署、容器化部署和云原生部署。每种方式的特点、部署流程及优缺点进行了详细说明。传统部署直接在物理机上运行应用,存在资源利用率低和运维成本高的问题;虚拟化部署通过虚拟机实现资源隔离和复用,但有性能损失和单点故障风险;容器化部署则提供轻量级、可移植的应用环境,具备良好的隔离性和一致性;云原生部署结合了容器化和微服务架构,实现高效运维和灵活扩展。
106 0
Java项目部署的发展流程
|
6月前
|
设计模式 监控 算法
成为工程师 - 搭建系统先搭建框架
成为工程师 - 搭建系统先搭建框架
|
9月前
|
Oracle Java 关系型数据库
搭建Java开发天堂:构建理想的开发环境
搭建Java开发天堂:构建理想的开发环境
105 1
搭建Java开发天堂:构建理想的开发环境
|
9月前
|
消息中间件 前端开发 Java
从0到1参与开源项目——EFAK(本地开发环境搭建)
从0到1参与开源项目——EFAK(本地开发环境搭建)
136 0
|
资源调度 前端开发 编译器
Stenciljs 学习之搭建项目
Stencil 是一个生成 Web Components(更确切地说,是自定义元素)的编译器。Stencil 将最流行的框架的最佳概念结合到一个简单的构建时工具中。 学习一个框架肯定是重创建项目开始啦!现在就让我们一起学习一下怎么创建项目吧。
129 0
|
Java 应用服务中间件 持续交付
《小团队web技术搭建》(二)环境和工具的准备-第二部分
《小团队web技术搭建》(二)环境和工具的准备-第二部分
130 0