相关资讯

DevOps可以打破IT的恶性循环吗?

发布时间:2018-10-25 点击数:25

DevOps的准则:总有更好的方法

前面描述了根本的、长期的冲突带来的问题和负面影响,从无法实现公司目标,到对人类同胞造成的提害,通过解决这些问题,DevOps能够提高公司业绩,实现开发、QA、T运维、信息安全等各职能技术角色的目标,同时改善人们的境遇

这个令人振奋的罕见组合可以解释为什么 DevOps在这么短的时间内激发出了这么大的兴奋和热情,包括技术领导、工程师,以及我们所处的软件生态系统的大部分。


DevOps打破恶性循环

理想情况下,小团队的开发人员独立地实现自己的功能,在类生产环境中验证其正确性,再把代码快速、安全、可靠地部署到生产环境里。代码部署是日常的且可预测的工作。部署工作不是选在周五的午夜开始、鏖战整个周末才完成,而是在每个人都在办公室的工作日进行,大多数时候甚至不会引起客户的注意(客户兴奋地看到出现了新功能或者旧缺陷被修复了的情况除外)由于代码部署是在工作时间段内进行的,几十年来,Ⅱ运维人员第一次可以像其他人一样在正常工作时间段工作了

通过在流程中的每一个步骤创建快速反馈回路,每个人都可以立即看到工作效果。只要代码变更提交到了版本控制系统,就会在类生产环境中运行快速的自动测试,这持续地保证了代码和环境符合设计预期,并且总是处在安全的可部署状态。

动试可以助开发人快速发现错误(通常在几分钟之内),实现更快速的修复以及真正的学习。如果错误是在6个月后的集成测试中发现的,那时相关的记忆和因果关系早已消退,想从中学习是不可能的。自动化测试使技术债务不再积累,问题在发现之后就立即被修复了。如果需要,这还可以调动整个公司参与问题的处理,因为总体目标高于局部目标。

在我们的代码和生产环境中无处不在的遥测技术,保证了问题能被迅速地发现并纠正,确保切都能按照预定的方式进行,并且客户能从我们创造的软件中获得价值

在这样的场景下,每个人都感觉富有成效—这种架构使得小团队能够安全地工作,同时在架构上和其他团队的工作解耦,这些团队使用了集运维和信息安全最佳实践于一体的自服务平台。团队独立、高效地处理小批量工作,快速且频繁地为客户提供新的价值,而不是每个人都在等待,面对大量迟来和紧急的返工。

通过黑启动( dark launch)技术,即便是复杂的产品和功能发布,也变得稀松平常了。早在发布日期以前,我们就已经将所有功能的代码部署到了生产环境中,它只对内部员工和部分真实用户可见。这使得我们能够测试和改进其功能,直到达到预期的业务目标。

想要让新功能生效,我们只需要改变一个功能开关或者配置项即可,而不再需要经历数天或者数周的辛苦工作。这个小变更使新功能对更大规模的客户群可见,一旦出现错误,就会自动地回滚。因此,发布新功能变得可控、可预测、可逆,且压力也小了。

除了新功能的发布变得更加顺利外,各种问题都能在其规模小、修复容易且成本低的时候发现并修复。通过每次的问题修复,我们也让公司得到了经验和教训,能够防止问题复发,并且能更快地定位和修复相似的问题

此外,每个人都在不断地学习,从而营造出了一种假设驱动的文化,用科学的方法保证一切都得到了充分的验证一在对产品开发和流程改进进行有目的的衡量和实验之前不做任何工作

因为我们珍惜大家的时间,所以不会花几年的时间去打造客户不想要的功能,不会部署根本就不能用的代码,也不会修复非问题根源的缺陷

由于我们关心目标的实现,所以建立了长期的团队责任制,负责目标的实现。在一般的项目团队中,每次软件发布以后开发人员就被打散并重新分配了,他们没有机会得到自己工作的反馈;我们则保持团队的完整性,这样团队可以进行选代和改进,用团队各成员所学到的经验来更好地实现目标。对于给外部客户解决问题的产品团队,以及帮助其他团队提高生产力、可靠性和安全性的内部平台团队来说,这一点同样重要。

我们的团队文化体现了高度的信任与合作,而不是指责,人们会因为冒险而获得回报。他们可以无所畏惧地讨论问题,而不是把问题隐藏起来或者往后拖延一毕竟,我们只有先认识到了问题,才能解决问题。

而且,因为所有人都需要对自己的工作质量负完全的责任,所以每个人在日常的工作中都创建自动化测试,并且使用同行评审的方式来保证在问题影响到客户之前就解决它。与从管理层向下授权审批的方式相反,上述过程降低了风险,让我们能快速、可靠、安全地交付价值,Devops甚至可以在挑剔的评审人员面前证明我们拥有一个高效的内部控制系统。

很多时候在出现问题时,我们进行不指责的事后分析,这并不是要惩罚某人,而是为了更好地理解导致事故的原因,以及如何防止事故再次发生。这个方法强化了我们的学习文化。我们可以还通过举办内部技术研讨会来提高技能,保证所有人不是在教就是在学。

因为注重质量,所以我们甚至会故意在生产环境中注入故障,从而了解系统是怎样以预期方式发生故障的。我们按照计划做大规模的故障演练,随机结束生产环境中的进程,中断正在运行的服务器,同时还注入网络延迟以及其他恶意因素,以此来确保系统的可靠性。这样的方式为我们的系统带来了更高的可靠性,同时为整个公司提供了更好的学习和提高机会。

在这个世界里,不论处于科技公司的哪个岗位,每个人都是自己工作的主人。他们坚信自己的工作很重要,并为公司的目标出了一份力,低压力的工作环境以及公司在市场上的成功足以明这一切。公司在市场上取得的业绩就是最好的证据。


关于DevOps的更多资讯

Devops