针对前 1000 万名用户,基于亚马逊云科技进行扩展

关键字: [Amazon Web Services re:Invent 2023, Amazon Web Services (亚马逊云科技), Scaling, 亚马逊云科技, Architecture, Users, Application]

本文字数: 1600, 阅读完需: 8 分钟

视频

如视频不能正常播放,请前往bilibili观看本视频。>> https://www.bilibili.com/video/BV1FC4y1R7gb

导读

在本论坛中,学习将处理业务早期快速增长和成功的能力构建到亚马逊云科技基础架构中的模式和技术。从实现高度可扩展的亚马逊云科技服务到构建经验证的模式,您可以在早期做出许多选择,帮助您克服一些常见的基础架构挑战。了解如何在不需要完全重建的情况下适应增长和规模。

演讲精华

以下是小编为您整理的本次演讲的精华,共1300字,阅读时间大约是6分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。

演讲者Sky和Chris在演讲一开始就强调了从开始就考虑可扩展性来构建应用程序的重要性。正如Sky所表示的那样,没有开发者希望创建一个无人使用的应用程序。其目标是为客户提供有用的产品或服务,满足内部需求或应对外部市场变化。在亚马逊和Amazon Web Services这样的大型公司里,可扩展性问题尤为突出。

本次演讲的目标是提供实用的工具和最佳实践,以确保应用程序具有前瞻性和适应能力,无论你是一个期待在一夜之间拥有10,000名用户的初创公司的创始人,还是一个拥有关键任务应用程序的企业。

首先,Sky提出了一系列关于如何在开始构建新应用程序时应该考虑的关键问题:

  1. 我应该如何选择和使用亚马逊云科技提供的200多种服务?我应该如何选择合适的架构模式?
  2. 如果我建立了这个应用程序,我将获得什么样的投资回报?我应该如何根据我的需求和市场需求进行逆向思考?
  3. 当应用程序需要扩展到10万用户以上时,我应该如何为未来的规模和弹性做好准备?
  4. 我的用户是谁?我应该如何确保系统的稳定运行,提供良好的用户体验,避免系统崩溃导致的糟糕体验?

Sky强调,今天的应用程序通常包括前端、后端和数据存储三个部分。前端是客户看到的用户界面,后端则包含了业务逻辑和计算引擎,而数据存储则包含了供业务运营使用的信息。

如今,一个关键的发展趋势是转向无服务器技术,这将使开发人员能够摆脱管理底层基础设施的重任,从而更专注于创新。此外,对于快速扩展的预期也日益增强,这意味着应用程序需要有处理大量数据和提供实时全球服务的能力。

正如Sky所说,没有一种架构是在第一天就被设计成高度可扩展的,但通过不断地迭代和改进,以及利用用户反馈的过程,可以使应用程序更加高效和经济高效。她引入了一个基于“建设、监控、学习和再建设”的良性循环。

首先,让测试人员进行试用,以便了解产品的实际使用情况。接着,利用诸如CloudWatch之类的工具来监控产品的性能和使用状况。在这个过程中,要不断吸收用户反馈和系统数据,以便对产品进行迭代优化。

然后,Sky开始关注初期架构的问题,从前端入手。现代前端开发的趋势是解耦前后端。传统的前端托管方式是将EC2、ELB(弹性负载平衡器)和CDN(内容分发网络)紧密捆绑在一起。然而,这种方法存在一些局限,例如需要管理所有的底层基础设施,以及在出现故障时缺乏冗余备份。

与此不同,Sky推荐采用Amplify Hosting等服务来实现前后端的分离。这样的好处包括内置的扩展能力、高性能以及通过CloudFront CDN实现的全球可用性。整个过程设置起来非常简便,只需连接您的代码仓库并进行构建配置即可。您无需管理任何基础设施。

在后端方面,Sky介绍了三种主要的计算选项:EC2(弹性云计算服务器)、容器和服务器无服务器。尽管人们通常会由于习惯而选择EC2,但这需要管理大量的配置和基础设施。虽然像ECS(亚马逊弹性容器服务)和EKS(亚马逊弹性容器服务)这样的容器可以简化这种状况,但仍然需要监督。服务器无服务器选项如亚马逊云科技 Lambda可以免除几乎所有的基础设施责任,使得开发者可以专注于编写代码。

