作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
鲁道夫Eremyan的头像

鲁道夫Eremyan

Rudolf是一名数据科学家,曾在AWS上构建大数据处理基础设施,并为财富500强公司实施数据工程解决方案, 包括香港迪士尼乐园和菲利普莫里斯. 他被邀请参加NASA的2021年国际空间应用挑战赛,担任演讲者和评委.

专业知识

以前在

Staude资本
分享

我最近推出了一个加密货币分析平台,预计每天会有少量用户. 然而, 一些受欢迎的youtube用户发现该网站很有帮助,并发表了一篇评论, 流量增长如此之快,以至于使服务器不堪重负, 平台(剥头皮的人.AI)变得难以接近. 我的原始AWS EC2 环境需要额外支持. 在考虑了多种解决方案后,我决定使用 AWS 弹性Beanstalk扩展我的应用程序. 一切看起来都很顺利, 但账单仪表板上的费用让我大吃一惊.

这不是一个罕见的问题. A 从2021年开始调查 发现82%的IT和云计算决策者遇到了不必要的云成本, 86%的人认为他们无法全面了解所有的云计算支出. 尽管亚马逊在其文档中提供了额外费用的详细概述, 对于一个不断增长的项目来说,定价模式是复杂的. 让事情更容易理解, 我将分解一些相关的优化来降低您的云成本.

为什么选择AWS

黄牛的目标.AI是收集关于加密货币对的信息(在交易所交易时交换的资产), 运行统计分析, 并为加密交易者提供有关市场状况的见解. 平台的技术结构由三部分组成:

  • 数据摄取脚本
  • web服务器
  • 一个数据库

摄取脚本从不同的来源收集数据并将其加载到数据库中. 我有使用AWS服务的经验,因此我决定通过以下方式部署这些脚本 设置EC2实例. EC2提供了许多实例类型,并允许您选择实例的处理器, 存储, 网络, 操作系统.

我选择Elastic Beanstalk作为剩余的功能,因为它保证了流畅的应用程序管理. 负载平衡器在我的服务器实例之间正确地分配了负担, 而自动伸缩特性处理了为增加的负载添加新实例的问题. 部署更新变得非常容易,只需要几分钟.

剥头皮的人.人工智能工作稳定,我的用户不再面临停机. 当然, 由于我增加了额外的服务,我预计支出会增加, 但人数比我预测的要多得多.

如何降低云计算成本

回顾过去,在我的项目使用AWS服务的过程中,存在许多复杂的领域. 我们将研究我在使用常见的AWS EC2特性时发现的预算优化:可爆发的性能实例, 出站数据传输, 弹性IP地址, 终止和停止状态.

突发性能实例

我的第一个挑战是支持我不断增长的项目的CPU功耗. 剥头皮的人.AI’s data ingestion scripts provide users with real-time information analysis; the scripts run every few seconds and feed the platform with the most recent updates from crypto exchanges. 此流程的每次迭代都会生成数百个异步作业, 因此,站点增加的流量需要更多的CPU功率来减少处理时间.

AWS提供的最便宜的实例有四个vcpu, a1.超大那时候我每个月要花75美元. 相反,我决定让两个人分担这个负担 t3.微 每个实例具有两个vcpu和1GB RAM. t3的.微实例为我所需的工作提供了足够的速度和内存,只有a1的五分之一.超大的成本. 尽管如此,月底我的账单还是比我预计的要多.

为了弄明白其中的原因,我搜索了亚马逊的网站 文档 并找到了答案:当实例的CPU使用率低于定义的基线时, 它收集信用, 但是当实例超出基线使用量时, 它消耗之前获得的积分. 如果没有可用的积分,实例将花费亚马逊提供的“剩余积分”.“这种赚取和消费积分的能力使Amazon EC2在24小时内平均使用一个实例的CPU使用率. 如果平均使用量高于基线, 实例按每vcpu小时的固定费率收取额外费用.

我监视数据摄取实例好几天,发现我的CPU设置, 这是为了削减成本, 相反. 大多数时候,我的平均CPU使用率高于基线.

