写点什么

Outbrain 经验分享之持续部署实践

  • 2012 年 7 月 11 日
  • 本文字数:835 字

    阅读完需:约 3 分钟

Outbrain 已经采用了持续部署系统,该公司前资深工程师 Ran Tavory 在他的博客介绍了实践过程,他们是怎么做的,有哪些收获。

首先, Ran Tavory 提到确立敏捷企业文化的重要性:

“到目前为止我们认为,成功实施持续部署的核心一半是文化因素,一半是技术因素。有人问我什么更重要,文化还是工具,当然,我认为文化更重要,但是工具能正确地确立这种文化。”

Ran Tavory 分享了 Outbrain 采取的 3 项促进企业文化转型的技术措施:

首先,不允许创建分支,要求主干代码随时都可以用来部署生产环境,所有人都要把主干作为开发目录,只允许创建标签 (tag),没有分支,所以也不需要合并,不需要两次提交;要在一个最小的原子变更完成编译、自动化测试等工作之后尽快将代码提交到主干上,不要超过一天才提交,最好每小时提交一次;如果代码还不准备发布,可以使用标识位来隐藏代码,可以通过 URL 参数或服务器配置来打开功能,从概念上说,它与分支类似,一旦代码全部发布就取消标识位。

其次,建立完善的自动化测试和基础设施测试,这是持续部署关键支柱。自动化测试必须快,Outbrain 的测试周期是 5 分钟完成一次测试。

最后,监控、自检测试、服务状态要可视化。Outbrain 有一个版本页面列出了所有服务库的版本,以及一个自检页面,可以通过一系列内部接口(如连接数据库、连接其他服务等)调用就可以检测并能够返回成功状态。

Ran Tavory 介绍了一些工具来实现持续部署:

  • 通过 CHEF 实现基础设施的自动化;
  • 通过 GLU 实现部署;

另外他还提到了服务组件化,让破坏和错误的影响最小,让回滚操作更方便。在博文中,Ran Tavory 还列举了实例说明 Outbrain 的持续部署实现。整体来说,整套系统简化了部署过程,节约了大量的开发时间。

作者简介

李新,新浪产品部高级配置管理工程师,有丰富的软件流程方面的经验。


感谢黄玲艳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012 年 7 月 11 日 00:001752

评论

发布
暂无评论
发现更多内容

如何快速应对井喷下的OCR需求?

鲸品堂

OCR

JavaIO流核心模块与基本原理

知了一笑

Java nio IO流 字符流 字节流

dart系列之:dart语言中的函数

程序那些事

flutter 后端 dart 程序那些事 11月日更

Vue进阶(幺柒零):应用 rem/em 实现字体自适应

No Silver Bullet

Vue 自适应 11月日更

Flink 的状态管理实践

五分钟学大数据

flink 11月日更

【LeetCode】键盘行Java题解

HQ数字卡

算法 LeetCode 11月日更

各地力推“链长制”,区块链让产业链更加安全可靠

旺链科技

区块链 智能合约 联盟链 产业链

返利APP是真的吗?找到2021年最好用的返利APP?

Geek_1e5497

一文了解如何使用移动应用安全组件Soot和Flowdroid

华为云开发者社区

移动应用 安全 Soot Flowdroid APK

OBCE首位认证 实力与颜值并存 | 90后技术宅郑皓嘉的通关之路

OceanBase 数据库

分布式数据库 认证 oceanbase OBCE

什么是DISA STIG?概述+STIG安全

麦禾测试

写入、读取均优于InfluxDB,TDengine在智慧水务系统中的应用

TDengine

数据库 tdengine 后端

OceanBase 源码解读(六):存储引擎详解

OceanBase 数据库

数据库 开发者 高性能 资源隔离 租户

IOS技术分享| WebRTC iOS源码下载&编译

anyRTC开发者

ios 音视频 WebRTC 实时通信 视频直播

腾讯云发布容器安全白皮书

腾讯安全云鼎实验室

容器 云安全 白皮书

MapReduce Service更换集群外部时钟源,仅需10步

华为云开发者社区

大数据 FusionInsight ntp 时钟同步 MapReduce Service

你以为委派模式很神秘,其实你每天都在用

Tom弹架构

Java 架构 设计模式

一文,动态规划入门

bigsai

算法 动态规划

如何成为一名合格的CRUD工程师?

博文视点Broadview

Hive SQL优化思路

大数据技术指南

11月日更

为何我中断执行的线程不起作用,Why

华为云开发者社区

Java 线程 对象 中断

白码低代码/无代码开发平台功能及作用

低代码小观

低代码 开发工具 开发平台 无代码 企业服务

【Flutter 专题】14 图解 ListView 不同样式 item 及 Widget 显隐性

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

爬虫120例之第17例,用Python面向对象的思路,采集各种精彩句子

梦想橡皮擦

11月日更

深入剖析 RocketMQ 源码 - 消息存储模块

vivo互联网技术

RocketMQ 微服务 中间件 消息队列

这场蝴蝶效应,从“丝滑”的双11开始

脑极体

TDSQL | 在整个技术解决方案中HTAP对应的混合交易以及分析系统应该如何实现?

腾讯云数据库

tdsql 国产数据库

Sentinel-Go 源码系列(二)|初始化流程和责任链设计模式

捉虫大师

sentinel Go 语言 sentinel-go

ODC V3.2.0 新版本发布 | 着重用户体验,挑战权限管控业务场景

OceanBase 数据库

数据库 开发者 稳定性 应用场景 新功能

解放重复劳动丨华为云IoT API Explorer对接小程序实现系统化应用

华为云开发者社区

小程序 App IoT 华为云 API Explorer

CSS页面设计稿构思与实现(一)

Augus

CSS 11月日更

如何行之有效地参与开源?

如何行之有效地参与开源?

Outbrain经验分享之持续部署实践-InfoQ