devops是什么
第一次接触devops这个词是2018年入职到 环球易购 公司。当时大佬对我们组说 要做一个运维自动化平台并贯彻devops理念。 我当时对devops 认知就是 “开发运维工具集成到平台” 给运维的同事使用,减少手动重复执行的工作,解放他们的双手。在后面随着平台的开发,对devops又有了新的理解,是把各个工具集成一个 部署流程,从点到线,从线到面 覆盖整个运维的工作。不能单纯做工具,必须有流程。随着 工作不断深入, 发现以前对devops视野是还是局限了,devops不单是运维的研发这两种角色之间的事,也不只是部署的事。一个需求从提出到上线包含的阶段有需求,编码,测试,构建,安全审核,发布,验收,发布完成等。devops完整的生命周期必须包含这些阶段,里面参与的角色有 产品、项管、业务研发、测试、安全、运维角色。devops理念必须考虑到这些阶段和角色。现在我个人对应 devops 定义就是 平台、流程(各个阶段)和各个角色有机结合,以协作(各个角色协作配合), 自动化(工具), 可度量(可以查看流程各个环节是否有问题,发现问题不断优化,形成闭环)作为指引,以快速,稳定交付,并可以不断改进优化自身流程做为目的。
为什么会有devops
这里要说下 软件开发流程,
瀑布式开发
瀑布式开发的基本流程是 需求 → 设计 → 开发 → 测试 , 是一个更倾向于严格控制的管理模式 。要求有明确的需求,大家按照需求一步步做好规划,每一阶段工作的完成是下一阶段工作开始的前提,每一阶段都要进行严格的评审,保证各阶段的工作做得足够好时才允许进入下一阶段。
敏捷开发
敏捷开发是一种应对快速变化的需求的一种软件开发能力,只要在符合价值观和原则的基础上能让开发团队拥有应对快速变化需求的能力,这就叫做敏捷开发。也就是我们常说的小步快跑,将一个大的需求拆分成各个小的需求,针对某个阶段的小需求,组织少量的人员,借助于一定的规范、流程、工具、会议,从而达到快速交付上线的目的。
现在互联网公司 基本都是敏捷开发流程,这样快速迭代功能,试错,不用等整个软件开发完成才上线。 可以看到敏捷开发相对于瀑布式开发 要频繁发布。这对各个部门角色的来说是很大挑战(运维的KPI就是要稳定),不得不思考如何高效,稳定完成每个版本的正常上线。在这样的背景就有了 devops理念。
如何衡量devops,有什么收益
衡量标准:交付效率和交付质量(传说中的又快又好)
收益:(老板最关心的问题) 提高部署频率,提高需求上线效率,减少服务恢复时间,减少变更失败率。