阿里云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 版本會進行警告等。