Microsoft Azure 提供了一组功能强大的服务来帮助开发人员构建和部署其应用。Azure 使它非常易于使用,你可以快速让 Azure 托管成本失控。但是,有一些方法可以更好地管理 Azure 定价并优化总体成本。

让我们关注降低成本的 5 种不同方法:

  1. 降低实际 Azure 价格
  2. 弄清楚您当前的成本是多少
  3. 优化应用部署方式
  4. 提高应用的性能
  5. 其他提示


(一)如何降低Microsoft Azure定价和有效的Azure成本管理

您可以做的最简单的事情之一就是简单地获得一些账单折扣或免费获得一些东西!

1. 预付款以获得折扣,即使是现收现付的帐户。

Microsoft 根据 6 或 12 个月的预付款提供 2.5-5% 的折扣。检查您是否可以利用这一点。但是,EA 协议可能是更好的选择。

2. 获取 EA 协议,享受最大 Azure 折扣。

EA 协议要求选择年度货币承诺,并锁定贴现率。然后,您需要按季度向超出年度提交的任何超额费用计费。

对于某些 Azure 产品,EA 协议最多可节省 20-30% 左右的费用。请注意,贴现率时间表是一团糟。举个例子,您在 SQL Azure 上的折扣率可能是 5%,但云服务可能是 10-20%,并且他们销售的每个 SKU 都不同。有些可能根本不提供太多折扣。有数以千计的 SKU。因此,请务必了解你真正需要的 Azure 服务,并在 EA 协议中最大限度地提高这些 SKU 的折扣。

3. 您可以注册 Bizspark 吗?

在 Bizspark 中,能够获得很多很棒的免费福利。Microsoft为初创公司宣传高达12万美元的免费福利。还不错!

4. 是否可以切换 Azure 区域以获得更好的 Azure 定价?

Azure 定价因地区而异,即使在美国也是如此。仔细检查各个地区的定价,看看是否可以节省一点。

示例:美国西部的 A2 VM 为 133.92 美元,但美国西部 2 为 126.48 美元。澳大利亚东部是 168.14 美元。

5. 通过与 Azure 合作伙伴合作开展项目,从 Microsoft 获得免费资金。

如果你有一个大型项目要迁移到 Azure,你可以获得一些折扣,以帮助激励和支付 Microsoft 合作伙伴的费用,以帮助实现它。举个例子,我们能够这样做来帮助使用 Chef 完成大量工作。

(二)弄清楚当前的 Azure 成本是多少并组织报告

很有可能,当涉及到你花了多少钱和你花了什么时,你不知道你不知道什么。使用 Azure 可以很容易地启动新资源,然后简单地忘记它们。

6. 知道你花了多少钱买什么,如果没有工具,这很难。

Microsoft 有几个工具可用于分析您的帐单:

  • Azure 计费门户
  • EA 门户 – https://ea.azure.com/

对于任何高级报告来说,这两者都有很多不足之处。您可以将 EA 数据连接到 PowerBI,这为处理数据提供了更多机会,但您确实需要按项目、部门等对数据进行细分,以便更深入地了解数据。

