从 re:Invent 发布看 AWS 的三年后 - 服务的生命周期与淘汰规律
正视 CodeCommit 停止新用户注册、SimpleDB 事实上终止等案例,分析 AWS 服务的生命周期,提供在技术选型中识别「不会消失的服务」的视角。
AWS 服务也有寿命
AWS 一直建立在「一旦发布的服务不会被淘汰」这一隐性信任之上。然而,2024 年 7 月情况发生了变化。AWS 宣布对 CodeCommit、Cloud9、S3 Select、CloudSearch、SimpleDB 等多项服务停止接受新客户。现有客户可以继续使用,但不再添加新功能。OpsWorks Stacks 于 2024 年 5 月完全终止服务。这些动向明确表明,AWS 的服务也有生命周期,并非永久存在。在技术选型中,「因为是 AWS 的服务所以放心」这一前提已不再无条件成立。
消失的服务们的共同点
被淘汰或缩减的服务存在共同模式。SimpleDB 是 2007 年发布的 AWS 早期 NoSQL 数据库,但 2012 年 DynamoDB 发布后迅速失去存在感。它从 AWS 服务列表中消失,控制台也无法访问,但 API 多年来一直维持着。2024 年终于停止了新用户注册。CodeCommit 是 AWS 的托管 Git 仓库服务,但无法在与 GitHub 和 GitLab 等专业服务的竞争中胜出。Cloud9 是基于浏览器的 IDE,但随着 VS Code 远程开发功能和 GitHub Codespaces 的崛起,差异化变得困难。OpsWorks 是使用 Chef 和 Puppet 的配置管理服务,但随着容器和无服务器的普及,传统配置管理工具的需求本身在缩小。这些服务的共同点是:出现了更优秀的替代方案、属于 AWS 核心基础设施的周边工具、以及用户数量降至一定阈值以下。
服务生命周期的四个阶段
AWS 服务的生命周期可分为四个阶段。第一阶段是 Preview。在 re:Invent 等活动上发布,作为有限预览提供。此阶段没有 SLA,API 可能变更,不适合生产工作负载。需要注意的是,也存在停留在 Preview 阶段而未达到 GA 的服务。第二阶段是 GA(正式发布)。设定 SLA,可用于生产环境。但 GA 初期的服务可能文档不完善,或在边缘情况下行为不稳定。GA 后约 1 年视为谨慎评估期较为安全。第三阶段是成熟期。功能稳定,最佳实践确立,生态系统(第三方工具、社区、书籍)形成。S3、EC2、Lambda、DynamoDB 处于此阶段,作为 AWS 的收入支柱持续获得大规模投资。第四阶段是缩减与整合。新功能停止添加,文档更新频率下降,re:Invent 上不再提及。最终进行停止新用户注册或推荐迁移到后继服务。
不会消失的服务的条件
长期存续的服务具有共同特征。第一,成为其他服务的基础。S3 被 AWS 众多服务用作数据存储,淘汰 S3 事实上不可能。EC2 是 ECS、EKS、RDS、Redshift 等众多服务的运行基础。IAM 是所有服务认证与授权的基础。这些基础服务因依赖关系之深,淘汰成本极高。第二,是 AWS 的收入支柱。EC2 和 S3 占 AWS 营收的很大比例,对这些服务的投资会持续。第三,与行业标准或开源生态系统相结合。EKS 与 Kubernetes、RDS 与 PostgreSQL 和 MySQL、Lambda 与 FaaS(Function as a Service)概念本身相结合。基于行业标准的服务,即使 AWS 特有的实现被淘汰,只要标准本身存续就会提供后继。相反,基于 AWS 独有技术且与行业标准接触面薄的服务,因替代方案的出现而被淘汰的风险较高。
技术选型的实践框架
在判断是否采用新的 AWS 服务时,以下框架很有效。首先,确认该服务从 GA 至今经过了多长时间。GA 后超过 2 年且持续添加功能的服务,很可能已进入成熟期,是稳定的选择。其次,确认该服务是否成为 AWS 其他服务的基础。在 AWS 文档和架构指南中被频繁引用的服务位于生态系统核心,可判断淘汰风险较低。然后,向自己提出最重要的问题:如果这个服务 3 年后不存在了怎么办。事先设计退出策略是技术选型中最大的风险缓解措施。具体来说,不直接依赖服务特有的 API,而是设置抽象层使服务切换变得容易。确保数据导出手段,定期验证导出是否正常工作。事先调查替代服务候选,概算迁移路径。 如需深入了解技术选型和架构决策的知识,相关书籍 (Amazon) 也可供参考。
总结
AWS 服务也有生命周期,并非永久存在。2024 年 CodeCommit、Cloud9、SimpleDB 等停止新用户注册明确证明了这一事实。不会消失的服务的条件是:成为其他服务的基础、是收入支柱、与行业标准相结合。在技术选型中,始终保持「如果这个服务 3 年后不存在了怎么办」的问题意识,事先设计退出策略,是构建长期稳定系统的关键。