Amazon.com 是 AWS 最大的客户 - 内部吃狗粮机制打造的服务质量秘密
从 Amazon.com 的电商网站、Prime Video、Alexa 运行在 AWS 上的事实出发,解析内部吃狗粮机制如何提升服务质量,以及 Prime Day 的负载如何锤炼 AWS 的架构设计。
AWS 起源于 Amazon.com 的基础设施难题
AWS 的诞生源于 Amazon.com 自身的基础设施挑战。2000 年代初期,Amazon.com 的工程团队每次开发新功能都需要向基础设施团队申请服务器,等待数周甚至数月。各团队各自构建和运维基础设施,导致重复投资和运营效率低下的问题蔓延。2003 年前后,Andy Jassy(后来的 AWS CEO)和一个小团队提出了将 Amazon.com 内部基础设施作为标准化服务提供的构想。这一构想不断发展,2006 年 S3 和 EC2 正式对外发布。关键在于,AWS 最初并非为外部客户设计,而是为解决 Amazon.com 自身的问题而诞生。这种「自己是第一个用户」的事实,从根本上支撑着 AWS 的服务质量。
Amazon.com 的哪些部分运行在 AWS 上
Amazon.com 几乎所有系统都运行在 AWS 上。商品目录、搜索引擎、推荐引擎、订单处理、库存管理、配送优化、客服聊天机器人等电商网站的全部功能都使用 AWS 服务。Prime Video 的流媒体分发将内容存储在 S3 中,通过 CloudFront 向全球分发。Alexa 的语音识别和自然语言处理运行在 AWS 的机器学习基础设施上。Amazon Go 无人商店的计算机视觉也在 AWS 上处理。DynamoDB 最初就是为解决 Amazon.com 购物车问题而开发的。2007 年发表的论文「Dynamo: Amazon's Highly Available Key-value Store」公开了作为 Amazon.com 内部系统开发的 Dynamo 设计,这篇论文成为后来 DynamoDB 的基础。也就是说,DynamoDB 是将在 Amazon.com 实际运营中锤炼的技术,以托管服务形式提供给外部客户的产品。
Prime Day - 每年一次考验 AWS 极限的压力测试
每年 7 月举办的 Prime Day 是 Amazon.com 全年最大的流量事件,同时也是 AWS 最大的压力测试。2023 年 Prime Day 期间,48 小时内售出超过 3.75 亿件商品。为处理这一规模的流量,AWS 在 Prime Day 前数月就开始准备。Amazon.com 的工程团队根据历史流量数据计算预期负载,提前为各服务预置容量。Prime Day 的负载可达平时的数十倍。这种极端的负载测试锤炼了 AWS 服务的可靠性。Auto Scaling 算法、DynamoDB 分区拆分、CloudFront 缓存策略、ELB 负载均衡逻辑等 AWS 的众多功能改进都源于 Prime Day 的经验。例如,DynamoDB 的自适应容量(热分区吞吐量自动重分配)就是为解决 Prime Day 限时抢购中特定商品访问集中的问题而开发的。
吃狗粮机制提升服务质量的原理
吃狗粮(使用自家产品)之所以能提升质量,在于反馈循环的速度和密度。外部客户的反馈需要经过工单、论坛、客户经理才能到达开发团队,耗时较长。而 Amazon.com 内部团队的反馈通过同一企业网络即时传达给开发团队。Amazon.com 的工程师每天使用 AWS 服务,直接体验性能下降、API 不便、文档不足等问题。这种体验成为服务改进最强大的推动力。具体案例:AWS Lambda 的并发执行管理功能,就是 Amazon.com 内部团队大规模使用 Lambda 时,经历了一个函数失控影响其他函数的问题后开发的。预留并发 (Reserved Concurrency) 和预置并发 (Provisioned Concurrency) 都是源于这一内部经验的功能。
内部客户与外部客户利益一致的结构
Amazon.com 作为 AWS 最大客户这一事实,对外部客户也有利。Amazon.com 是全球最大的电商网站之一,其流量规模、可用性要求和安全要求比大多数外部客户更为严苛。AWS 为满足这些要求而投入的技术改进,惠及所有外部客户。例如,Amazon.com 为 Prime Day 改进 DynamoDB 的扩展性能,该改进适用于所有使用 DynamoDB 的客户。Amazon.com 改进 CloudFront 的分发质量,所有使用 CloudFront 的网站加载速度都会提升。不过,这种结构也存在潜在风险。由于 Amazon.com 和外部客户共享相同基础设施,Amazon.com 的大型活动(如 Prime Day)可能影响外部客户的性能。AWS 通过资源的物理隔离和容量规划来管理这一风险。AWS 的服务设计了多租户隔离机制,确保特定客户的流量不会影响其他客户。如需系统学习云战略和 AWS 设计理念,可参考专业书籍 (Amazon)。