许式伟的架构课
许式伟
七牛云 CEO
84946 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 89 讲
许式伟的架构课
15
15
1.0x
00:00/00:00
登录|注册

75 | 软件版本迭代的规划

业务领域的扩展
标准库能力增强
工程能力强化
性能优化
遇到会对产品产生巨大冲击的需求,谨慎处理
版本迭代的侧重点在不同阶段会有极大的不同
正确响应会招致巨大影响面的功能需求的姿势
进入扩张阶段的版本迭代
从 0 到 1 阶段的版本迭代
Go 语言的变化
Go 语言的版本迭代规划值得学习
Go 1.13
Go 1.12
Go 1.11
Go 1.10
Go 1.9
Go 1.8
Go 1.7
Go 1.6
Go 1.5
Go 1.4
Go 1.3
Go 1.2
Go 1.1
Go 1.0
结语
如何做版本规划
Go 版本迭代的背后
Go 版本的演进历史
Go 语言的版本迭代
降低迭代维护成本
防范软件质量风险
敏捷地响应需求变更
按时按质进行软件的迭代和发布
版本规划的套路
软件架构师对软件工程的执行结果负责
探讨软件版本迭代的规划
专栏话题主要集中在软件工程的质量与效率
作者: 七牛云许式伟
软件版本迭代的规划

该思维导图由 AI 生成,仅供参考

你好,我是七牛云许式伟。
到今天为止,我们专栏的话题主要集中在软件工程的质量与效率上。我们在专栏的开篇中就已经明确:
从根本目标来说,软件架构师要对软件工程的执行结果负责,这包括:按时按质进行软件的迭代和发布、敏捷地响应需求变更、防范软件质量风险(避免发生软件质量事故)、降低迭代维护成本。
但是今天,我们将探讨一个更高维的话题:软件版本迭代的规划。后续我们简称为 “版本规划”。简单说,就是下一步的重点应该放在哪里,到底哪些东西应该先做,哪些东西应该放到后面做。
这是一个极其关键的话题。它可以影响到一个业务的成败,一个企业的生死存亡。方向正确,并不代表能够走到最后,执行路径和方向同等重要。
那么,版本规划的套路是什么?
探讨这个问题前,我想先看一个实际的案例。这个案例大家很熟悉:Go 语言的版本迭代。
我们从 Go 语言的演进,一起来看看 Go 团队是如何做软件版本迭代规划的。这有点长,但是细致地琢磨对我们理解版本规划背后的逻辑是极其有益的。

Go 版本的演进历史

