DevOps 文字培训
DevOps 如何解决你的 IT 问题?
持续部署
从刚起步的创业公司到《财富》100 强企业,各种规模和拥有各类软件产品与服务组合的公司都已证明,借助 DevOps,独立、规模小且能自主工作的团队每天可以执行数十次生产部署。你在类似生产的环境中设计、构建、交付和测试。你不再每隔三个月等到午夜过后、所有人都睡着时才将代码发布到生产系统。你每天可以发布多次,最重要的是,可以在正常工作时间内发布,同时客户和所服务的市场仍能正常使用软件并从中获益。
DevOps 既能让你频繁交付小型软件功能,也能借助暗发布技术,把体量庞大的软件功能拆成小块,频繁交付到生产环境。这些小块在生产环境中保持休眠(未启用),直到你通过配置设置启用整个大型功能。仅这一项小技巧,就可以避免一次性大规模上线代码、避免其给现有生产系统带来难以预料的不良影响,以及组织内的混乱与相互指责,从而显著改善团队成员的生活质量。
围绕组织使命组建团队
为了服务市场,并实现比竞争对手更远大的使命,你围绕面向内部或外部客户的产品、服务、业务能力和微服务,在 IT 部门组建长期团队,避免采用一旦项目完成甚至尚未完成就解散的临时项目团队。
采用临时项目团队模式时,成员很少知道自己的项目在组织总体使命中的位置,因此难以真正对自己的贡献负责,也很难得到适当的工作反馈。各类项目不断向他们派发各自领域内的任务,比如数据库开发、前端设计或翻译,导致他们的工作不断被打断。
在长期团队模式下,团队愿意对自己的工作,以及工作产出带来的 IT 和业务绩效负责。他们清楚自己的贡献在组织总体使命中的位置和重要性。
构建系统以实现业务目标
你和团队清楚,自己的报酬来自为客户服务和实现组织使命。因此,你尊重组织和客户中每个人的时间和资源。承诺开展任何长期项目之前,先试验和验证 IT 方案预计能产生的业务价值。向客户展示计划构建的产品模型、原型、各种 A/B 版本或轻量版,然后测量并记录客户的反应和反馈,了解如何完善产品和服务,以及客户是否喜欢它们。
你不会仅凭直觉良好就给产品增加功能。你会检验想法,取得具体、可展示、可复现的证据,证明组织投入资源构建的内容很可能提升利润,并让雇主相较于竞争对手获得优势。
将质量和监控融入开发
在软件交付与运维生命周期的所有阶段,建立快速、可靠、覆盖充分的反馈循环。质量由所有人共同负责,每个人都致力于在工作中内置质量。为了确认工作已正确完成,你不必等待其他团队给出反馈,也无须找别人批准才能将代码部署到生产环境。你信任团队成员,让他们对设计、代码、测试和基础设施开展同行评审。
始终为每项能够测量和测试的功能建立自动化测试及监控(遥测)。你清楚,如果一项功能值得投入时间来编码和交付,就值得通过测试自动化持续、可靠、快速且一致地加以测试。软件也需要持续监控和内置分析,验证功能带来的成果是否符合最初构建它的目的。这适用于生产和非生产的所有环境。
每次提交代码到存储库,都会自动调整、重组运维环境,必要时会重新构建环境;还会自动重新构建受影响的应用,最终执行全部自动化测试,以验证现有功能及最新提交是否达成目的。验证成功后,同样的变更会自动应用到生产环境。
应用内置的分析和遥测功能会持续监控并记录软件及其运维环境中的关键事件。订单数、登录次数、CPU 使用率、内存使用率、CPU 负载、错误数和数据库查询耗时等关键指标会持续记录并实时展示。这样一来,团队几分钟内、甚至几秒内,就能发现部署造成的不良影响。这就是快速反馈循环对迅速完成工作至关重要的原因。
从错误中学习并传授经验
发生错误时,你冷静而自信地解决问题。你根据自动化测试和遥测中获得并观察到的科学证据确定事件的根本原因。问题解决后,如果发现缺少测试用例或遥测数据,就把它们和修复一起加入代码存储库。
在像你们这样复杂的系统中,没有人能够了解并预见一切。因此,组织中的每个人都认为,错误是产品和服务走向成熟的一部分。错误带来学习和成长的机会。你与组织把错误视为个人和组织获得新经验的途径。
对错误进行无责复盘,还能帮助你更好地确定事件根本原因,并找出避免同类或类似错误再次发生的办法。借此,你可以将团队和软件中积累的局部经验转化为组织记忆,让组织里的每个人受益。
你和团队不会因错误受到处罚。相反,你们会因在事件后汲取并分享经验而获得表彰。得益于你们的贡献,组织中的许多团队知道了怎样避免今后发生这类事件。
随着业务壮大,团队的扩展能力也会增强
设想一家普通组织从只有 1 名开发人员发展到拥有 1,000 名开发人员。组织规模小时,开发人员持续构建并把代码部署到生产环境。随着组织壮大,管理层级和官僚程序越来越多,人们更害怕犯错。将代码部署到生产环境需要更多协调和沟通。因此,随着组织扩大,每名开发人员每天的平均代码部署次数通常会下降,充其量保持不变。
高绩效 DevOps 组织则不同,随着开发人员增多,他们还能提高每名开发人员每天的平均部署次数。Google、Amazon、Facebook、Netflix 和 Apple 等 DevOps 高绩效组织已经证明,只要具备合适的软件架构、团队、使命、领导和文化,就可以做到这一点。你的组织也可以成为下一个高绩效 DevOps 组织。
原图比较团队规模扩大时,每位开发者每日部署次数的增长情况。
查看原始示意图 ↗总结
高绩效 DevOps 组织在以下方面超越竞争对手。
- 代码部署频率达到 46 倍。
- 从提交到部署的前置时间缩短至 1/440。
- 停机后的平均恢复时间缩短至 1/96。
- 变更失败率降至 1/5,即变更失败的可能性仅为原来的 1/5。
- 提高生产力和吞吐量。
- 提升代码和运维的可靠性。
- 改善组织绩效并提高客户满意度。
- 提高组织的市场渗透率、市场份额和盈利能力(实现这些结果的可能性为 2 倍)。
- 提高市值增长表现。
比较部署频率、前置时间、恢复时间和变更失败率。
查看原始示意图 ↗