文化的演变
几年前在Etsy的部署是一个缺乏透明度和极易出错的流程,每次部署需要花费近4小时,这是非常鲜明的对比。开发人员可以在自己的刀片服务器上工作,而不是虚拟机,但是刀片服务器没有足够的能力运行自动化测试套件完成。在预发布环境中运行的测试花了几个小时完成,即使如此,这些结果也可能不是那么有用。
程序员团队被孤立。有很多开发人员把代码丢给Ops,Ops的工作是部署和监控,这样一来他们逐渐变得反感工作。开发者写的代码,执行shell脚本来创建一个新的SVN分支,然后将开发人员的所有改变合并到这个分支,这不是一个很简单的合并。合并完成开发人员会告知一个运维工程师使用哪个分支来发布。发布是一个艰苦的需要数小时的过程(见图1-1)。因为这个过程非常痛苦,每两到三个星期才进行一次发布。图1-1在Deployinator之前,一个非常复杂而且极易出错的发布流程
人们对这一过程很厌倦。他们意识到必须要做出改变,否则部署会变得更糟。这个组织是由聪明和有才华的人组成的,从他们受到的挫折和动机,他们愿意解决问题。他们从CEO和CTO那里得到了支持,CEO和CTO有能够做出改变的关键资源。
在部署流程的关键是一个运维人员共享给两个开发人员,他们需要一段时间尽肯能了解这个流程。他们说,当你有一把锤子,一切看起来都像是钉子,当你有一个Web应用程序开发人员,一切看起来需要一个Web应用程序,所以第一版deployinator诞生了(图1-2)。起初,它是一个网站后端由很多shell脚本组成,但随着时间的推移,越来越多的人开始工作并改进它。虽然进行重载的底层机制发生了变化,但整个接口仍然保持着大致相同的状态。
图1-2 在Deployinator之后有一个任何人都能看得简单web页面
每个人都清楚地认识到,让这些员工创造工具来改善他们的工作能够使得人们更容易做那些工作。部署从人们想要的方式到能够帮助他们从用户前获取功能的目标。测试从浪费时间到帮助捕捉错误。日志、图表和警报使每个人,而不仅仅是少数几个人,能够看到他们工作的影响。
从所有这些工具的故事中提取的关键不在于工具本身的细节,而在于有人意识到它们需要构建,而且也有时间和资源来构建它们。
从管理层购买、自由实验、面向非客户代码的实践和不同的团队的信任以及允许这些工具的开发,并长期使用这种文化的工具,分享和协作。
这些因素使得Etsy至今仍被成为DevOps的独角兽(他们喜欢称自己是一匹黑马),一个保持文化优先的公司。这个例子体现了我们定义有效的一个组织,包括DevOps文化变迁如何影响每个人工作,每个在不同角色的员工,加速提升业务价值,并测量改变带来的的影响。正是这些DevOps的原理帮助Etsy从挫折和孤立无援到行业知名协作工具生产商。虽然细节可能有所不同,但我们已经在整个行业的成功事例中看到了这些指导原则,并在分享它们的同时,也为那些希望进行类似变革的组织提供了指南。