Devops 是一种文化,一种方法论,而非工具集的叠加。需要明确的是,在当下敏捷开发大行其道的环境下,operation也应该配合这一趋势,采用敏捷部署,以加快TTM(Time to Markting) 和TTR(Time to repair)。需要将开发和运维打通起来,成为敏捷的一个大闭环,而非两个不同层面相互独立的流程。具体为 plan -> code -> build -> test -> release -> deploy-> operate -> monitor -> data collect -> plan.
DevOps 三大原则:
1. Infrastructure as Code
2. Continuous delivery
3. Culture of collabration
IaC :
编码:代码开发和审阅,版本控制工具、代码合并工具
构建:持续集成工具、构建状态统计工具
测试:通过测试和结果确定绩效的工具
打包:成品仓库、应用程序部署前暂存
发布:变更管理、发布审批、发布自动化
配置:基础架构配置和部署,基础架构即代码工具
监视:应用程序性能监视、最终用户体验
这种架构可以用三层架构来表示,最底层为cloud/container installation, OS installation, 中间层 为System installation/configuration, 上层为Application/Service Deployment
CD:
持续交付并不是持续部署,持续交付的理念是保证每个changeset都可以部署到生产环境,但出于业务需要可能并不需要部署。而持续部署就是每个变更自动化部署到生产环境。所以持续交付是持续部署的前提。
持续交付的核心想法在于:
部署越频繁,对部署流程就会越熟悉,自动化机制就能不断提高,从而就能获得更好的结果
部署越频繁,所部属的变更集就越微不足道,出错的概率会变小,出错后修复的效率就会大大提高,即TTR(修复/解决所需时间)指标就会越出色
2C:
2C 是 Collaboration and Communication, 开发人员和运维人员互相支持,合作,所以形成了一种who code it, who run it, who support it的文化。 敏捷要求贪婪的从客户处获取反馈并高效的不断更新自身的产品,形成idea, code,data三要素的闭环,code fast, measure fast, learn fast