为了确定合适的后端方案,Sky建议评估各种选项在从最灵活/可配置(EC2)到最管理(Lambda)的谱系上的位置。同时,也要考虑工作负载需求和开发人员的经验。

在选择计算方式之后,下一步是确定如何将您的应用程序暴露到互联网上。Sky介绍了用于REST API的API Gateway、用于简单流量代理的应用程序负载均衡器和用于GraphQL API的AppSync。

为了快速创建API后端,她强调了亚马逊云科技 AppRunner 的功能——这是一个完全托管的服务,提供自动扩展、负载平衡等功能。它允许从源代码部署Web应用程序,几乎不需要任何配置。

总的来说,通过使用AppRunner和Amplify Hosting,您可以在不管理任何底层资源的情况下运行初始应用程序。这使得开发者能够专注于创新,而不是基础设施的管理。

接下来,她会谈论关于数据库的问题——SQL与NoSQL。对于大多数应用场景,她建议从使用支持SQL关系功能的Amazon Aurora Serverless v2开始。主要原因包括SQL的广泛生态系统支持、许多应用程序遵循关系结构,以及Aurora可以处理大部分管理开销。然而,对于大规模的非结构化或非关系数据,DynamoDB等NoSQL数据库可能更适合。关键是为你的特定使用场景和数据结构选择专用的数据库。

Sky强调了Aurora Serverless v2如何通过将计算与存储分离来简化数据库扩展。它可以独立扩展以满足工作负载需求,因此只需支付所需资源的费用。为了进一步减轻数据库负担,可以添加缓存(如Elasticache)和代理(如RDS Proxy)。

目前,Sky总结道,这样的架构允许在几乎没有基础设施管理的情况下运行针对100K+用户的初始应用程序。接下来,她将交给Chris来讨论如何扩展到10M用户。

Chris首先强调了解决性能问题的重要性,随着规模的增加,这些问题会变得更加严重。他建议使用CloudWatch和X-Ray来开始跟踪关键指标和追踪。此外,DevOps Guru和CodeGuru等基于机器学习的服务也很有价值,它们可以分析基础设施和代码并提供优化建议。

在前端,Chris指出Amplify Hosting通过CloudFront可以轻松扩展以应对大量用户请求,无需任何配置。性能取决于调整代码,最小化后端调用,以及在边缘缓存静态资产——所有这些都可以由Amplify自动处理。

对于数据库,Aurora Serverless v2将继续根据需要自动扩展存储和计算。添加读副本和RDS Proxy可以帮助进一步扩展。通过缓存常用查询,Elasticache可以显著减轻数据库负担。

AppRunner后端可以处理大约5000个并发请求,足够满足早期扩展需求。它根据负载自动扩展实例,检查新实例的健康状况,并智能地路由流量以实现缩容。

当达到10M+用户时,单体应用程序通常会遇到组织上的瓶颈,因为开发人员团队会相互干扰。这通常需要迁移到微服务。分解的方法包括按数据域或业务功能进行分解。

数据库可以被划分为不同的集群。克里斯强调,通过从同步通信转向服务间的异步通信,可以降低紧密的耦合度。诸如SNS、SQS、EventBridge和Kinesis等工具支持异步传输事件。

最终的结果是许多托管服务都能够实现自动扩展,尽管可观察性对于优化热点依然非常重要。在极高的规模下,可能需要引入一些内部资源来加以控制。然而,采用缓存、数据库联合选择以及针对特定目标构建技术等关键策略,可以帮助您在亚马逊云科技领域取得显著进展。

总的来说,本次演讲主要关注的是如何利用亚马逊云科技的托管服务来自动应对扩展需求,同时持续监控并优化系统的痛点。将单体应用程序拆分为微服务有助于实现持续的扩展。只要具备正确的架构基础并通过迭代进行改进,应用程序便能够在亚马逊云科技上稳步增长,以满足数百万用户的需求。

下面是一些演讲现场的精彩瞬间:

