容器化。 NET应用程序 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

容器化。 NET应用程序

概述

容器是一种以一致且可复制的方式打包和部署应用程序的轻量级高效方法。本节介绍如何使用 AWS Fargate无服务器容器服务来降低您的成本。 NET应用程序,同时还提供可扩展和可靠的基础架构。

成本影响

影响使用容器节省成本的有效性的一些因素包括应用程序的大小和复杂性、需要部署的应用程序数量以及应用程序的流量和需求水平。对于小型或简单的应用程序,与传统的基础设施方法相比,容器可能无法显著节省成本,因为管理容器和相关服务的开销实际上可能会增加成本。但是,对于更大或更复杂的应用程序,使用容器可以提高资源利用率和减少所需实例的数量,从而节省成本。

为了节省成本,我们建议您在使用容器时记住以下几点:

  • 应用程序规模和复杂性 — 更大、更复杂的应用程序更适合容器化,因为它们往往需要更多的资源,并且可以从提高的资源利用率中受益更多。

  • 应用程序数量 — 您的组织必须部署的应用程序越多,通过容器化节省的成本就越多。

  • 流量和需求 — 具有高流量和高需求的应用程序可以从容器提供的可扩展性和弹性中受益。这可以节省成本。

不同的架构和操作系统会影响容器成本。如果您使用的是 Windows 容器,则出于许可方面的考虑,成本可能不会降低。Linux 容器的许可成本较低或不存在。下图使用了美国东部(俄亥俄州)地区的基本配置,设置如下:每月 30 个任务运行 12 小时,分配了 4 GB vCPUs 和 8 GB 的内存。 AWS Fargate

您可以选择两个主要的计算平台来运行您的容器 AWS:EC2基于容器的主机和无服务器AWS Fargate。如果您使用亚马逊弹性容器服务 (AmazonECS) 而不是 Fargate,则必须保持计算(实例)的运行,以允许放置引擎在需要时实例化容器。如果您改用 Fargate,则仅配置所需的计算容量。

下图显示了使用 Fargate 的等效容器与使用 Amazon 的容器的区别。EC2由于 Fargate 的灵活性,应用程序的任务每天可以运行 12 个小时,而非工作时间的利用率为零。但是,对于亚马逊ECS,您必须使用 A uto Scaling EC2 实例组来控制计算容量。这可能导致容量每天 24 小时运行,最终会增加成本。

Fargate 的月度费用与EC2月度成本

成本优化建议

使用 Linux 容器而不是 Windows

如果您使用 Linux 容器而不是 Windows 容器,则可以节省大量资金。例如,如果您运行,则可以节省大约 45% 的计算成本。 NET在 EC2 Linux 上运行核心,而不是运行. NETEC2Windows 上的框架。如果您使用ARM架构(AWS Graviton)而不是x86,则可以额外节省 40%。

如果您计划为现有容器运行基于 Linux 的容器。 NET框架应用程序,您必须将这些应用程序移植到现代的跨平台版本中。 NET(比如。 NET6.0) 以便使用 Linux 容器。一个主要的考虑因素是权衡重构成本与通过降低 Linux 容器成本而节省的成本。有关将应用程序移植到现代版本的更多信息。 NET,请参阅 “移植助手” 了解相关信息。 NET在 AWS 文档中。

迁移到现代化的另一个好处。 NET(也就是说,远离. NET框架)是可以获得更多的现代化机会。例如,您可以考虑将应用程序重新架构为基于微服务的架构,该架构具有更高的可扩展性、灵活性和成本效益。

下图说明了探索现代化机会的决策过程。

重塑平台决策树

利用 Savings Plans

容器可以帮助您利用 Compute Savings Plans 来降低 Fargate 成本。灵活的 discount 模式提供的折扣与可转换预留实例相同。Fargate 定价基于从您开始下载容器映像到亚马逊ECS任务终止(四舍五入到最接近的秒数)所使用的 v CPU 和内存资源。Fargat e的Savings Plans可为Fargate的使用量节省高达50%,以换取承诺在一年或三年内使用特定数量的计算使用量(以每小时美元计)。您可以使用AWS Cost Explorer来帮助您选择 Savings Plan。

重要的是要明白,Compute Savings Plans 适用于首先为您节省最大成本的使用量。例如,如果你在中运行一个 t3.medium Linux 实例us-east-2和一个相同的 Windows t3.medium 实例,那么 Linux 实例将首先获得 Savings Plan 的好处。这是因为 Linux 实例具有节省 50% 的潜力,而同一 Windows 实例的节约潜力为 35%。如果您有其他符合储蓄计划条件的资源 AWS 账户,例如亚马逊EC2或Lambda,则无需先将您的储蓄计划应用于 Fargate。有关更多信息,请参阅本指南的储蓄计划文档中的了解储蓄计划如何适用于您的 AWS 使用量,以及本指南的 “在亚马逊上优化 Windows 上的支出 EC2” 部分。

大小合适的 Fargate 任务

必须确保正确调整 Fargate 任务的大小,以实现最大程度的成本优化。通常,开发人员在最初确定其应用程序中使用的 Fargate 任务的配置时,并不掌握所有必要的使用信息。这可能导致任务过度配置,进而导致不必要的支出。为避免这种情况,我们建议您对在 Fargate 上运行的应用程序进行负载测试,以了解特定任务配置在不同使用场景下的表现。您可以使用负载测试结果 v CPU、任务的内存分配和 auto Scaling 策略在性能和成本之间找到适当的平衡。

下图显示了 Compute Optimizer 如何针对最佳任务和容器大小生成建议。

Compute Optimizer 针对任务和容器大小的建议

一种方法是使用负载测试工具(例如上 AWS的 “分布式负载测试” 中描述的工具)来建立 v CPU 和内存利用率的基准。运行负载测试以模拟典型的应用程序负载后,您可以微调任务的 v CPU 和内存配置,直到达到基准利用率。

其他 资源