Ancestry.com 是世界上最大的营利性家谱公司,在软件开发方面一直处于领先地位。他们在五年多前开始采用敏捷开发实践,并通过持续交付保持领先地位,持续交付可以实现频繁的发布和更新。
以下是 Ancestry.com 从实施持续交付中吸取的 六个教训 。
团队必须多样化他们的知识
为了获得持续交付系统的好处,您需要一支经过测试、设计、软件开发流程和部署培训的团队。该团队应包括来自执行管理人员、产品管理人员和开发团队的人员。管理人员——在执行层面和产品层面——必须知道持续交付模型如何影响软件开发生命周期,并且需要对产品管理人员进行有关如何利用该模型来提高生产力的教育。
隔离测试
应使用隔离的测试机对已部署的依赖服务进行完整的集成测试。一旦构建被认为是健康的,就可以将其部署到可公开访问的机器上。要进行隔离测试,应将测试对象从 dependents 和 dependencies 中移除。这可以通过模拟这些外部组件的实际行为的伪造和模拟来实现。
自动化一切
持续交付系统的每个部分都应该高度自动化,并进行测试以确保质量到位。结合小版本,目标是快速从系统获得反馈。以下内容应该在持续交付系统中自动化:部署、配置管理、变更跟踪、冒烟测试和测试。
上线前热身
为防止由于服务请求突然激增而导致过载,请格式化实时流量的开始。部署必须配置为包括一个冒烟测试,该测试会在集群内一次运行一台机器的代码的关键区域。产品代码必须设计用于快速启动,并且足够健壮以处理应用程序池的频繁回收。
保持您的生产流水线稳健
如果管理层希望更快地完成最后一分钟的软件补丁,这与持续交付模型的概念是不一致的。持续交付是一个自动化的构建、部署、测试和发布过程——而不是最后一刻开发的手段。质量很重要。投入生产的产品必须稳健。类似于工厂装配线,生产流水线增加了吞吐量。它不会减少循环时间。
不要破坏团队的系统功能
如果一个团队破坏了系统功能,那么它就无法满足持续交付模型的目标。
在敏捷环境中,我们希望尽可能快地开发和部署代码,但每个人都必须是一个好公民。这意味着不会引入不兼容问题。确保持续功能的一个好方法是调用依赖组件的测试套件。