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

Does Azure charge for number of app services

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

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

谢谢。

是的,您可以通过在一个应用服务计划中托管 multiple apps 来节省成本。您不需要为每个网络应用程序单独的网络应用程序计划。

通常您支付的价格是针对应用程序服务计划而不是 Web 应用程序(这里的例外是共享计划),因此您的费用不会随着您向同一计划添加更多应用程序而增加。

我要补充一点,如果您有一个内存密集型应用程序,我肯定会将其隔离到自己的应用程序服务计划中。由于使用限制在计划级别,您不希望由于失控应用程序或应用程序遇到更高流量而导致任务关键型应用程序出现错误。另一个好的技巧是使用您根据需要定义的规则设置自动缩放,如果遇到比计划分配的流量更高的流量,这将防止停机。

虽然是的,但通过将应用分组在同一个计划中绝对可以省钱。

Does Azure charge only for the utilization of App service plan resources or for the number of app services we create under that App service plan?

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

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

理论上,您可以在每个应用程序服务计划中添加任意数量的 App 服务(应用程序,例如 Web 应用程序、服务、功能应用程序等),但实际上您将受到所选 VM 大小和计划的总体资源的限制(例如 10GB Disk space on Basic,而 B1 只有 1.75GB RAM)。

来自Microsoft docs,推荐是:

Isolate your app into a new App Service plan when:

  • The app is resource-intensive.
  • You want to scale the app independently from the other apps in the existing plan.
  • The app needs resource in a different geographical region.

我还要补充意见:

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

更多详情

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

  • 一个 App Service Plan(服务计划)可以有 1 个或多个托管 VM 实例 例如1 个服务计划扩展到 3 个实例 = 3 个 VM 需要付费。

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

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

  • 在标准层及更高层,您还可以在您的应用程序上配置 Deployment Slots,它提供冒烟测试的能力并在部署期间提供持续的正常运行时间,尤其是在您的生产环境中.

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

此成本会迅速成倍增加,尤其是当您处于 运行 多个隔离环境(Dev、UAT、Prod 等)并且出于冗余或扩展原因需要在每个环境中扩展到多个实例时.

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

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

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