Etsy,它描述了自己作为在线的“市场上的人们在世界各地的人们连接购买和销售独特的商品”,通常会作为Devops的海报儿童挖出。本公司早期和今天的概念锁定在概念上,以缩小速度与快速业务增长保持较高的效益。足球竞猜app软件John Dix中的网络世界编辑赶上了Etsy VP的技术运营Michael Rembetsy,询问公司如何将这些想法纳入工作以及它沿途所学到的课程。
让我们在公司今天展示的简要内容开始。
该公司于2005年成立并启动,当时我加入2008年(与乍得迪克森同年,乍得迪克森)有大约35名员工。现在,我们在全球拥有超过600名员工和大约200多个国家的员工,包括超过100万活跃卖方。我们还没有今年的销售号码,但2013年我们在销售总额约为13亿美元。
该公司如何,何时何地对Devops感兴趣?
当我加入事物以一种非常有机的方式增长,这导致了很多孤岛和公司内的障碍,并在不同的球队之间不信任。例如,工程部门对建立中间层进行了很多努力 - 我所谓的不信任层 - 允许开发人员以更快,更可扩展的方式与我们的数据基础交谈。但事实证明就是相反的。它在数据库工程师和开发人员之间创造了更多的障碍。
每个人都真的很幸福在个人层面上。人们熬夜,工作长时间,经过几个小时的社交,人们在一个创业公司中做的所有事情都要成功。我们有一个非常棒的办公室氛围,一个非常令人作呕的人,我们有很多乐趣,即使我们有一些潜在的工程问题,使得难以让门口出现。部署往往非常痛苦。我们有一个传统的心态,开发人员编写代码和操作部署它。这并没有真正缩放。
你在早期部署的频率是多少?
每周两次,每部部署都花了四个小时。
每周两次甚至还常见,甚至没有?
与其他行业相比,肯定。我们始终知道我们想比其他人更快地移动。但在2008年,我们将自己与像Flickr这样的公司进行了比较,这是一天的10部部署,这是闻所未闻的。所以我们肯定比许多公司更快地走了一点点,但问题是我们不充满信心。我们的痛苦很快,它为每个人都不愉快的整体体验。你不想不断向大家部署痛苦。我们知道必须更好的方式。
改变的想法来自哪里?它是一个普遍的实现,以至于有些东西必须给予?
事情没有正常工作的想法来自乍得。他在他的时间在雅虎看到了很多东西,并知道我们可以做得更好,我们可以更快地做到这一点。但首先,我们需要稳定基础。我们需要拥有一个坚实的网络,需要确保该网站上升,为我们的成员和自己建立信心,以确保我们足够稳定以增长。这需要一年半。
但是我们最终开始弄清楚的东西,我们不应该做一个完整的网站,每次都要部署我们想要在主页上改变横幅。我们在主页上没有更多的横幅,但在2009年回来我们做到了。横幅将每周旋转一次,我们必须部署整个网站以改变它,花了四个小时。对所有参与者来说都很痛苦。我们意识到如果我们有一个工具,可以允许成员ops或工程中的某人进入和改变,以便在一块按钮的轻弹上变得更好,我们可以为每个人提供更好的过程。
因此,生下一个开发的DEV工具团队,开始构建一些工具,这些工具将让人们以外的人部署代码来更改横幅。这可能是第一个像一个类似的Devops的实现之一。我们就像,“嘿,我们可以建立一个更好的工具来完成我们在完全部署中做的一些。”这真的引发了团队内的很多思考。
然后我们意识到我们必须在中间摆脱这个应用程序,因为它正在放缓我们,所以我们开始努力。But we also knew we could find a better way to deploy than making a TAR file and SSH’ing and R-synch’ing it out to a bunch of servers, and then running another command that pulls the server out of the load balancer, unpacks the code and then puts the server back in the load balancer. This used to happen while we sat there hoping everything is ok while we’re deploying across something like 15 servers. We knew we could do it faster and we knew we could do it better.
让开发人员将代码部署到网站上的想法真的来自2010年初2009年底。随着我们开始添加更多工程师,我们开始了解,如果开发人员认为将代码部署到本网站的责任,他们也会以自然为自然,对网站上涨或下降,应考虑表现,并了解对部署的压力和恐惧。
当您推动那个大红色按钮时,它有点恐吓 - 将代码放到网站上 - 因为您可能会影响数十万人的生计。这是一个很大的责任。但是网站休息不是真正的问题。该网站现在将休息一下。我们要解决它。这是为了确保开发人员和其他人部署代码感到赋予赋权和自信,在他们正在做的事情和理解他们正在做的事情上。
所以没有一个Devops Epiphany,你突然意识到你的问题的答案。它有机出现?
它肯定是有机的。如果开发提出了更好的想法如何部署更快,但操作就会就像,“好的,但是让我们在这里添加更多的可见性,更多的图表。”并且彼此之间没有血腥的敌意。这只是让事情更快,更好,更强大。
正如我们所做的那样,整个组织中的文化开始感觉更好。人们之间没有不信任。你真的在谈论建立信任和建立友谊,在很多方面,不同的群体之间的关系,它就像这样,“哦,是的。我知道这个小组。他们完全可以这样做。没关系。我会把他们拿起,没问题。“在很多组织过去,我过去的工作就像,“这些人?绝对不。他们不能这样做。 That’s absurd.”
而且你必须记住这是在网站经常休息的早期。所以这是其中一个,就像那样,好的,如果它破坏,我们修复了它,但我们想要可靠性和可持续性和正常运行时间。因此,在很多方面,它是一大堆信心,试图彼此之间的信任和信仰,信仰其他群体不会影响其余人民。
很多来自组织的领导以及团队自己相信我们可以做到这一点。再次,我们不是IBM。我们是一家小商店。我们都彼此坐在彼此靠近。我们都知道人们来了,所以彼此相对易于拥有这种信仰。我不能记得有人走进去的时候说,“哦,我的上帝,那个人部署了这个并打破了网站。”这从来没有发生过。人们在门口检查了他们的egos。
我会问你有关人们的身体邻近。所以各个球队已经坐在脸颊上坐着果酱?
在早期,我们在左岸和右海岸上有人们,在明尼苏达州和纽约的人们。但在2009年,我们开始意识到我们需要把东西带回内部,以稳定事物,让事情变得更加凝聚力,同时我们创造了信任和信仰的债券。所以,如果我们有一个新的租用,我们会在内部雇用他们。它更多的是短期战略。今天,我们更多的是遥远的文化,而不是2009年。
但你实际上并没有整合开发和运营团队?
在早期的日子里,它非常分开,但没有分离。根据我们正在努力的方式,我们会将自己注入这些团队,以后导致我们所谓的业务所指定的操作。因此,当John Allspaw,Operations and Infrastructure的SVP于2010年来到2010年时,我们正在谈论与其他团队合作和沟通的更好方法,约翰说,“我们应该做这个称为指定的业务的事情。”
指定操作的想法是它不是专注的。例如,如果我们有一个搜索团队,我们没有专门的操作人员,只能在搜索上工作。我们有一个指定的人会出现他们的会议,将参与开发推出的新功能。他们将把自己注入工程团队将尽早做的一切,以便带来心态,“嘿,如果这是第三方提供商未能发生的事情?哦耶。嗯,这会抛出一个例外。哦好的。我们捕获吗?我们是否为最终用户显示友好的错误?等等。”
我们开始与指定的操作的想法进行了教育是在运营工作的教育中,您如何构建Ganglia图表或Nagios警报,以及我们实际开始为我们的事情创造更多盟友来教育。一个很好的例子:搜索团队现在处理搜索基础架构的所有接通呼叫,如果它们不可用,它会升级到OPS,然后我们照顾它。
因此,我们开始通过使用这一指定的OPS人员更频繁地进行跨团队协作和沟通的想法来了解一些真正的好处,而且反过来让我们能够与人有更多开放的对话。这样你删除了很多心态,“哦,我需要一些服务器。让我把它扔到墙上到ops。“
相反,您拥有的是指定的OPS人员返回其余的OPS团队的人说,“我们正在努力解决这个真正酷的项目。它将在大约三个月内推出。随着能力规划,我们已经完成了它需要x,y和z,所以我要订购一些服务器,我们必须得到那些安装的那些,并在运行中获取所有服务器。我想让每个人都知道我也可能需要一些网络帮助等。“
所以我们开始发现的是开发团队实际上通过指定的OPS人员回到其余的OPS团队的倡导者,“我有这个。”当你拥有所有OPS人们的人们将自己集成到这些其他团队中时,你开始找到一些非常酷的东西,就像人们实际上并不生气开发人员。他们明白他们想要做什么,他们非常支持。合作和沟通非常有用。
所以Devops for你更恰好是一种工作方法。
正确。etsy没有devops组。
这一点有多少人参与?
产品工程位于200人的北方。包括技术操作,开发,产品人士等。
你如何衡量成功?是部署频率还是其他公制?
成功是一个非常广泛的术语。我也考虑失败成功。如果我们测试了一种新型的服务器和IT炸弹,我认为取得了成功,因为我们学到了一些东西。我们真的改变了更多的学习文化。有许多,许多成功度量,其中一些成功实际上是失败。所以我们没有五次关键图。我们有数百万的图表我们正在观看。
你注意你的部署频率吗?
我们的确是。我可以告诉你,我们每天部署超过60次,但我们没有说,“明年我们想部署100次。”我们希望能够扩展我们正在进行的部署数量的部署数量如何快速移动。因此,如果指定的OPS或开发团队开始感到痛苦,我们将看看我们如何改善过程。我们想确保我们要将功能拿出来我们想要离开,如果这意味着我们必须更快地部署,那么我们将解决这个问题。所以它不是在部署的数量附近。
我认为您必须在缩放时标准化您的工具集。
我们基本上选择了灯堆栈:Linux,Apache,MySQL和PHP。A lot of people were like, “Oh, I want to use CoffeeScript or I want to use Tokyo Cabinet or I want to use this or that,” and it’s not about restricting access to languages, it’s about creating a common denominator so everyone can share experiences and collaborate.