有很多可用的第三方工具,尽管令人震惊的是,其中许多每月超过 1,000 美元!建议使用名为 Azure 成本 (https://azure-costs.com/) 的服务,该服务价格低廉且效果很好。它有一个免费套餐和每月 29 至 199 美元的付费选项。

你可以用一堆不同的方式对报告进行分组,以了解你是否在 VM、SQL Azure、应用服务等上花费了大量资金。

7. 按项目、环境或客户端分配 Azure 支出,以便更好地报告。

使用 Azure 托管生产、预生产、QA、开发和测试应用时,从高层次上查看我们的账单时,没有很好的方法可以知道我们在哪个环境中花费了多少,这对我们很重要。

我们在生产上的花费会影响我们作为企业的利润率,我们也希望将开发/测试环境中的成本降至最低。

我们使用 Azure 成本来组织我们花钱的内容。我们只需标记每个 Azure 资源,然后就可以按标记获取报告,以便轻松查看每个环境的费用。

然后,我们可以按每个标签获取报告,以了解我们是如何花钱的。

(三)优化应用部署方式以节省 Azure 上的资金

如果要将应用程序迁移到 Azure,则有几种方法可以节省资金,而这些方法甚至可能没有想到。还想给你一些关于优化应用服务、云服务等的技巧。

8. 选择正确的虚拟机类型和大小。

如果使用 Azure 托管虚拟机,请确保选择正确的实例类型。从字面上看,有几十种不同的类型和尺寸。确保根据是否需要更多内存、CPU、更快的磁盘等来选择正确的类型。

9. 使用 Azure 开发测试实验室确保测试 VM 自动关闭以节省资金。

没有什么比有人设置测试服务器,后来发现你已经为此付费了几个月更烦人的了。Azure 开发测试实验室非常适合创建偶尔需要的服务器或一天中的某些时间所需的服务器。

开发测试实验室可以按计划自动打开和关闭它们。这对于解决您的 QA 团队忘记在服务器离开一天或周末之前关闭服务器的问题有很大帮助。

注意:开发测试实验室不会产生任何额外使用费用。您只需为 VM 本身付费即可。

10. 避免为云服务上的暂存槽付费。

使用适用于 Web 角色和辅助角色的 Azure 云服务,可以像支付生产槽位一样为过渡槽支付全价。最好部署到暂存槽,然后将暂存交换到生产环境,以最大程度地减少停机时间。

请确保尽快删除暂存槽。没有什么比登录 Azure 并看到一堆东西无缘无故地部署在暂存槽中更让我生气的了。

在 Azure 门户中编辑视图,添加“暂存”和“生产”列,以便快速查看哪些列在暂存槽中。即使服务器停止,云服务也会花费您金钱。你必须删除它们!

11. 将 Web 应用与 Azure 应用服务计划相结合,以减少服务器计数。

Azure 的绝对最佳功能之一是应用服务。可以创建表示 2-3 个或更多服务器的应用服务计划,然后根据需要将任意数量的 Web 应用程序打包到这些服务器上。

与为几乎不做任何事情的 Web 应用程序支付整个服务器相比,这是一个巨大的优势。我们一直使用云服务 Web 角色,在某些情况下,在几乎没有流量的 Web 应用上有 3 个实例以实现高可用性。这是一种巨大的浪费。

12. 除非必要,否则停止使用云服务 Web 角色。

除非必须将 Azure 云服务用于 Web 角色,否则我会努力将应用切换到应用服务,以利用将多个应用合并到更少的服务器。

13. 使用 Azure Service Fabric 或容器服务合并应用。

出于与上面提到的应用服务和 Web 角色完全相同的原因,请查看将辅助角色移动到 Service Fabric 或容器服务。两者都遵循应用服务计划等模式,在这种模式中,你基本上预配一组服务器,然后在其上抛出一堆应用。

14. 使用自动缩放来降低下班时间的成本。

大多数应用程序在一周或一天中都有更繁忙和更慢的时间段。利用 Azure 中内置的自动缩放功能,在淡季节省一些资金。

这些部署类型都支持自动缩放:

  • 云服务
  • 应用服务
  • VM Scale Sets (Including Batch, Service Fabric, Container Service)

缩放也可能意味着完全关闭您的应用程序。应用服务具有一项名为 AlwaysOn 的功能,用于控制应用是否应因没有活动而关闭。还可以使用开发测试实验室之类的工具计划关闭开发/QA 服务器。还有第三方服务,如Park My Cloud。

15. 使用 Azure PaaS 功能

我曾与几个使用 Azure 的人交谈过,他们使用 Azure 的版本是设置一些 VM,并在这些 VM 上托管他们的应用和 SQL Server。

将 Azure 用于虚拟机和 IaaS 很好,但你错过了很多降低管理成本和降低整个 Azure 成本的机会。除非你有非常非常充分的理由在 VM 中使用 SQL,例如购买一些在 VM 和其他方案中运行的第三方负载均衡器,否则不要这样做。

我们尽可能地利用 Azure 的每个 PaaS 功能。这包括 SQL Azure、Redis、表存储、服务总线等。为 Redis 或其他一些排队服务设置 VM 的想法似乎是一个非常糟糕的主意。对我们来说,唯一的例外是elasticsearch。

Azure 搜索现已推出,是基本的 elasticsearch PaaS 产品/服务。由于我们的 elasticsearch 集群的庞大规模和规模,我们自己管理它更有意义。

16. 使用 SQL 弹性池。

如果有很多数据库,则应考虑使用 SQL 弹性池。

使用 Azure,必须为每个单独的数据库选择性能层。这非常有效,并提供了可预测的性能水平。但是,在许多情况下,这也会导致过度预配性能。

将 Azure SQL 弹性池视为服务器,你可以将一堆数据库分配给该服务器。这允许每个数据库的性能在服务器的总资源中起伏不定。

我们的每个客户都有自己的 SQL 数据库。我们实际上有数百个,我们每天都会添加新的并取消一些。SQL 弹性池对于我们大规模管理如此多的数据库至关重要。

(四)提高应用程序本身的性能

好的,如果在整体 Azure 定价和应用部署方式方面,已最大化了在 Azure 上的支出,那么是时候开始进行一些性能优化了。

我建议使用某种类型的 APM 工具,例如 Retrace、Azure Application Insights 或 New Relic。

17. 是时候拿出分析器了!

如果要优化代码的性能,则需要进行一些代码分析。有三种不同类型的分析器,您可能需要这三种类型才能真正改进您的代码。

  • 标准探查器 – 在工作站上分析代码,以查找代码中缓慢的方法
  • 事务跟踪 – 通过 ASP.NET 分析器捕获完整的 Web 请求并查看正在发生的事情
  • APM – 跟踪应用程序及其依赖项的整体性能

18. 确定最常用和最慢的 Web 请求或事务。

寻找花费大量时间或发生中等次数但花费时间过长的请求。查看 ASP.NET 事务跟踪,看看是否发生了过多的 SQL 查询、缓慢的 Web 服务等。

大多数现代应用程序更多地受到数据库或 Web 服务调用的约束。如果代码本身可能很慢,则可能需要使用标准的 .NET 探查器(如 Visual Studio 探查器)来尝试找出原因。

19. 优化SQL数据库性能。

每个繁忙的应用程序通常都可以从一些基本的 SQL 调优中受益。SQL Azure 具有一些出色的基本功能,用于性能报告和索引优化建议。

如果需要更深入,请务必查询 SQL 中的 DMV,以确定哪些查询访问最多、使用 IO 最多、花费时间最长等。此外,请注意从应用的角度来看查询需要多长时间。

您还可以利用 APM 工具来确定哪些查询使用最多,以及软件中的哪些操作正在调用它们。

20. 跟踪所有应用程序依赖项的使用情况和性能。

除了 SQL Server 之外,应用程序还可能进行 Web 服务调用、使用队列、缓存和其他依赖项,包括其他 Azure 功能,如 DocumentDB、Azure 存储等。

确保所有这些依赖项都运行良好,并通过 Azure 正确缩放。

(五)降低 Azure 成本的其他想法

下面是一些需要考虑的其他想法,以帮助降低你在 Azure 上的支出。

21. CDN可以使用吗?

像 Cloudflare 这样的 CDN 可以非常轻松地添加所有静态文件的缓存,而无需更改代码。Cloudflare 还具有大量可用于优化性能的酷炫功能。

Azure 确实有一个非常简单的 CDN 产品,你可以尝试一下,但它没有做 Cloudflare 做的事情。

22. 是否可以使用新的 Azure 冷存储选项?

Azure 现在提供暖 Azure 存储和冷 Azure 存储。暖数据是为经常使用的数据而设计的,冷数据是为很少使用的数据而设计的。如果您有很多几乎不使用的数据、备份、存档或其他数据,请务必查看冷存储。

优化 Azure 云托管成本

优化代码是迄今为止最难完成的部分,并且可能需要大量的时间和回归测试。在 Stackify,我们的 API 每天被调用数百万次。如果你的代码被调用的次数和我们的代码一样多,那么绝对值得在低级代码优化上投资,否则......也许不是。

来源:https://stackify.com/lower-azure-pricing-optimize-costs/