devops是一种开发文化,将开发,运维,QA(Quality Assurance)统一起来形成的一整套流程和规范。 拥抱DevOps并不需要巨大技术变革,而是将合理的原则,价值观适应到企业的真实需求。
DevOps Principles
DevOps是包含了多方协作,分享,透明开放,统筹全局等精神的一种价值观,一种做事情的哲学。 同时基于综合策略和方法论,保证软件保质保量的及时交付。
- 增量发布
在devops概念兴起之前,团队需要等待部署代码,代码发布被拖延通常会导致“合并地狱”,开发者需要等待很长时间取提交代码,修正bug, 兼容性问题也不可避免。
devops鼓励开发者频繁提交代码,在devops环境中,一个项目会被切分成多个可管理的仓库,团队以微小的增量提交代码,时间间隔很短。增量发布使得开发和部署更加灵活,团队可以更加迅速响应新需求和已知bug。
- 自动化
devops最重要的就是将开发过程实现最大程度的自动化。自动化工作流允许开发者聚焦在功能开发上。任何可以被自动化的过程都需要变自动化。devops团队会自动化构建测试应用,如果有错误会及时反馈给开发者。
自动化同时在基础设施管理方面发挥着巨大作用,团队使用Infrastructure-as-Code(IaC)来供应各种资源,从容器,虚拟机到数据库,存储,裸机等都可以自动化供应,开发者只需要通过输入一个CLI命令,调用一个接口,或者跑一个脚本就可以获得想要的资源。
- DevOps流水线
DevOps是为了建造一个可复现的系统,在开发进程中可以持续发挥作用。为了实现这个目的,DevOps团队创建了流水线,流水线是由多个阶段组成的可复现系统,代码会经过每个阶段直到进入生产环境。
主要包含下面四个阶段:
- 开发: 写代码
- 构建: 编译
- 测试: 编译通过后,进行单元和集成测试
- 部署: 通过测试后,交付给最终用户。
DevOps团队实现了两个重要策略来保证一条代码平稳的发布流程。CI/CD, CI使得多个开发者频繁合并提交代码,CD则是将合并的代码频繁的发布到生产环境。
使用CI/CD,在专业的DevOps环境中,团队将保证各项事务的持续性,监控,反馈收集,部署等。
- 版本控制
版本控制不仅仅包含使用了Git去管理代码,还要找到合适的分支协作模型,版本发布的各项规范。 甚至包含数据库库表格式等。
- 协作
DevOps说到底是一种文化,让开发和运维相互信任,反馈信息及时的双向流通,形成互相协作的良好风气。在这种设定下,所有团队包括持股人都对最终交付的软件质量负责,需要持续优化提高用户满意度,创造出实际意义上的价值。
|