作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
Rudolf是一名数据科学家,曾在AWS上构建大数据处理基础设施,并为财富500强公司实施数据工程解决方案, 包括香港迪士尼乐园和菲利普莫里斯. 他被邀请参加NASA的2021年国际空间应用挑战赛,担任演讲者和评委.
我最近推出了一个加密货币分析平台,预计每天会有少量用户. 然而, 一些受欢迎的youtube用户发现该网站很有帮助,并发表了一篇评论, 流量增长如此之快,以至于使服务器不堪重负, 平台(剥头皮的人.AI)变得难以接近. 我的原始AWS EC2 环境需要额外支持. 在考虑了多种解决方案后,我决定使用 AWS 弹性Beanstalk扩展我的应用程序. 一切看起来都很顺利, 但账单仪表板上的费用让我大吃一惊.
这不是一个罕见的问题. A 从2021年开始调查 发现82%的IT和云计算决策者遇到了不必要的云成本, 86%的人认为他们无法全面了解所有的云计算支出. 尽管亚马逊在其文档中提供了额外费用的详细概述, 对于一个不断增长的项目来说,定价模式是复杂的. 让事情更容易理解, 我将分解一些相关的优化来降低您的云成本.
黄牛的目标.AI是收集关于加密货币对的信息(在交易所交易时交换的资产), 运行统计分析, 并为加密交易者提供有关市场状况的见解. 平台的技术结构由三部分组成:
摄取脚本从不同的来源收集数据并将其加载到数据库中. 我有使用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使用率高于基线.
I had initially analyzed CPU usage for a few crypto pairs; the load was small, 所以我认为我有很大的发展空间. (我只使用了一个微实例进行数据摄取,因为较少的加密对不需要太多的CPU功率.然而), 当我决定让我的见解更全面并支持数百个加密货币对的数据摄取时,我意识到我的原始分析的局限性——除非在正确的规模上执行,否则云服务分析毫无意义.
我的网站扩展的另一个结果是,由于一个小错误,我的应用程序的数据传输增加了. 随着流量稳步增长,没有更多的停机时间, 我需要添加一些功能来尽快吸引用户的注意力. 我的最新更新是当加密货币对的市场条件与用户预定义的参数匹配时触发音频警报. 不幸的是, 我在代码中犯了一个错误, 音频文件每隔几秒就会被加载到用户的浏览器中数百次.
影响是巨大的. 我的bug从我的web服务器生成音频下载,导致额外的出站数据传输. 我的代码中的一个小错误导致账单几乎是以前的五倍. (这并不是唯一的后果:这个漏洞可能会导致用户计算机的内存泄漏, 所以很多用户不再回来了.)
数据传输成本可占 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地址(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 服务:
从“AWS/EBS”组按VolumeId选择AVG(volumeadbytes)
然后点击 运行. (注意:CloudWatch使用SQL方言和 独特的语法.)CloudWatch提供了多种可视化格式来分析存储活动, 比如饼状图, 行, 酒吧, 堆叠面积图, 和数字. 使用CloudWatch识别不活动的EBS卷和快照是优化云成本的一个简单步骤.
尽管CloudWatch等AWS工具为云成本监控提供了不错的解决方案, 各种外部平台与AWS集成,以进行更全面的分析. 例如,像VMWare这样的云管理平台 CloudHealth 显示可用于趋势分析的最高支出领域的详细细分, 异常检测, 以及成本和性能监控. 我还建议您设置CloudWatch计费警报,以便在收费过高之前检测到任何激增.
Amazon提供了许多很棒的云服务,可以帮助您委派服务器的维护工作, 数据库, 和硬件到AWS团队. 尽管由于漏洞或用户错误,云平台的成本很容易增长, AWS监控工具为开发人员提供了保护自己免受额外费用的知识.
考虑到这些成本优化, 你已经准备好启动你的项目了——在这个过程中节省了数百美元.
AWS突发实例(也称为突发性能实例)允许短期CPU使用高于基线水平. 相比之下,传统实例提供固定的CPU资源.
最新一代的突发实例包括T4g、T3a和T3类型. 上一代T2型也提供了稳定的性能.
一旦AWS EC2实例关闭并且不再拥有虚拟机,就会出现终止状态. 在这种情况下,它的EBS卷将被删除,并且实例的所有本地数据将永久丢失.
当实例停止时, 附加的EBS卷的数据仍然存在, 并且实例可以随时重新启动. 不过亚马逊对停止的实例不收费, 只要EBS卷存在,它们就可以产生收费.
对于入站EC2数据传输,没有成本. 但是,出站数据传输是根据所涉及的AWS区域收费的.
AWS成本优化的最佳实践包括:购买预留的EC2实例和节省计划, 删除未连接的EBS卷, 删除过时的EBS快照, 释放未绑定的弹性IP地址.
Amazon CloudWatch和AWS Cost Explorer可以帮助优化AWS成本. CloudHealth by VMWare是一个提供AWS支持的外部选项.
Rudolf是一名数据科学家,曾在AWS上构建大数据处理基础设施,并为财富500强公司实施数据工程解决方案, 包括香港迪士尼乐园和菲利普莫里斯. 他被邀请参加NASA的2021年国际空间应用挑战赛,担任演讲者和评委.
世界级的文章,每周发一次.
世界级的文章,每周发一次.