为您的工作负载获得应用程序可扩展性和无服务器计算能力
本指南为您提供了一种简化的方法,以构建、部署和管理适用于中小型企业的高度可扩展的容器化三层 Web 应用程序。本指南涵盖了应用程序的整个生命周期,涉及从设置架构到部署容器和监控系统性能的各个环节。通过专注于容器化,您可以根据需求动态调整资源,让您的 Web 应用程序可以在不影响性能或用户体验的情况下应对流量增长和突发的激增。容器化 Web 应用程序可以帮助您优化应用程序资源并改进 Web 应用程序的开发。
请注意:[免责声明]
架构图
[文本]
第 1 步
使用域名服务(DNS)Amazon Route 53,根据静态和动态内容的请求路径路由来自 Web 客户端的流量。
第 2 步
使用 Amazon Cognito 保护和控制对您 Web 应用程序的访问。
第 3 步
使用 Amazon CloudFront 之类的内容分发网络(CDN)来降低静态内容交付延迟。
第 4 步
使用 Amazon Simple Storage Service(Amazon S3)来存储静态内容和备份。
第 5 步
使用 Amazon API Gateway 处理所有传入的 API 调用和流量管理,并进行授权、访问控制和节流。
第 6 步
将应用程序负载均衡器配置为面向互联网,并使用它将 Web 流量分配到多个可用区(AZ)的应用程序中。
第 7 步
在 Amazon Elastic Container Service(Amazon ECS)上运行应用程序,并使用 AWS Fargate 进行无服务器计算。发送 API 调用以获取动态内容。
第 8 步
每当有 API 调用时,从 Amazon DynamoDB 检索应用程序数据和内容。
第 9 步
将运行应用程序的容器映像存储在 Amazon Elastic Container Registry(Amazon ECR)中。使用 Amazon ECS 拉取映像来运行应用程序。
第 10 步
使用 Amazon CloudWatch 来监控和观察应用程序和所有资源。
Well-Architected 支柱
当您在云中构建系统时,AWS Well-Architected Framework 可以帮助您了解所做决策的利弊。框架的六大支柱使您能够学习设计和操作可靠、安全、高效、经济高效且可持续的系统的架构最佳实践。使用 AWS 管理控制台中免费提供的 AWS Well-Architected Tool,您可以通过回答每个支柱的一组问题,根据这些最佳实践来检查您的工作负载。
上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。
-
卓越运营
本指南使用 CloudWatch 来帮助您定义、捕获和分析工作负载指标,以深入了解工作负载事件并从中获得实用见解。您可以结合业务和技术视角来实施 CloudWatch 控制面板,以了解工作负载的运行状况,并帮助团队成员做出明智的决策。
-
安全性
本指南旨在促进实现稳健的安全状况,帮助您保护数据并防范潜在漏洞,无需自行构建复杂的安全控制措施。它使用 Amazon Cognito 进行用户身份和访问管理、身份验证以及跨设备同步。CloudFront 提供分布式拒绝服务防护和字段级加密,并与 AWS Shield 集成以防御网络攻击。本指南还使用了 DynamoDB,它提供静态和传输中加密以及精细的访问控制,并与 AWS Identity and Access Management(IAM)集成以保护 Web 应用程序的数据。
-
可靠性
本指南使用托管式 AWS 服务,这些服务可自动扩展以适应需求变化。API Gateway 可接受并处理多达数十万个并发 API 调用。它可处理自动扩缩、节流和监控,帮助您构建有弹性、可观察且可从故障中快速恢复的架构。 应用程序负载均衡器可将负载分配给运行状况良好的 Amazon ECS 服务、平衡多个可用区的流量,并对目标执行运行状况检查,从而帮助您提高工作负载可用性、处理流量峰值并快速应对故障。应用程序负载均衡器还集成了 Fargate 的自动扩缩,Fargate 建立在容错基础设施之上,可增强工作负载的可用性和弹性。
此外,本指南使用 Route 53,这是一种 DNS,可通过自动失效转移、基于延迟的路由和运行状况检查将最终用户路由到运行正常的应用程序端点。出现故障时,它可以将流量重定向到备用可用区。
-
性能效率
本指南使用托管服务来处理基础设施管理事宜,以便您专注于应用程序代码。这些服务可以动态扩展,以便您的 Web 应用程序可以在不影响性能或用户体验的情况下应对增加的流量。Amazon ECS 使用 Fargate 来处理扩展和基础设施管理事宜,无需您自行预置或优化服务器,即可提高资源利用率和可用性。
DynamoDB 可自动处理预置、复制、扩展和硬件维护。此外,CloudFront 还提供全球 CDN,可在距离用户更近的地方缓存内容,延迟低,传输速度快。这可降低数据传输成本,无需管理服务器,并且无需预置容量即可无缝扩展以应对流量高峰。
-
成本优化
本指南使用 AWS 服务帮助您通过扩展来优化资源分配。例如,使用 Fargate,您只需为容器消耗的虚拟 CPU 和内存资源付费,无需预置和管理基础设施,并能够降低成本。DynamoDB 可扩展吞吐量和存储空间以避免过度预置。它无需管理服务器,从而消除了管理开销,并提供可预测的按需容量定价,无最低费用。
此外,CloudFront 与 Amazon S3 集成。您可以直接从 S3 存储桶提供静态内容,无需预置 Web 服务器,而且 CloudFront 在边缘缓存内容以最大限度地降低数据传输成本,压缩对象以减小大小,并自动扩展以应对流量高峰。
-
可持续性
本指南在 Fargate 上运行 Amazon ECS,因此您无需管理服务器即可运行容器,从而提高资源利用率并帮助您避免过度预置和浪费。DynamoDB 也可以帮助您避免过度预置,它拥有使用可再生能源的节能基础设施,其无服务器模型可以扩展吞吐量和存储空间以满足需求。此外,DynamoDB 覆盖全球,这使您可以将表放在靠近用户的地方,以减少网络传输带来的影响。
实施资源
提供了在 AWS 账户中进行实验和使用的详细指南。构建指南的每个阶段(包括部署、使用和清理)都将被检查,以便为部署做好准备。
示例代码为起点。它经过行业验证,是规范性但不是决定性的,可以帮助您开始。
相关内容
免责声明
示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 Amazon EC2 实例或使用 Amazon S3 存储)而产生 AWS 费用。