尽管当前敏捷开发模式或云计算的应用大大地提高了软件应用系统的开发速度,但目前对于应用的部署仍是不断调试和耗时的过程,有些甚至需花费工程师数天时间将应用产品部署上线成功。另外部署过程往往频繁的发生在整个软件的开发周期中,在开发过程中的测试部署,在QA阶段的功能测试部署,在PreProduction环境中的验收测试部署和最后的生产环境的部署。
而反观如今的软件应用系统,其往往由好几层架构,前端应用层、数据接口层、应用逻辑层、数据库层等等,可能在每一层架构中还涉及到若干模块,同时还有对于这些模块和层相应的部署逻辑流程。那么如何将开发阶段定义好的部署过程能够快速复制到其他环境的部署,使得部署过程是自动且可重复的?如何快速定位失败部署过程的问题所在?如何快速确认当前环境所部署的模块版本情况等?Electric Cloud公司推出的ElectricFlow产品针对这些复杂性和问题有了比较好的解答。ElectricFlow提供了一个自动化驱动平台,将部署过程模型化,通过搭建部署流程使得部署过程可见、可重复以及可追溯。
其基本原理如下:
What - 应用建模
通过Layer(层)将需要部署在一起的Artifacts(构件)进行整合,部署的Artifacts(构件)可以是二进制编译产物、压缩文件、图片、配置文件或脚本等。应用模型将一些列的特定版本的Artifacts(构件)整合为一个完整包进行部署,同一应用模型支持部署到多个不同的环境中;
Where - 环境建模
支持构建环境的架构和配置信息,包括环境中所需的资源及其相关信息;构成环境的资源可以是物理机器、虚拟机或云资源;精确追踪每个环境中所部署的构件清单和版本信息;
How-可重复的部署流程建模
通过搭建部署过程流程的模型,实现部署过程自动化且可重复。图形化的应用流程建模过程,支持分支,并行等;支持跨不同环境的应用部署;可重用现有部署脚本,对现有过程的冲击较少;提供开箱即用的工具集成接口;
通过自动化平台,开发团队可以实现一键式快速部署,从原来耗时几天且容易出错的手工部署过程切换到几秒的部署过程,且部署执行过程可见。对于应用部署的所有数据都将纪录在平台数据库中,对于其他应用人员可随时追逐当前环境部署的构件情况,对于失败的部署也可快速定位和问题查找。并且能够生成相应应用部署情况报告推送给管理人员。通过自动化、可重复、可视、可追溯的部署过程真正实现应用产品持续交付和快速响应能力。