devops 实战原理
减少交接次数
我们在完成一个事情的时候往往会和其他的团队和人员进行大量的沟通,请求,委派,通知,协调等工作
例如:软件发布过程中就需要面临功能测试,集成测试,环境搭建,配置服务器,存储管理,网络等工作。如果任何事情都需要审核,协调势必会降低工作的效率
在软件开发交付的过程中有很多约束,包括:人员,时间,软件,服务器,网络等等
让约束点之间能够平滑过度
环境搭建:建议使用自动的环境部署,利用现在容器技术(Docker)提高整个环境的搭建速度。
代码部署:建议让代码上传,编译,部署自动化起来。这些动作在一个软件交付团队每天都在不断的上演,开发团队的人越多这个工作更是需要做。
测试执行:这个是承接上一点的,一旦一个软件发布以后就需要跟进自动化的测试。
至少用自动化脚本针对核心 20% 的功能进行测试,然后再由测试人员对具体功能进行冒烟测试。
软件随着功能扩展,测试工作量也会随之增大。如果不用自动化测试,依靠手动测试工作量是很大的。
解耦架构:随着微服务的风行,现在基本都是组件式的设计,组件出现问题都做故障隔离和熔断机制,那么也需要针对组件进行发布
反馈原则
如果说流动原则说的是,从开发到运维的快速流动,那么反馈原则就是从运维到开发快速的反馈。这两个原则周而复始运转,才能为客户交付最好最快的软件服务
一个服务/产品的交付历经了很多个过程,从需求分析,原型设计,架构设计,编码,测试,发布,集成测试,验收测试,一直到上线
发现问题,反馈问题,解决问题流程图
建立 PDCA 机制
保证源头就是保证交付的质量
需求阶段:需求评审,需求确认,需求宣讲
开发阶段:代码审核,结对编程,单元测试
测试阶段:冒烟测试,回归测试,验收测试
发布阶段:自动配置,自动部署,自动检测
制度服务于流程
开发,运维,测试相互融合