亚马逊云科技使得开发者能够构建可扩展的应用程序,以满足大量用户的需求。

针对前 1000 万名用户,基于亚马逊云科技进行扩展_第1张图片

演讲者在展示一张关于从高度可配置的EC2到无服务器Lambda等各种亚马逊云科技服务的配置责任的洞察性幻灯片时暂停了一下。

针对前 1000 万名用户,基于亚马逊云科技进行扩展_第2张图片

尽管演讲者正在庆祝达到10,000名用户,但随后由于需求过高导致系统崩溃。

针对前 1000 万名用户,基于亚马逊云科技进行扩展_第3张图片

借助亚马逊云科技的托管服务,Sky在开发新应用程序时将重点放在业务应用而非基础设施上,从而节省了大量时间。

针对前 1000 万名用户,基于亚马逊云科技进行扩展_第4张图片

领导者们强调了使用工具来监测基础设施和架构内部状况的需求,以便实现规模的扩大和增长。

针对前 1000 万名用户,基于亚马逊云科技进行扩展_第5张图片

亚马逊云科技遵循用于在其产品中扩展微服务的既定模式,以实现对性能的深入了解,从而了解在何处以及如何扩大规模。

针对前 1000 万名用户,基于亚马逊云科技进行扩展_第6张图片

AppRunner提供了一种简单的部署容器化Web应用程序的方式,而无需管理服务器。

针对前 1000 万名用户,基于亚马逊云科技进行扩展_第7张图片

总结

这篇演讲主要探讨了如何将应用程序从初创企业扩展至超过一千万用户的亚马逊云科技的实践经验。建议首先尝试使用Amplify托管服务和App Runner等托管服务,以便摆脱基础设施管理的困扰。随着应用的逐步壮大,可以利用CloudWatch等监控工具发现潜在的瓶颈问题。由于数据库通常会成为性能瓶颈,因此推荐采用Amazon Aurora Serverless v2模式,实现存储和计算的独立扩展。此外,通过添加读取副本以及使用RDS代理等技术,可以进一步提高系统的负载分散能力。利用Elasticache缓存技术可以减少对数据库的访问需求。在大规模场景下,将单体应用拆解成微服务架构有助于在各个领域间分担负载压力。在各服务间实现异步通信可以降低相互间的依赖程度。最后,借助API网关处理服务间的路由分配,并运用SQS和SNS等事件服务支持异步消息传输。遵循这些托管服务、监控、数据库扩展、缓存、微服务和异步通信等方面的最佳实践,便能在亚马逊云科技平台上顺利地将应用程序扩展至超过一千万用户。

演讲原文

https://blog.csdn.net/just2gooo/article/details/134812931

想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站!

2023亚马逊云科技re:Invent全球大会 - 官方网站

点击此处,一键获取亚马逊云科技全球最新产品/服务资讯!

点击此处,一键获取亚马逊云科技中国区最新产品/服务资讯!

即刻注册亚马逊云科技账户,开启云端之旅!

【免费】亚马逊云科技“100 余种核心云服务产品免费试用”

【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”

亚马逊云科技是谁?

亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者,自 2006 年以来一直以不断创新、技术领先、服务丰富、应用广泛而享誉业界。亚马逊云科技可以支持几乎云上任意工作负载。亚马逊云科技目前提供超过 200 项全功能的服务,涵盖计算、存储、网络、数据库、数据分析、机器人、机器学习与人工智能、物联网、移动、安全、混合云、虚拟现实与增强现实、媒体,以及应用开发、部署与管理等方面;基础设施遍及 31 个地理区域的 99 个可用区,并计划新建 4 个区域和 12 个可用区。全球数百万客户,从初创公司、中小企业,到大型企业和政府机构都信赖亚马逊云科技,通过亚马逊云科技的服务强化其基础设施,提高敏捷性,降低成本,加快创新,提升竞争力,实现业务成长和成功。

针对前 1000 万名用户,基于亚马逊云科技进行扩展_第8张图片

你可能感兴趣的:(aws,亚马逊云科技,科技,人工智能,re:Invent,2023,生成式AI,云服务)