Azure 是否对应用服务的数量收费

Isu*_*uru 9 azure azure-app-service-plans azure-web-app-service

Azure 是否仅对应用服务计划资源的使用或我们在该应用服务计划下创建的应用服务数量收费?在应用服务计划下创建的应用服务数量是否会影响成本?

我正在开发一个微服务项目,我不确定是将每个微服务部署在一个专用的应用服务中,还是将所有的微服务都部署为虚拟目录。成本是我们项目的一个关注点。

谢谢。

Stu*_*tLC 11

Azure 是否仅对应用服务计划资源的使用或我们在该应用服务计划下创建的应用服务数量收费?

忽略免费和共享层,您只需为应用服务计划付费(每选定机器大小的成本 x 实例数)。无论您在服务计划中有 0 个还是 50 个应用程序,您都需要支付相同的费用(尽管这些应用程序消耗的任何其他 I/O、存储等都是额外的)。

(而免费层最多允许 10 个应用程序,而共享层允许 100 个应用程序)

理论上,您可以在每个应用服务计划中添加任意数量的应用服务(应用,例如 Web 应用、服务、功能应用等),但实际上您将受到 VM 大小和计划的整体资源的限制您已选择(例如Basic 上的 10GB 磁盘空间,而 B1 只有 1.75GB RAM)。

Microsoft docs,建议是:

在以下情况下将您的应用隔离到新的应用服务计划中:

  • 该应用程序是资源密集型的。
  • 您希望独立于现有计划中的其他应用程序扩展应用程序。
  • 应用程序需要不同地理区域的资源。

我还要补充一点意见:

  • 如果适用,请在应用服务计划级别保持环境(Dev、UAT、Prod)隔离,或者考虑在资源组或订阅级别隔离。
  • 除非您的应用程序最大限度地利用 CPU 使用率,同时在每个服务计划中安装尽可能多的应用程序是合乎逻辑的,但请随时监控 VM 实例上的性能和资源使用情况。
  • 在我的情况下,我通常发现 RAM 是瓶颈,因此我通常会尝试扩展到具有更多 RAM 的 VM 大小以托管更多应用程序,然后再分离应用程序并添加更多服务计划。
  • 如果您使用 .Net Core 或其他不需要 Windows 的堆栈,我建议您查看 Linux 服务计划 - 它们比 Windows 实例便宜得多。一个警告 - 目前,有一个奇怪的限制,它不允许在同一资源组中混合 Windows 和 Linux 服务计划。
  • 每个应用程序在服务计划实例上在逻辑上相当好地隔离,因此您可以添加、删除和部署应用程序而不会干扰其他应用程序。
  • 尽管 Docker 容器可以部署为应用服务,但您可能会发现AKS更合适。

更多细节

围绕 Azure 托管应用服务计划的术语有些令人困惑,但要澄清:

  • 一个应用服务计划(服务计划)可以有 1 个或多个托管 VM 实例,例如 1 个服务计划扩展到 3 个实例 = 3 个要付费的 VM。

  • 忽略免费/共享层(在您为每个应用程序支付的共享层上),并忽略隔离层,您将为每个实例支付固定的每月费用

  • 您可以向每个应用服务计划添加多个应用 - 例如 Web 应用、功能应用、杂项。控制台应用程序和 Docker 映像。这些将部署到计划中的所有实例。

  • 在标准层及以上,您还可以在您的应用程序上配置部署槽,这提供了在部署期间进行冒烟测试和提供持续正常运行时间的能力,尤其是在您的生产环境中。

应用服务计划 (microsoft.web/serverfarms) 约占我们每月 Azure 总成本的 40%

这一成本可能会迅速成倍增加,尤其是当您运行多个隔离环境(Dev、UAT、Prod 等)并且出于冗余或扩展原因需要将每个环境扩展到一个以上实例时。

在撰写本文时,美国东部的指示性 VM 实例成本约为

  • Dev B1 1.75GB RAM 是 ~$15pm Linux / ~$50pm Windows
  • Prod P1V2 3.5GB RAM 是 ~$80 Linux / ~$150pm Windows

因此,通过将多个应用程序部署到单个 VM 来尝试最小化成本是很自然的,尤其是在细粒度的微服务企业或系统中。