AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

超越持续集成——持续部署

  • 2009-03-11
  • 本文字数:1118 字

    阅读完需:约 4 分钟

特征进入产品阶段越快,它就能越早提供价值。系统响应客户反馈的速度越快,它就能越早让客户满意。 Timothy Fitz Joe Ludwig 最近发布了一些文章,描述了持续部署的实践经验,将交付周期从以星期计缩短到以分钟计。

Timothy 的第一篇文章描述了持续部署如何影响修复 bug 的成本。错误被发现的时间越迟,修复的难度越高,代价也最昂贵。如果工程师在敲下代码的时候就发现了问题,那修复的成本几 乎为零。如果编译器捕获了 bug,它对开放时间造成的影响就是以分钟计的。如果 bug 进入了产品,而且在一段时间内没有被发现,找到 bug、修复 bug 的 代价就会让人觉得难以承受。千年虫问题就是一个典型的例子。Timothy 赞同快速失败(fail fast),这样 bug 所造成的影响和代价都会降低到最小。

读者的评论基本上对持续集成的实用性全持强烈的质疑态度。Erik A. Brandstadmoen 直言不讳:“在实际应用中,我觉得 [你的] 做法还不够”。来自 ycombinator 的一位评论者说道:“唔……不。也许这种做法对单人适用,可以取代持续继承。不过要是在一个复杂的系统上,许多人同时提交,你的站点肯定玩完。”

imothy 又写了一篇文章回应质疑声,他介绍了 IMVU 是怎么持续部署系统的。 IMVU 的做法是,先用持续集成来做快速构建,测试新的变化。这里有一个关键点——要有大量的、覆盖范围广的、非常可靠的自动化测试。他们用了许多测试机,用来保证可以在 10 分钟以内运行整个测试套件。所有测试都已通过以后,部署便开始了。

代码用 rsync 备份到集群的几百个机器里面。用一个 push 脚本来得到平均负载、cpu 占用率、php 错误及崩溃等等的样本作为基线。然后在小部分机器 上建立 symlink,让代码在这些机器上运行起来。一分钟以后,push 脚本就会在集群中重新收集样本,如果数据出现大幅度衰退,那么就把代码回退到上 一个版本;如果没有的话,就把代码在整个集群上运行起来,继续监控,五分钟之后重新收集数据。然后代码就可以正式运行了。

IMVU 现在有 60 名员工,3 千万注册用户,每月收入上百万英镑,做出的成绩可相当不俗。不过从 Michael Bolton James Bach 的调查中看,这个系统也不完美。 Elisabeth Hendrickson 指出,完美并不是这个系统的目标。

Joe Ludwig Pirates of the Burning Sea 的前任架构师,他写了两篇文章,指出怎样才能在重量级的客户端代码的环境中执行持续部署。他先是描述了“Pirates”长达7 个半小时的部署过程,然后略述了怎样把它缩短到1 个小时。在第二篇文章中,他详细描述了要把一小时部署变成现实所要做出的重大技术改动。

你有没有持续部署的经验?要把你的系统变的可以持续部署,需要做出那些变动?请留下你的观点,与读者共享。

查看英文原文 Beyond Continuous Integration: Continuous Deployment

2009-03-11 20:312468
用户头像

发布了 197 篇内容, 共 59.8 次阅读, 收获喜欢 21 次。

关注

评论

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

北京市级预付费资金监管平台正式上线试运行 内嵌区块链存证技术

CECBC

Nginx高并发调优中常被忽略的参数

运维研习社

nginx 运维 并发 性能调优 5月日更

【LeetCode】前K个高频单词Java题解

Albert

算法 LeetCode 5月日更

商业落地页端到端性能优化实践

百度Geek说

大前端

Dubbo 并发控制

青年IT男

dubbo

TOB产品需求调研

lenka

5月日更

写给丫头

小天同学

情人节 5月日更 520单身福利 情书 告白

OCR性能优化:从认识BiLSTM网络结构开始

华为云开发者联盟

OCR Seq2Seq BiLSTM 网络结构 OCR网络

Hibernate的get和load区别学习笔记

风翱

hibernate 5月日更

省钱、省时、省力的音视频通信服务

anyRTC开发者

音视频 WebRTC 云服务 RTC

华云大咖说 | 华云超融合在论文期刊行业的应用实践

华云数据

211本硕如何通过字节跳动、百度、美团Android面试?复习指南

欢喜学安卓

android 程序员 面试 移动开发

350道Android面试真题分享,大厂直通车!

欢喜学安卓

android 程序员 面试 移动开发

MemVerge认为PB级内存池将随CXL而来

Steven Xu

内存 存储 高性能服务器

网易云课堂 Service Worker 运用与实践

有道技术团队

Service Worker

视频分割修整功哪一款视频剪辑软件更好用?

奈奈的杂社

短视频 视频剪辑 视频处理 视频制作

CEO观点 | 核心开放:企业拥抱开源的成功之道

极狐GitLab

开源 DevOps 安全 高效 协同办公

一文掌握 Java8 的 Optional 的 6 种操作

看山

Java

Go sync.Pool 浅析

HHFCodeRv

Go 语言

iPhone如何拍摄惊人的照片

懒得勤快

低代码“骗局”

ES_her0

5月日更

有了这三个神器工具集,应用开发想怎么玩就怎么玩

华为云开发者联盟

开发者 华为云 应用开发 工具集 APIExplorer

Python 多线程 VS 多进程(二)

若尘

多线程 多进程 Python编程 5月日更

初探图像二值化

CagyJ

算法 CV OpenCV 图像处理

Rust从0到1-错误处理-Result

rust Error 可恢复错误 result

《Spring 手撸专栏》第 2 章:小试牛刀(让新手能懂),实现一个简单的Bean容器

小傅哥

Java spring 容器 小傅哥 hashmap

面向服务体系结构的领域驱动设计

码语者

DDD

学习笔记之:知识地图

Nydia

学习

Flutter开发:Warning:CocoaPods minimum required version 1.6.0 or greater not installed…的解决方法

三掌柜

5月日更

520特辑丨码神VS爱神:盘点程序员的四大男友力,你偏爱哪一种?

华为云开发者联盟

程序员 代码 520 男朋友 男友力

网络攻防学习笔记 Day20

穿过生命散发芬芳

5月日更 网络攻防

超越持续集成——持续部署_研发效能_Chris Sims_InfoQ精选文章