新功能的开发 和 稳定性的保持 对产品都很重要。
但是添加新功能对影响稳定性,如何操作来对两者都有保障?
下面把Dubbo的一个开发实践记录如下,希望给大家借鉴。
2个版本并行开发
- BugFix版本,低版本,比如2.4.x。是GA版本,线上使用的版本,只会BugFix,升级第三位版本号。
# 这个版本可放在SVN的Fix分支上。 - 新功能版本,高版本,比如2.5.x。加新功能的版本,会给对新功能有需求的应用试用。
# 这个版本可放在SVN的Trunk上。
2.5.x的新功能基本稳定后,进入2.5.x试用阶段。找足够多的应用试用2.5.x版本。
在2.5.x够稳定后:
- 2.5.x成为GA版本,只BugFix,推广使用此版本。
- 2.4.x不再开发,应用碰到Bug让直接升级。
- 从2.5.x拉成分支2.6.0,作为新功能开发版本。
优势
- 保持GA版本是稳定的!因为:
- 只会作BugFix
- 成为GA版本前有试用阶段
- 新功能可以高版本中快速响应,并让应用能试用新功能。
- 不会版本过多,导致开发和维护成本剧增
用户要配合的职责
由于开发只会BugFix GA版本,所以用户需要积极跟进升级到GA版本,以Fix发现的问题。
定期升级版本用户带来了不安。这是一个伪命题,说明如下:
- GA经过一个试用阶段保持稳定。
- GA版本有Bug会火速Fix
- 相对出问题才升级到GA版本(可以跨了多个版本)定期升级平摊风险(类似小步快跑)。
经历过周期长的项目的同学会有这样的经历,三方库版本长时间不升级,结果三方库出了问题而不得不升级到最新版本(跨了多个版本)风险巨大。
当然版本升级的频率是一种权衡。
FEATURED TAGS
生活
blog
Java
shell
Unix/Linux
unix
Groovy
jms
mom
middleware
extension
log4j
philosophy
原则
最佳实践
Shell
generic
gnu
windows
cmd
tips
dubbo
Service
设计
class
date
i/o
api
design
服务
优劣
Linux
git
week
日期
星期
计算
月份
命令行
配置
Windows
Dubbo
约定
权限
Command Line
发布
java
cooma
release
微容器
github
microcontainer
扩展点
容器