写点什么

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

  • 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:312629
用户头像

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

关注

评论

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

springboot文件上传下载实战 ——文件上传,nginx架构模型

Java 程序员 后端

springBoot集成Mybatis,linux系统编程手册pdf百度云

Java 程序员 后端

springCloud学习三之Eureka健康检查,java开发api接口教程

Java 程序员 后端

Spring面试题整理,springboot视频教程谁的好

Java 程序员 后端

SQL:我为什么慢你心里没数吗?,java面试说我基础太差

Java 程序员 后端

synchronized 中的 4 个优化,你知道几个?,rocketmq教程教程

Java 程序员 后端

SpringBoot自动配置原理及手动实现自动配置,35岁程序员半月4轮面试

Java 程序员 后端

SpringCloud 学习总结(思维导图),学习mysql基础教程

Java 程序员 后端

Spring中经典的9种设计模式,一定要记牢,springboot热启动原理

Java 程序员 后端

Spring框架技术总结(二),java自学视频免费

Java 程序员 后端

spring源码系列-beanDefinition(子路)(1),壁虎java视频百度网盘

Java 程序员 后端

Spring学习总结:IOC基础,2021Java开发现状分析

Java 程序员 后端

SSM框架整合过程总结,书籍+视频+学习笔记+技能提升资源库

Java 程序员 后端

SpringBoot整合MybatisPlus实战动态SQL,linux实用教程文东戈答案

Java 程序员 后端

SpringBoot:定制-Actuator,深入java虚拟机百度网盘

Java 程序员 后端

SpringCloudRPC调用核心原理:RxJava响应式编程框架,观察者模式

Java 程序员 后端

springcloud服务与服务之间的调用(Feign),java支付模块架构

Java 程序员 后端

Spring学习总结:IOC基础(1),java反射面试题及答案

Java 程序员 后端

SpringCloud SpringBoot 前后端分离企业级微服务架构源码赠送

Java 程序员 后端

Srping全注解开发---AOP模块,教科书般的排查与分析过程

Java 程序员 后端

String的内存分配与拼接操作,mysql数据库教程课后题答案

Java 程序员 后端

SpringCloud学习之【NACOS实现服务的注册与发现】,kafka基础原理

Java 程序员 后端

springcloud(一)注册中心eureka,Mycat和Mysql搭建高可用企业数据库集群

Java 程序员 后端

spring源码系列-beanDefinition(子路),mybatis和spring整合原理

Java 程序员 后端

SSM框架-SpringMVC详解,java反射和注解原理

Java 程序员 后端

this与super关键字(阿里巴巴面试竟然问道这个了…,ubuntulinux操作系统实用教程

Java 程序员 后端

SpringCloud-Gateway动态路由之Nacos,BATJ等企业Java面试知识分享

Java 程序员 后端

springcloud实战:服务间通信—,java系统开发教程

Java 程序员 后端

springcloud(三)网关zuul,mybatis工作流程面试

Java 程序员 后端

Spring面试题整理(1),真是经典中的经典

Java 程序员 后端

super与this在成员变量,成员方法,构造方法方面的作用

Java 程序员 后端

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