名词解释
- DevOps(Development And Operations 开发和运维)是一套方法论,而不是工具。DevOps是一个面向运维的工作流,以自动化持续集成(CI)、持续部署(CD)为基础,来优化开发、测试、系统运维等环节。
- CI(Continuous Integration 持续集成)
- CD(Continuous Deployment 持续部署)
DevOps背景
随着软件发布迭代的频率越来越高,传统的“瀑布型”(开发—测试—发布)开发模式已经不能满足快速交付的需求。IT领域运营的复杂性在不断增加,云原生或其他Serverless技术发展不断演化IT技术架构,如微服务模块拆分,需要更短时间相应部署。开发运维一体化,通过高度自动化工具与流程,使得软件构建、测试、发布更加快捷、频繁和可靠。让项目团队变敏捷,在保持质量的前提下提升交付/迭代效率。
Devops价值
- 代码提交直接触发部署,消除等待时间;
- 使问题定位和调试变得简单;
- 全开发流程高效自动化;
- 持续进行自动化回归测试,提升交付质量;
- 设施共享,资源利用最大化;
CI/CD工具
- Jenkins 管控CI任务,可以利用各种丰富插件。
- Gitlab-CI 与代码工程结合,可以省略Jenkins上配置,易用性好;
DevOps涉及的技术栈与工具链
- 流程管理:进度看板,Sprint周期,可以采用Jira,Trello等工具。
- 身份及访问管理:用户权限管理的重要组成;
- 产品管理:产品的需求,定义,依赖,推广等产品线的全面管理;
- 配置管理:产品的配置维护(Nacos);
- 环境管理:资源配给和负载均衡(Nginx/SLB、K8S);
- 版本控制:代码库的创建和维护,分支管理(Git/SVN);
- 持续集成:任务调度和执行,例如Jenkins,提供产品和组件自动编译、打包和部署的能力,支持编译和部署的流程编制,进度跟踪和日志查看;
- 自动化测试:自动化测试框架,例如Appium,Selenium 以及Mock技术;
- 质量反馈:产品质量管理和监控,包括测试用例,缺陷跟踪和质量监控(Jira、禅道、bugzila);
- 文档管理:开发、运维、部署文档的统一管理;
- 运营管理:业务系统的运营操作;面向运维的统一Monitor,alarm,fault handling,资源使用和运行状况,例如Zabbix;
- 沟通管理:敏捷原则之一是沟通优于文档,Wechat/Slack。
DevOps实施成功的关键,涉及到团队管理,项目管理,技术管理等诸多方面;技术栈和工具链是DevOps的基础,运用得当可以提高团队的生产力。