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

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

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

相关文章
|
7月前
|
Java 关系型数据库 MySQL
开发环境部署教程
开发环境部署教程
34 0
|
5天前
|
存储 消息中间件 监控
搭建分布式应用准备工作(从零到一)
搭建分布式应用准备工作(从零到一)
|
2月前
|
SQL JSON 监控
Lim测试平台快速上手教程
Lim测试平台快速上手教程
38 0
|
5月前
|
Ubuntu 开发工具 数据安全/隐私保护
C++项目实战-环境的搭建
C++项目实战-环境的搭建
57 0
|
7月前
|
小程序 前端开发 JavaScript
从零开始:小程序开发环境搭建详解
本文主要介绍了如何搭建小程序开发环境,并介绍了小程序开发的基本概念和开发流程。首先,文章介绍了小程序开发的基本要求和开发工具的安装方法,包括微信开发者工具和编辑器等。然后,文章通过实例介绍了小程序的基本结构和页面开发流程,并介绍了如何通过模板和组件开发加快开发速度。最后,文章介绍了如何通过调试和发布小程序来完成开发流程,同时给出了一些常见问题的解决方法。本文适合初学者了解小程序开发的基础知识和开发流程,帮助读者更快速地上手小程序开发。
110 0
从零开始:小程序开发环境搭建详解
|
8月前
|
资源调度 前端开发 编译器
Stenciljs 学习之搭建项目
Stencil 是一个生成 Web Components(更确切地说,是自定义元素)的编译器。Stencil 将最流行的框架的最佳概念结合到一个简单的构建时工具中。 学习一个框架肯定是重创建项目开始啦!现在就让我们一起学习一下怎么创建项目吧。
60 0
|
9月前
|
Kubernetes Docker Perl
【k8s 系列】k8s 学习八,在 K8S 中部署一个应用 下
接着上一篇继续部署应用到 K8S中 之前简单部署的简单集群,三个工作节点是运行在 docker 和 kubelet 的,还有一个是控制节点
|
9月前
|
Kubernetes 负载均衡 程序员
【k8s 系列】k8s 学习七,在 K8S 中部署一个应用 上
本身在 K8S 中部署一个应用是需要写 yaml 文件的,我们这次简单部署,通过拉取网络上的镜像来部署应用,会用图解的方式来分享一下,过程中都发生了什么
169 0
|
项目管理
软件工程高效学 | 实战案例:禅道进行Bug管理
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动,其根本目的是让软件项目尤其是大型项目的整个软件生命周期(从分析、设计、编码到测试、维护全过程)都能在管理者的控制之下。本篇通过禅道进行Bug管理。
235 0
软件工程高效学 | 实战案例:禅道进行Bug管理
|
机器学习/深度学习 算法 计算机视觉
佛萨奇2.0系统开发搭建源码部署教程
佛萨奇2.0系统开发搭建源码部署教程
229 0

热门文章

最新文章