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

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

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

相关文章
|
Unix Linux Windows
如何调整服务器系统时间
如何调整服务器系统时间
1213 0
|
2月前
|
缓存 人工智能 NoSQL
从缓存 CAS 看Kimi K2使用的MuonClip优化器
对每天和 Redis、Caffeine 打交道的 Java 工程师来说,MuonClip 的“qk-clip”机制听起来像玄学;但如果把它翻译成你熟悉的 分布式缓存并发写冲突,味道立刻对了。
190 0
|
11月前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
702 6
|
Kubernetes 容器
error: no configuration has been provided, try setting KUBERNET
error: no configuration has been provided, try setting KUBERNET
171 0
|
11月前
|
存储 缓存 前端开发
Web应用中的存储方式有哪些?
本文首发于微信公众号“前端徐徐”,介绍了几种常见的前端数据存储技术:Cookie、Web Storage(包括 localStorage 和 sessionStorage)、IndexedDB、Cache Storage 和 Memory Storage。每种技术的特点和使用场景不同,适用于不同的开发需求。文章详细解释了它们的使用方法、特点和应用场景,并提供了代码示例。
1399 2
Web应用中的存储方式有哪些?
|
11月前
|
人工智能 API 弹性计算
在阿里云快速启动LibreChat轻松玩转AI对话
本文介绍了LibreChat的基本信息,并通过阿里云计算巢完成了LibreChat的快速部署,使用者不需要自己下载代码,不需要自己安装复杂的依赖,不需要了解底层技术,只需要在控制台图形界面点击几下鼠标就可以快速部署并启动LibreChat,非技术同学也能轻松搞定。
|
11月前
|
JavaScript API
Vue中使用require.context()自动引入组件和自动生成路由的方法介绍
Vue中使用require.context()自动引入组件和自动生成路由的方法介绍
455 0
|
存储 机器学习/深度学习 数据采集
深入解析大数据核心概念:数据平台、数据中台、数据湖与数据仓库的异同与应用
深入解析大数据核心概念:数据平台、数据中台、数据湖与数据仓库的异同与应用
|
存储 算法 Java
广度优先搜索(Breadth-First Search,BFS)是一种用于图的遍历或搜索的算法。
广度优先搜索(Breadth-First Search,BFS)是一种用于图的遍历或搜索的算法。
|
PyTorch 算法框架/工具
在conda中如何查看安装的pytorch版本 - 蓝易云
这个命令会列出所有与pytorch相关的包,包括它们的版本号。你可以在列表中找到pytorch的版本号。
1395 1