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

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

上一期我们介绍了敏捷的数据开发环境需要保证测试、风险控制和自动化,本座始终认为没有落地方法的课题研究都是耍流氓。那既然要落地就需要选择合适的产品。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
开发环境部署教程
开发环境部署教程
55 0
|
2月前
|
Kubernetes jenkins 持续交付
微服务从代码到k8s部署应有尽有系列(十四、部署环境搭建)
微服务从代码到k8s部署应有尽有系列(十四、部署环境搭建)
|
1月前
|
JavaScript 测试技术 持续交付
构建高效的开发环境:工具与实践指南
在软件开发中,高效的开发环境对于提升生产力和代码质量至关重要。本文将介绍如何通过选择合适的工具和实践来打造高效环境,包括减少干扰、提高效率和提升代码质量。首先,文章将探讨选择正确的代码编辑器,如 Visual Studio Code 和 Sublime Text,并介绍如何配置编辑器以提高工作效率。接着,文章将讲解版本控制系统的使用,特别是 Git 的基本操作及 GitHub、GitLab 等远程仓库服务的选择。此外,还将讨论代码质量管理,包括代码审查和单元测试的最佳实践。最后,文章将介绍持续集成和持续部署(CI/CD)工具,以及如何利用命令行工具和协作工具来进一步提升开发效率。
|
2月前
|
设计模式 监控 算法
成为工程师 - 搭建系统先搭建框架
成为工程师 - 搭建系统先搭建框架
|
3月前
|
Java 关系型数据库 开发工具
Java开发者必备技能与工具:构建高效开发环境的指南
【7月更文挑战第23天】作为Java开发者,掌握核心技能、熟练使用开发工具与框架、不断提升自己的软技能是构建高效开发环境的关键。希望本文能够为广大Java开发者提供一些有价值的参考和启示,助力大家在Java开发的道路上越走越远。
|
4月前
|
搜索推荐 物联网 数据库
技术笔记:X+(xPlus)部署指南
技术笔记:X+(xPlus)部署指南
28 1
|
5月前
|
消息中间件 前端开发 Java
从0到1参与开源项目——EFAK(本地开发环境搭建)
从0到1参与开源项目——EFAK(本地开发环境搭建)
93 0
|
资源调度 前端开发 编译器
Stenciljs 学习之搭建项目
Stencil 是一个生成 Web Components(更确切地说,是自定义元素)的编译器。Stencil 将最流行的框架的最佳概念结合到一个简单的构建时工具中。 学习一个框架肯定是重创建项目开始啦!现在就让我们一起学习一下怎么创建项目吧。
100 0
|
持续交付 UED
《小团队web技术搭建》(三)环境和工具的准备-第三部分
《小团队web技术搭建》(三)环境和工具的准备-第三部分
135 0
|
存储 域名解析 测试技术
《小团队web技术搭建》(一)环境和工具的准备-第一部分
《小团队web技术搭建》(一)环境和工具的准备-第一部分
148 0