图表在屏幕顶部有三个下拉选项. 前两个, 在左边, 2月10日, 2022 - 2月19日, 2022”和“每日”,接着是一个小, 围绕“我.第三个在屏幕的右边,上面写着“线”,还有一个表示线形图的符号. 在下拉选项下面,图表包含两个带过滤器的折线图. 在顶端, 过滤行写着“分组:使用类型”(所选的过滤器), 它有一个蓝色的背景),然后显示未选择的过滤器:“服务, 关联账户, 地区, 实例类型, 资源, 成本分类, 标签, 更多的,,其中“资源”为灰色,最后三个旁边有下拉箭头. 最上面的线形图在y轴上有“成本($)”,范围从0.0 to 2.5. 最下面的图表在y轴上显示“Usage (vCPU-Hours)”,范围从0到40. 两个线形图共享x轴上标记的日期, 从2月10日到2月19日, 还有一个标记紫色线条的钥匙:“USE2-CPUCredits:t3.“顶部的线形图大约有8个点线性相连,并随着时间的推移呈上升趋势:一个点在2月10日左右, $0.3),第二次(2月11日,$0.6),第三个左右(2月12日,0美元).第四个(2月14日,2美元).1),第五份左右(2月15日,2美元).第六部(2月16日,2美元).7号左右(2月18日,2美元).8号左右(2月19日,2美元).6). 底线图也有大约8个点线性连接,并随着时间的推移呈上升趋势:一个点在2月10日左右, 5 vCPU-Hours), 2月11日左右, 15 vCPU-Hours), 第三次是在2月12日左右, 10 vCPU-Hours), 第四次大约在2月14日, 40 vCPU-Hours), 第五次是在2月15日左右, 50 vCPU-Hours), 第六次大约在2月16日, 45 vCPU-Hours), 第七次是在2月18日左右, 45 vCPU-Hours), 第八次大约在2月19日, 55 vCPU-Hours).
上面的图表显示了在CPU使用率高于基线期间的成本激增(顶部图表)和CPU信用额度使用增加(底部图表). 美元成本与花费的剩余信贷成正比, 因为实例是按vcpu小时计费的.

I had initially analyzed CPU usage for a few crypto pairs; the load was small, 所以我认为我有很大的发展空间. (我只使用了一个微实例进行数据摄取,因为较少的加密对不需要太多的CPU功率.然而), 当我决定让我的见解更全面并支持数百个加密货币对的数据摄取时,我意识到我的原始分析的局限性——除非在正确的规模上执行,否则云服务分析毫无意义.

出站数据传输

我的网站扩展的另一个结果是,由于一个小错误,我的应用程序的数据传输增加了. 随着流量稳步增长,没有更多的停机时间, 我需要添加一些功能来尽快吸引用户的注意力. 我的最新更新是当加密货币对的市场条件与用户预定义的参数匹配时触发音频警报. 不幸的是, 我在代码中犯了一个错误, 音频文件每隔几秒就会被加载到用户的浏览器中数百次.

影响是巨大的. 我的bug从我的web服务器生成音频下载,导致额外的出站数据传输. 我的代码中的一个小错误导致账单几乎是以前的五倍. (这并不是唯一的后果:这个漏洞可能会导致用户计算机的内存泄漏, 所以很多用户不再回来了.)

A chart similar to the previous one but with the first drop-down reading "Jan 06, 2022年1月15日, 2022," the top line graph's "Costs ($)" ranging from 0 to 30, and the bottom line graph having "Usage (GB)" on the y-axis, 取值范围是0 ~ 300. 两个线形图共享x轴上标记的日期, 从1月6日到1月15日, and a key labeling their purple 行: "USE2-DataTransfer-Out-Bytes." The top line graph has approximately eight points connected linearly and trends upward over time: one point around (Jan-06, $2), 在2008年1月1日左右, $4), 第三次大约在2009年1月, $7), 第四次大约在1月10日, $6), 1月12日左右, $15), 第六次大约在1月13日, $25), 第七次大约在1月14日, $24), 第八次大约在1月15日, $29). 底线图也有大约8个点线性连接,并随着时间的推移呈上升趋势:一个点在1月6日左右, 10 GB), 在2008年1月1日左右, 50 GB), 第三次大约在2009年1月, 80 GB), 第四次大约在1月10日, 70 GB), 1月12日左右, 160 GB), 第六次大约在1月13日, 270 GB), 第七次大约在1月14日, 260 GB), 第八次大约在1月15日, 320 GB).
上面的图表显示了成本激增(顶部图表)和出站数据传输增加(底部图表). 因为出站数据传输是按GB计费的, 美元成本与出站数据使用量成正比.

