DevOps实践

DevOps实践-设计-部署流水线设计

2019-05-10  本文已影响0人  Wales_Kuo

DevOps实践系列文章,请参见连接。

描述

在一个软件产品公司中,一般的基础设施会包括在每个产品线上的各种环境、以及针对这些环境构建起来的部署流水线。

一个已经上线的正式产品,第一要务就是保证线上系统是稳定可靠运行的。所以需要通过各种手段保证新功能上线,线上系统问题的快速反馈与立即解决。根据不同公司产品形态的不同,每个公司都需要有一套功能上线流程以保证线上系统的正常运行。


开发到上线的流程(使用mermaid编写)

上图中比较详尽的描述了一个功能从开发到上线的整体过程。且在过程中每一个过程都由不同的角色参与。最终保证系统在线上环境的正常运行。故根据上图的流程下面对持续交付过程中操作进行分析。

分析与拆分

软件开发是一个团队合作的工作。在图中由相关的人员做相关的推动之后功能才能进入到下一个步骤。每一个步骤都可以将动作分为:构建、部署、测试和发布。而每个步骤所做的内容也有所不同,下面以步骤和环境例举要做哪些操作:

步骤 构建 部署 测试 发布
开发集成 编译
代码扫描
单元测试
简单部署
部分环境部署
开发测试 推送到测试环境
团队间协作 编译
自动接口测试
无部署
mock服务器
接口测试 将接口模拟发布
交付测试 编译
自动验收测试
全环境部署 自动回归测试 推送到用户验证环境
交付运维 编译 容器部署
负载节点
升级脚本验证
release notes验收
推送到正式环境
正式上线 编译
构建容器
容器部署
负载节点
无测试 允许回滚

对上面的操作进行拆分后,可以分为对资源的管理工作:

设计原则

前一段时间写了一篇分层架构模式,这里以分层的方式去说明部署流水线的分层关系。这里的分层其实是理解或概念的层面。这里将分部署流水线设计分为几个层次:服务层,流程层,原子操作层。

总结

最好的实践,是在有大量项目的情况下去实现原子操作和流程层,然后在这两层上去实现具体项目的服务。如果产品型公司,比较好的方式是直接实现流程层和服务层。这样既可以满足业务要求,也可以降低流水线构建的成本。

参考

持续交付

上一篇下一篇

猜你喜欢

热点阅读