阿里云SDK支持策略
一、概述
本文讲述阿里云 OpenAPI SDK 工具包的生命周期维护策略,包括版本发布策略、更新策略、停止支持策略。
二、生命周期与维护策略
阿里云 SDK 的生命周期阶段有通用可用性维护阶段、基础安全性维护阶段和停止维护阶段,每个阶段的维护策略及特点如下表所示:
生命周期 | 维护策略 | API 覆盖度与发布周期 | 推荐程度与态度 | 一方平台(文档中心、OpenAPI 门户等) | 三方平台(代码托管仓库、社区等) |
通用可用性维护阶段 (General Availability) | SDK 将获得全面支持,包括功能更新、性能优化、bug 修复和安全补丁 | 100% API 支持 SDK,24小时内自动更新发布。 | 该阶段 SDK 推荐所有用户与项目使用。 | 标识为「推荐」。 提供完备的文档和示例代码,并承诺更新时效。 | 标识「推荐」。 |
基础安全性维护阶段(Basic Security Maintenance) | SDK 将不再接收新功能更新,但会定期发布重要的安全性更新和严重阻碍服务稳定的 bug 修复。 | 不承诺 API 覆盖度,按需更新发布。 | 适合已经稳定运行的系统,不推荐新项目与新用户使用。 | 标识为「不推荐」。 提供完备的文档和示例代码,但不承诺更新时效。 提供迁移指南,引导用户迁移到新版 SDK。 | 标识「不推荐」。 提供迁移指南,引导用户迁移/使用到新版 SDK。 |
停止维护阶段 (End-of-Support) | SDK 不再接收任何更新,包括安全更新。 停止接受任何类型的 Issue。 | 停止更新与发布。 | 该阶段 SDK 不再推荐任何新用户使用,且存量系统需要尽快迁移使用最新 SDK 以保证未来服务的持续性和安全性。 | 完全下线/隐藏所有入口。 | 标识「停止维护」。 提供迁移指南,引导用户迁移/使用到新代系 SDK。 表明不再支持任何类型的 Issue。 |
三、发布策略
阿里云 SDK 包版本会发布到官方包管理器(例如 Maven、NPM、PyPI、NuGet、Cocoapods、Packagist 等)仓库中,各个语言对应着不同的包管理仓库,并且阿里云会在 GitHub Aliyun 组织 下提供所有语言的 SDK 源代码。详情请参见版本支持列表。
3.1 阿里云 SDK 代系
目前阿里云 SDK 存在两个代系,第一代 SDK(V1.0 SDK)和第二代 SDK(V2.0 SDK)。V2.0 SDK 是在总结开发者在 V1.0 版本中遇到的一系列问题后重新开发的新一代 SDK,新增了许多特性,主要的改进目标是易于用户理解,降低用户接入成本,并提升 SDK 的健壮性。两者的区别请参见 V2.0 SDK 和 V1.0 SDK。
两代 SDK 的维护策略请参见生命周期与维护策略一节,各个代系的语言运行时的停止支持,参见版本支持列表。
3.2 版本号规范
阿里云每个代系的 SDK 版本号的变更都遵循 SemVer 规范:
版本号由 Major.Minor.Patch 3位组成:
|
SDK 的 Major 版本的增加,标志着该 SDK 经历了重大且实质性的更改,以支持该语言中的新习惯用法和模式。当公共接口(例如类名、方法名、参数名、参数类型等)、行为或语义发生变化时,即 SDK 存在 Break Change 时,就会引入 Major 版本。客户端需要主动更新才能使用最新的 SDK 版本,请务必根据阿里云官方提供的 SDK 发布报告(例如 Ecs Java 3.1.17 版本发布报告)来更新 Major 版本。
3.3 兼容性保障
不同代系的 SDK 是绝对不兼容的,升级需要参照升级V1.0 SDK指南。
同一代系的阿里云 SDK 版本号遵照 SemVer 规范,官方会保障所有语言 SDK 发布的 Minor 版本和 Patch 版本均向后兼容,只有 Major 版本会出现不兼容的情况。
四、更新策略
我们会定期提供阿里云开发工具包 SDK 及其底层依赖的更新,我们将这些第三方依赖项分成以下三个分类:
操作系统 (OS):包括 CentOS 7、Windows 7、Windows 10、macOS 12.x 等。
语言 Runtime:包括 Java 8、Java 11、.NET Core、PHP7、PHP8、Node.js 14.x 等。
第三方库/框架:包括 OpenSSL、.NET Framework 4.5、Java EE 等。
这些依赖项通常与语言社区或拥有该特定组件的供应商相关。 每个社区或供应商都会发布自己的产品支持终止时间表。
各个语言社区 Maintenance Policy:
Node.js–github.com
Python–devguide.python.org
Ruby–www.ruby-lang.org
Java–www.oracle.com
Go–golang.org
.NET Core–dotnet.microsoft.com
PHP–www.php.net
官方组织声明某语言版本停止维护后,阿里云 SDK 会继续支持该语言版本至少1年。
语言版本指维护对应编程语言的官方组织或机构发布的版本,例如 Java 8、Python 3.7等。
五、版本停止支持策略
5.1 触发节点
当社区宣布不再支持某个语言的某个版本或者某个依赖库后,我们会在一年左右时间也必然会对该版本进行声明,声明半年后停止支持。停止支持不影响客户对存量 SDK 的正常使用,仅是不再进行安全补丁的更新和新功能的支持。
5.2 声明内容
停止支持具体原因
停止支持具体时间
如何保持使用以及更新方式
迁移文档
5.3 声明途径
我们会对停止支持的原因进行官方解释,并通过如下途径进行通知:
提前一年时间进行停止支持声明,声明通知包括但不限于开发者门户-SDK 文档、开发者门户-消息订阅通知、帮助中心-SDK 文档、阿里云控制台消息通知;
迁移文档,必须在开发者门户-SDK文档、帮助中心-SDK文档同时提供;
部分语言的 SDK 侧做到通知,例如安装停止支持的 SDK 版本会进行警告等。