Go 语言的版本迭代有明确的周期,大体是每半年发布一个版本。
Go 1.0 发布于 2012 年 3 月,详细 ReleaseNote 见 https://tip.golang.org/doc/go1。它是 Go 语言发展的一个里程碑。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Go语言的版本迭代历程展示了其固定的半年发布周期,每个版本都带来了重要的改进和功能增强。从Go 1.0到Go 1.13,每个版本都注重语言内在机制的改善、性能提升和新功能的引入。其中,Go 1.5实现了自举,GC效率得到了显著提升;Go 1.11引入了Go modules,解决了模块的版本管理问题;而Go 1.13进一步改善了sync.Pool的性能和逃逸分析,减少了堆上的内存分配。这些版本的演进历程展示了Go团队在软件版本迭代规划上的成功经验,为读者提供了宝贵的参考和启示。 Go语言的版本迭代规划非常值得认真推敲与学习。Go的版本迭代频率较高,但在Go 1.0版本之后,语言功能基本稳定,只有少量变动。版本迭代重点包括性能优化、工程能力强化、标准库增强和业务领域扩展。Go语言的版本规划注重用户使用姿势的迭代,以及在扩张阶段关注用户看不见的非功能性需求。对于重大客户需求,Go团队展现了正确的姿势,将其放到旁路版本独立演化,直到验证成熟后再合并到主版本。这种战略定力值得借鉴。 在不同阶段,版本迭代的侧重点会有极大的不同。从0到1阶段,验证用户使用姿势是重点,而进入扩张阶段,产品竞争力成为关键指标。对于会对产品产生巨大冲击的需求,需要谨慎处理,遵循从0到1阶段的方法论,在少量客户上先做灰度。Go语言的版本迭代规划经验为软件版本迭代规划提供了宝贵的参考,值得深入思考和理解。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《许式伟的架构课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(16)

  • 最新
  • 精选
  • Charles
    许老师,Go的这些版本迭代历史,是在1.0发布之初就定了路线图,跟着路线图在迭代,所以可以做到战略定力? 是不是可以理解为架构设计上的成功,就会顺其自然有比较好的迭代节奏?

    作者回复: 大部分我们理解的架构设计,是术,是怎么把事情做正确。版本规划其实也是架构设计,是道,是做正确的事情。

    2020-01-21
    8
  • xiaobang
    用户使用姿势具体只什么?

    作者回复: 就是用户如何使用我们的产品,更加专业一点的说法是 “产品设计的规格”。

    2020-01-26
    5
  • 沉睡的木木夕
    ”一直向后兼容“,让我想到了产品迭代的“breaking change”。难道 go 在重构的时候能保证不会发生破坏性变更,有时候的“不兼容”是为了用户更好的使用吧。当然,必然会有少量用户的不买单

    作者回复: 能够向后兼容的前提是预见性。这也是我一直强调顶级架构师需要能够预测需求的演变方向。

    2020-03-30
    4
  • 子瞻
    “向后兼容”是兼容之前的老版本的意思呀!我好像理解到反了,那有“向前兼容”这一说法吗?

    作者回复: 其实更重要的是老版本要能够支持新版本,对软件来说。否则你的用户相互交流很困难,有一个升级了,其他人就被迫升级。

    2020-05-24
    2
    3
  • 版本的迭代规划这一点很有感触:关键在于正确的时间点做正确的事情。go在用户量不大的时候,在意的是用户使用姿势,用户量上来就在意性能。好的架构师,永远能够做到不受客户的干扰,不被某些令人振奋的需求所影响,深入了解用户真正需要的是什么

    作者回复: 👍

    2021-11-14
    1
  • #^_^#
    “承诺版本一直向后兼容”是怎么做到的,“只读”思想吗?

    作者回复: 也需要时间打磨,go开源后两年多才发布Go 1.0,也是出于这方面的原因

    2020-01-21
    1
  • Aaron Cheung
    这个版本最重要的新功能是 Go modules。前面我们说 Go 1.5 版本引入 vendor 机制以解决模块的版本管理问题,但是不太成功。这是 Go 团队决定推翻重来引入 module 机制的原因。 我个人比较好奇golang团队规模,从0到1到100的过程的确比较漫长

    作者回复: 还真没了解过,不过社区贡献者的力量也是不可小觑的

    2020-01-21
  • leslie
    其实文章中提到了一个很关键的问题:"满足需求的同时如何简化或不增加用户操作的复杂度“。这些年见过太多的为了满足客户需求而明显增加了复杂度的案例,做技术的同时如何去思考产品;稳定性且渐进的满足需求是自己在考虑的问题。 经常会碰到产品或营销团队说我看到XXX公司或者说我想到了XXX主意非常好,可是是否真的那么急着要上,用户体验度如何呢?不能在成熟的产品中去不断的试错,而应当是一种借鉴的过程。Go语言的版本迭代,对我们而言其实是一个很好的学习与反思的过程。
    2020-02-01
    4
  • Jxin
    放到业务开发。 (打基础) 1. 0.x-1.0重心应该放在核心域的开发,保证其健全,简洁,灵活。 (产出业务价值) 2.待核心域基本稳定后,再发布1.0-100.0的版本,做支撑域和通用域的开发。 3.各业务域间应该是可组合可插拔,没有强依赖的平级独立的立场。(也应具备旁路分支独立开发的灵活性) 4.在1.0-100.0的支撑业务开发时,每次只聚焦当下最重要的业务域开发(排好优先级)。
    2020-01-21
    3
  • Run
    高筑墙,广积粮,缓称王
    2021-03-31
    1
收起评论
显示
设置
留言
16
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部