点击围观!腾讯 TAPD 助力金融行业研发提效、敏捷转型最佳实践! 了解详情
写点什么

在部署过程中使用“最后负责时刻”

  • 2009-08-17
  • 本文字数:942 字

    阅读完需:约 3 分钟

Chris Matts 发起了一个讨论,提出如下问题:

在过去三年,我用过的最强大的技术莫过于延迟代码模式(latent code patterns,简称 lcp)。我刚做完一个项目,其中每个功能特性都是可以配置的,也就是说再也不会出现某个修复或特性必须等待另一个正在测试的特性。我们将重点放在快速有效的回归测试之上。尽管经常有重要版本发布,但我们只有一个分支的代码,因此不会遇到代码合并问题。还有人使用延迟代码模式么?我希望听到别人的做法,因为只有遇到问题的实践者才能做出最为出色的创新。

lcp 模式带出另一个问题,就是围绕着测试的在制品(work in progress)限制。大家有什么想法么?

这样看来,Chris 所提到的,就是说他们的团队有能力随意打开或关闭各种功能特性,即使是正在开发中的特性。这不会阻碍团队根据需要发布软件的能力,因为特性可以根据需要关闭。Chirs 后来说:这种做法背后的想法,就是要在作出所有的设计决策时提出这样一个问题:

这种设计方法能否对外做出承诺?

David Roussel 与 Chris 同在一个团队,他阐述了团队实施该方法的一些详细技术细节。在后面的讨论中,他总结了其他人采纳类似解决方案的几种不同方式:

我认为有很多种方式都能起到同样效果,但是重点在于要认识到:在发布之前的最后一分钟,我们必须做到可以调整发布版本的功能优先级,而且要能在不产生新的代码分支的前提下做到这一点。其他的都是细节问题了,但这些细节很有趣。 其他人怎么解决这个问题?目前有人提到:

  • 依赖注入,还要做到在构建时可以变更依赖
  • 依赖注入,还要做到基于配置变更依赖
  • 采取简单的老式配置方式,使用 if 语句
  • 针对每个特性做分支
  • command 文档、command 模式
  • 基于数据库的 command 式配置(得给该方法起个好名字)

Joshua Kerievsky 补充了下面的解决方法:

David,我们有时会把 Command 加入到仍处于在制状态的产品中,没用用户能看见它们,而我们可以通过 URL 执行。也许能叫“延迟 Command”? 我不确定你上面的列表是否包括隐藏菜单项。

这种设计技巧(你愿意叫架构也可以)可不新鲜。实际上,它要比敏捷软件开发出现得早,而且在面向对象和模式社区中扎根已久。而它所能满足的需求,比如像 Chris 的问题:

这种设计方法能否对外做出承诺?

却是全新的。

查看英文原文: Enabling the Last Responsible Moment in Deployment

2009-08-17 23:321284
用户头像

发布了 479 篇内容, 共 145.6 次阅读, 收获喜欢 43 次。

关注

评论

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

Redis分布式锁的正确使用

编程江湖

redis java编程

学习react源码 征服面试官

buchila11

React

热门盘点:企业该如何对待低代码?应不应该选择低代码?

优秀

低代码

好习惯影响孩子的一生

Tiger

28天写作

解析云原生2.0架构设计的8大关键趋势

华为云开发者联盟

云原生 架构设计 数据治理 存算分离 分布式云

「MySQL」数据库备份和还原

恒生LIGHT云社区

MySQL 数据库 MySQL 数据库

Android C++系列:Linux网络(二)通信过程

轻口味

c++ android 28天写作 12月日更

大数据开发之Hadoop家族都有谁

@零度

大数据 hadoop

🍃【Spring专题】「实战系列」spring注解@ConditionalOnExpression详细使用说明

洛神灬殇

spring Spring Framework Condition 12月日更 ConditionOnExpression

基于MRS-Hudi构建数据湖的典型应用场景介绍

华为云开发者联盟

数据仓库 数据湖 华为云 Apache Hudi MRS-Hudi

【量化】实战获取资产组合理论模型的数据源

恒生LIGHT云社区

资源 量化投资 量化

Perforce用户文章转载:用了P4这一招,九成问题能自救

龙智—DevSecOps解决方案

报错 perforce

前端面试题之模块化开发

@零度

大前端 模块化

给弟弟的信第7封|离开大学的喜与悲

大菠萝

28天写作

大厂面试算法题之链表

程序员学长

模块一课程作业

李晓笛

万众提供素材,万众联合创作

mtfelix

28天写作

uni-app技术分享| uniapp实现直播旁路推流

anyRTC开发者

uni-app 音视频 视频直播 视频通话 旁路推流

The Data Way Vol.7|从故事里寻找开源的『内核』

SphereEx

Apache 开源 播客 Meetup SphereEx

埃文科技上榜CCSIP 2021中国网络安全产业全景图3大安全模块

郑州埃文科技

网络安全 ip技术 全景图

Go语言逆向技术:恢复函数名称算法

华为云开发者联盟

二进制 函数 go语言 逆向分析 恢复函数名称

通过接口上传文件到百度网盘

为自己带盐

28天写作 百度网盘 签约计划第二季 12月日更

dart系列之:浏览器中的舞者,用dart发送HTTP请求

程序那些事

flutter 浏览器 dart 程序那些事 12月日更

API标准化对Dapr的重要性

行云创新

搞定react源码 惊艳面试官

buchila11

React

怎么排查是哪里出现了数据倾斜

编程江湖

大数据 数据倾斜

java开发之java开发环境的快速构建

@零度

Java java开发环境

【报名中】我们把你对 ShardingSphere 的好奇,都放在这场 Meetup 中

SphereEx

数据库 开源社区 ShardingSphere Meetup SphereEx

高效设计一个LRU

bigsai

数据结构 算法 LRU

Vue.js 的九个性能优化技巧

编程江湖

Vue 大前端

伴鱼基于 Flink 构建数据集成平台的设计与实现

Apache Flink

大数据 flink 编程 后端 实时计算

在部署过程中使用“最后负责时刻”_敏捷_Amr Elssamadisy_InfoQ精选文章