数据传输成本可占 30%以上 AWS价格飙升. EC2入站传输是免费的,但出站传输收费按GB计费($0).当我构建剥头皮的人时,每GB 09美元.AI). 这是我吸取的教训, it is important to be cautious with code affecting outbound data; reducing downloads or file loading where possible (or carefully monitoring these areas) will protect you from higher fees. 由于将数据从EC2传输到互联网的费用取决于工作负载和AWS区域特定费率,因此这些费用很快就会增加. 许多AWS新客户不知道的最后一个警告是:不同位置之间的数据传输变得更加昂贵. 然而, 使用私有IP地址可以避免在同一区域的不同可用区之间产生额外的数据传输成本.

弹性IP地址

即使在使用弹性IP地址(eip)等公共地址时也是如此。, 降低EC2成本是可能的. eip是用于动态云计算的静态IPv4地址. “弹性”部分意味着您可以将EIP分配给任何EC2实例并使用它,直到您选择停止. 通过将地址重新映射到帐户中的不同实例,这些地址可以让您无缝地将不健康的实例与健康的实例交换. 您还可以使用eip为域指定DNS记录,以便它指向EC2实例.

AWS为每个地区的每个帐户仅提供5个eip, 使它们成为一种有限的资源,而且使用效率低下,成本高昂. AWS charges a low hourly rate for each additional EIP and bills extra if you remap an EIP more than 100 times in a month; staying under these limits will lower costs.

终止和停止状态

AWS为管理正在运行的EC2实例的状态提供了两个选项:终止或停止. 终止将关闭实例, 并且为它提供的虚拟机将不再可用. 任何附加 弹性块存储 (EBS)卷将被分离和删除,本地存储在实例中的所有数据将丢失. 你将不再被收取诉讼费用.

停止实例与此类似,但有一个小区别. 挂载的EBS卷不会被删除, 所以他们的数据被保存了下来, 您可以随时重新启动实例. 这两种情况, 亚马逊不再对使用实例收费, 但如果你选择停止而不是终止, 只要EBS卷存在,它们就会产生成本. AWS建议只有在希望很快重新激活实例时才停止实例.

但是有一个特性会在月末增加您的AWS账单,即使您终止了一个实例而不是停止它:EBS快照. 这些是存储在Amazon简单存储服务(S3)中的EBS卷的增量备份. 每个快照都包含用以前的数据创建新的EBS卷所需的信息. 如果您终止一个实例, 其关联的EBS卷将被自动删除, 但它的快照将继续存在. 由于S3按存储的数据量收费,我建议您 删除这些快照 如果你不会很快使用它们. 的功能来监控每卷存储活动 CloudWatch 服务:

  1. 登录到 AWS控制台,从左上角开始 服务 菜单,找到并打开CloudWatch服务.
  2. 在这一页的左边,在 指标 可折叠菜单,点击 所有指标.
  3. 该页面显示了具有可用度量的服务列表,包括EBS、EC2、S3等. 点击 EBS 然后继续 每个卷指标. (注意: EBS 选项只有在您的帐户上配置了EBS卷时才可见.)
  4. 点击 查询。 选项卡. 在 编辑器 查看、复制和粘贴命令 从“AWS/EBS”组按VolumeId选择AVG(volumeadbytes) 然后点击 运行. (注意:CloudWatch使用SQL方言和 独特的语法.)

出现一个网页,页面顶部有一个深蓝色的标题菜单, 从左到右哪个是aws的标志, “服务”下拉列表, 搜索栏, 代码图标, 钟形图标, 问号图标, 下拉文本显示“N”. Virginia”,以及一个下拉文本“total Test Account”.在下面,我们看到网页的主要部分是白色的. 页面左侧有一个滚动菜单,标题为“CloudWatch”和一个“X”.“下面, 从上到下, 菜单上写着:“最喜欢的和最近的,”“指示板,“警报”(粗体), 有三个下拉菜单:“警报,”“所有警报,和“计费”), “日志”(粗体), 有两个下拉菜单:“日志组”和“日志洞察”), “指标”(粗体), 有三个下拉菜单:“所有参数,用亮橙色突出显示, “资源管理器,和“流”), “x射线轨迹”(粗体), “事件”(粗体), 和“应用程序监控”(粗体). 菜单中所有粗体文本的左侧都有一个下拉菜单三角形. 网页的中间部分在页面的上半部分显示一个图形, 在页面的下半部分有一个编辑器. 该图有两行标题. The first line reads "CloudWatch > 指标" on the left (with "CloudWatch" text in blue) and "Switch to your original interface" in blue on the right. 第二行是“Untitled graph”,左边有一个编辑图标, 并在右侧显示选项:"1, 3h, 12h, 1d, 3d, 1w, “自定义”(蓝色的“3h”), “自定义”有一个日历图标), “Line”(带下拉图标), “动作”(带下拉图标), 还有一个带有下拉图标的刷新按钮. 图表本身的中心有文字:“你的CloudWatch图表为空. 选择一些指标显示在这里.编辑器也有两行标题. 第一行写着“浏览”,“查询”(以橙色突出显示), “画的度量标准,”“选项,和左侧的“来源”, 以及右侧的“添加数学”(带下拉图标)和“添加查询”(带下拉图标). 第二行是“指标 Insights -查询编辑器”和左侧的“信息”(蓝色), 以及右侧的“构建器”和“编辑器”(选择“编辑器”). 在编辑器的下方,左侧是一个橙色的“运行”按钮, 和文本“使用Ctrl + Enter运行查询。, 按Ctrl +空格自动补全. 网页的右侧有一个白色菜单,从上到下分别是“查询”和“帮助”.
上面描述的CloudWatch监视设置概述(显示的是空数据,没有选择指标). 如果您有现有的EBS, EC2, 或您帐户上的S3实例, 这些将显示为度量选项,并将填充您的CloudWatch图.

