西红柿小生|AWCMP实现云应用全生命周期管理

云应用生命周期管理是整个云平台的核心业务 , 以“应用商店”为核心 , 实现快速的应用开发和应用分发 , 实现整个云应用生命周期的管理和运营 。 通过对虚拟机、容器和物理机以预先定义好的脚本进行编排管理 , 云应用可以以多实例的方式交付 , 每个云应用的租户单独使用一套完整的云应用 。 虚拟机支持KVM、Hyper-V等异构虚拟化技术 。
云应用生命周期管理主要包含如下模块:

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