组件是软件设计开发中实现可重用的重要手段。开发团队一般都需要封装足够多且功能完善的组件来支撑快速开发和降低学习成本。为了能够提供一个高度可重用性的组件,就会有一些人去进行组件的标准化开发和快速迭代。

在传统的组件开发中,组件A做了功能升级后(由1.0升级至2.0版本),应用A需要更新项目中关于依赖组件版本声明的文件,将组件A的版本声明升级至2.0然后再进行构建操作。这样的升级方案会有以下问题:

  1. 组件升级推广困难,需要所有依赖应用修改代码将组件A的版本声明升级至2.0
  2. 组件回滚困难,如果组件发布后发现严重问题需要应用回滚,那么所有已升级应用需要修改代码将组件A的版本声明回滚至1.0
  3. 组件的灰度范围小,当组件的开发者对组件的功能发布信心不足或者组件的功能发布影响比较大时,往往期望能在生产环境选择部分应用进行灰度,这时由于需要应用负责人修改代码才能配合组件的功能灰度将导致组件所能灰度的应用的数量有限。
  4. 组件维护成本高,组件的开发者不了解组件各个版本被应用的使用情况,也无法避免一个已经被废弃的版本不被其他应用所使用,将导致组件的开发者不得不维护所有的发布版本以及在组件设计上兼容历史版本。

那么如何解决组件开发者在组件发布过程中遇到的问题,以及如何降低组件开发者的灰度成本就成为了我们需要解决的首要问题。

详细内容请参考文章:组件灰度与发布的探索和实践