云应用生命周期管理是整个云平台的核心业务,以“应用商店”为核心,实现快速的应用开发和应用分发,实现整个云应用生命周期的管理和运营。通过对虚拟机、容器和物理机以预先定义好的脚本进行编排管理,云应用可以以多实例的方式交付,每个云应用的租户单独使用一套完整的云应用。虚拟机支持KVM、Hyper-V等异构虚拟化技术。
云应用生命周期管理主要包含如下模块:
- 云应用模板定义:应用模板语言来编写整个应用的部署架构、各组件及虚拟机之前的编排关系等信息。
- 云应用产品定义与发布:将开发好的云应用上传到应用商店,进行定价和发布。
- 云应用交付:用户购买云应用后,使用编排的方式快速交付应用。
- 云应用监控:可以监控云应用的使用情况和图形展示。
根据我们的业务规划,整个云应用生命周期管理其实为了解决三个问题:
- 如何构建适应云平台应用开发的DevOps流程。
- 在应用开发的各个阶段如何与云平台进行整合对接。
- 开发测试完成的交付物如何由云平台统一管理使用。
下面我们试着说明AWCMP是如何解决这几个问题的。
上面提到的三个问题完整的涵盖了云应用的全生命周期。AWCMP的多个服务门户和平台也正是为云应用生命周期服务的。概括起来就是两个平台、两个门户、四类角色。
开发者:应用的生产者,申请IAAS资源、申请PAAS资源,进行应用开发,CI/CD,最终将正式应用打包提交给运维管理员审核。
运维管理员:对开发者发布的应用进行审核、对运营退回的应用进行进一步的退回。
产品经理:对产品进行封装、定价。提交上架审核。
运营管理员:对商品进行审核上架、下架。
通过使用GitLab、Jenkins、NPM、maven、packer、Murano等开源技术实现整个云平台的DevOps流程。整个流程分为源码拉取、源码构建、构建镜像、部署环境、自动化测试、环境清理等任务,利用Jenkins将这些任务串联成pipeline。Jenkins赋予了任务编排的能力,通过自定义不同的任务可以完成整个DevOps流程,通过Jenkins抓取任务的执行日志,可以查看每个任务的执行情况。图1-2所示是一个典型的DevOps流程。
开发人员提交代码到GitLab后,自动触发代码的拉取任务,源码拉取后继续利用Maven进行后端程序构建输出后端程序包,利用NPM进行前端构建输出前端程序包,源码构建完毕后将程序包上传到下载服务器。
packer使用预定义脚本拉取程序包后进行镜像构建,构建完毕后输出镜像到指定位置。
Murano使用PL语言自定义脚本并结合上一个任务中输出的镜像进行环境部署,环境部署完毕后结合自动化测试工具对应用进行自动化测试。
最后,可以选择清理以上环境。有时仅仅为了验证整个DevOps流程,并不实际使用环境,此时可以选择在上述过程成功后清理环境。
AWCMP通过结合Jenkins的pipeline,解决了“如何构建适应云平台应用开发的DevOps流程”的问题。通过开发者门户的资源管理模块,开发前申请资源;通过开发者门户的持续集成模块,在开发过程中CI/CD;通过开发者门户的应用包管理在开发、测试完成后将应用打包发布,从而解决了“在应用开发的各个阶段如何与云平台进行整合对接”的问题。通过贯穿两平台、两门户的完整流程,解决了“开发测试完成的交付物如何由云平台统一管理使用”的问题。进一步来说,AWCMP真正的实现了云应用的全生命周期管理。