文档章节

Etsy是如何做到每天50次以上部署的

水森不语
 水森不语
发布于 2014/04/10 16:50
字数 1482
阅读 147
收藏 5

Daniel Schauenberg伦敦QCon大会上描述了Etsy是如何做到每天50次部署的。Etsy以其DevOps和持续交付的实践而闻名。一个完全自动化的部署管道、全面的应用监控和基于IRC(互联网中继聊天)的协作是能达到这个变更频率的同时又保持最小风险的重要因素。

Etsy的开发策略是反复围绕着做许多小的、连续的变更。这样做的一个直接后果就是需要每天做很多次部署。用Daniel Schauenberg的话来说,在任何时刻每个Etsy的开发人员都需要知道下面这个问题的答案:“我现在有足够的信心来部署这个变更吗?”。为了能够每次都可以轻松部署,Etsy采取了一系列的工具和做法:强制基于IRC的沟通、开发者虚拟机、持续集成、一键式部署、全面的应用和系统监控、对于开发和运营团队都采取免责怪的事后检查(post-mortem)和随叫随到的政策。

每个开发人员都拥有自己的通过Chef配置的KVM(基于内核的虚拟机)。在线上运营中使用的cookbooks也同样地用在了开发人员的虚拟机中,这意味着每个开发者都有自己完整的Etsy栈。任何人都可以通过Virtual Madness(一个可以实现整个过程自动化的Web应用)来提供一个虚拟机。

在持续集成方面,Daniel解释了Try是如何成为所有过程的核心。Try是一个工具,它允许开发人员在Jenkins(在Etsy中使用的持续集成工具)中测试他的代码变更,而不需要先提交到trunk中。Try有助于保持trunk干净从而实现可部署,而同时让开发人员能够快速、可靠地测试他们的变更。CI(持续集成)集群必须强大到足以支持150名工程师,以及每天超过14000个测试集的运行LXC(Linux容器)会平衡工作的负载,它们还提供了隔离机制,确保不同测试的执行之间不会冲突。

部署管道会经过Princess,或者工作台,这是一种上线前的环境。Princess的所有意图和目的就是上线环境,但只有Etsy的员工可以访问它。Deployinator是由Etsy构建并使用的部署工具,提供一键式部署。

配置标志,也被称为功能标志,是部署过程中的一个主要组成部分。通过其功能API,Etsy能够做A/B测试,即完全启用或者禁用某一功能或一个给定功能的变体。

监控是Etsy团队建立信心做持续交付的关键。开发人员做自己的功能监控,而且每个人都可以通过仪表盘看到所有的监控图表。Etsy具有这样一个策略,在默认情况下所有可以被绘制的信息都会被制成图表。随着时间的推移,指标的数量一直稳步增加,所以Etsy建立了Kale来帮助检测异常模式。所有的日志都可以通过Supergrep展现出来,Supergrep是一个基于Web的日志展示工具,这增加了日志的信噪比。

IRC是贯穿Etsy的主要沟通工具,也是Etsy协作文化的关键。里面有很多不同的聊天室,每一个都具有特定目的。例如,在聊天室#warroom中仅允许中断事故有关的会谈。聊天室是用来协调调查,讨论应对措施和解决方案监控的。与其他的聊天室一样,#warroom是个鼓励新工程师们潜水的地方,因为这些聊天室被认为是学习的好地方。

每次中断发生,或接近中断的时候,所有人被邀请来做事后检查。事后检查是一个重要的文化活动,如果财务和支持人员需要,他们也可以参与。事后检查是为了成为一个学习的机会,所以它们不应该包含责备。所有事后检查相关的信息被记录在Morgue里面:日期、严重性、IRC日志、图表和补救措施。Morgue是Etsy为了保存事后检查记录而特别构建的另一种工具。

对于运营、开发、支付和支持部门的员工都采取随叫随到的政策。开发人员通常轮流地在每四个星期里的某一周提供随叫随到的支持。该政策的目的是让每个人都意识到上线产品每天所面临的问题,使他们能够在开发新功能或改进现有流程时考虑到这些问题。

Etsy拥有约60万的月访问量和每月15亿页面浏览量。

查看英文原文How Etsy Deploys More Than 50 Times a Day

原文: http://www.infoq.com/cn/news/2014/04/etsy-deploy-50-times-a-day


© 著作权归作者所有

水森不语
粉丝 1
博文 1
码字总数 1482
作品 0
朝阳
前端工程师
私信 提问
荣誉,还是苦逼?| 也议全栈工程师和DevOps

引言 全栈工程师(本文称「全栈」开发者)和 DevOps 无疑是近期最火的词汇,无论是国外还是国内。而且火爆程度远超于想象。 全栈和 DevOps,究竟是我们的新职业方向,还是仅仅创业公司老板的...

OneAPM蓝海讯通
2015/10/16
96
0
fir.im weekly - 「 持续集成 」实践教程合集

我们常看到许多团队和开发者分享他们的持续集成实践经验,本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等项目搭建持续集成的实践,以及一些国内外公司的内部持续集成系统的经验,...

风起云飞fir_im
2016/05/09
147
0
学习的时候你们对自己负责了吗?

当领导给你一个任务是每天打100个电话 1、每天完成50个电话是指给自己给自己找借口而已,对自己不负责 2、每天完成100个电话是指只是把领导的指令完成了而已,只是完成命令 3、每天完成150个...

I雨过天晴I
2018/06/26
0
0
给 DevOps 初学者的入门指南

当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念。那么,到底什么是"DevOps"呢? 什么是DevOps 随着软件发布迭代的频率越来越高,传统的...

风起云飞fir_im
2016/09/27
292
0
网站推广如何做到保质保量?

所谓保质保量,顾名思义就是保证数量的同时保证质量。医院 网络 推广同样牵涉到一个保质保量的问题,很多人就要问怎么样才算保质?怎么样才算保量?如何做到保质保量呢?这是一个头疼的问题,但...

逐浪CMS建站
2011/09/23
120
0

没有更多内容

加载失败,请刷新页面

加载更多

Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
今天
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部