CloudWatch提供了多种可视化格式来分析存储活动, 比如饼状图, 行, 酒吧, 堆叠面积图, 和数字. 使用CloudWatch识别不活动的EBS卷和快照是优化云成本的一个简单步骤.

口袋里有多余的钱

尽管CloudWatch等AWS工具为云成本监控提供了不错的解决方案, 各种外部平台与AWS集成,以进行更全面的分析. 例如, 云管理 像VMWare的平台 CloudHealth 显示可用于趋势分析的最高支出领域的详细细分, 异常检测, 以及成本和性能监控. 我还建议您设置CloudWatch计费警报,以便在收费过高之前检测到任何激增.

Amazon提供了许多很棒的云服务,可以帮助您委派服务器的维护工作, 数据库, 和硬件到AWS团队. 尽管由于漏洞或用户错误,云平台的成本很容易增长, AWS监控工具为开发人员提供了保护自己免受额外费用的知识.

考虑到这些成本优化, 你已经准备好启动你的项目了——在这个过程中节省了数百美元.

带有“合作伙伴”字样的AWS徽标及其下方标有“高级服务”字样.

了解基本知识

  • 什么是AWS可爆发实例?

    AWS突发实例(也称为突发性能实例)允许短期CPU使用高于基线水平. 相比之下,传统实例提供固定的CPU资源.

  • 哪种EC2实例类型提供可爆发的性能?

    最新一代的突发实例包括T4g、T3a和T3类型. 上一代T2型也提供了稳定的性能.

  • AWS中的终止状态是什么?

    一旦AWS EC2实例关闭并且不再拥有虚拟机,就会出现终止状态. 在这种情况下,它的EBS卷将被删除,并且实例的所有本地数据将永久丢失.

  • 当EC2实例停止并重新启动时会发生什么?

    当实例停止时, 附加的EBS卷的数据仍然存在, 并且实例可以随时重新启动. 不过亚马逊对停止的实例不收费, 只要EBS卷存在,它们就可以产生收费.

  • EC2的转移成本是多少?

    对于入站EC2数据传输,没有成本. 但是,出站数据传输是根据所涉及的AWS区域收费的.

  • AWS成本优化的四个最佳实践是什么?

    AWS成本优化的最佳实践包括:购买预留的EC2实例和节省计划, 删除未连接的EBS卷, 删除过时的EBS快照, 释放未绑定的弹性IP地址.

  • 哪些AWS服务可以帮助您进行成本优化?

    Amazon CloudWatch和AWS Cost Explorer可以帮助优化AWS成本. CloudHealth by VMWare是一个提供AWS支持的外部选项.

就这一主题咨询作者或专家.
预约电话
鲁道夫Eremyan的头像
鲁道夫Eremyan

位于 第比利斯,格鲁吉亚

成员自 2018年8月2日

作者简介

Rudolf是一名数据科学家,曾在AWS上构建大数据处理基础设施,并为财富500强公司实施数据工程解决方案, 包括香港迪士尼乐园和菲利普莫里斯. 他被邀请参加NASA的2021年国际空间应用挑战赛,担任演讲者和评委.

Toptal作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.

专业知识

以前在

Staude资本

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

Toptal开发者

加入总冠军® 社区.