云计算彻底改变了公司扩展和创新的方式,但成本控制是一个障碍。根据 Precedence Research 的数据,云计算市场规模将在 2030 年增至 1.6 万亿美元,随着许多组织转向云计算,成本优化成为当务之急。
在本指南中,我们将使用真实案例研究,重点介绍针对云成本优化的高效可行技巧。我们将在本指南中引用 Amazon Web Services (AWS) 云提供商,但请按照下表将相同的技巧应用于其他主要云提供商。对于开发人员、架构师或云从业者来说,这些步骤很容易遵循,并有助于降低成本。
EC2 实例配置过多是云成本低效的最常见原因之一。许多组织倾向于高估其资源利用率,从而陷入未使用的计算和高昂账单的困境。
• 使用AWS Compute Optimizer分析实例中的 CPU、内存和磁盘使用情况;它提供调整为最佳实例类型的建议。
• 对于需求周期性激增的工作负载,请切换到T3 等可突发实例。
• 通过将Compute Optimizer建议集成到您的 CI/CD 管道中来自动调整大小。
aws ec2 modify-instance-attribute --instance-id instance-id --instance-type "{"Value": "t3.medium"}"
医疗技术公司Innovaccer根据 Compute Optimizer 洞察调整了其 EC2 实例的大小,并将云支出减少了 33%。他们还能够为突然出现峰值的工作负载部署 T3 实例,并相应地降低其闲置计算成本。阅读更多
您将能够利用 AWS 中提供的闲置计算能力,并使用 Spot 实例节省高达 90% 的按需实例价格。它非常适合灵活的无状态、容错工作负载,例如批处理、持续集成、持续部署和大数据。
• 识别可容忍中断的工作负载,例如 ETL 流程、视频渲染和测试平台。
• 利用采用混合实例策略的 EC2 Auto Scaling无缝平衡竞价型实例和按需实例,实现可靠性。
• 使用AWS Spot Instance Advisor监控现货价格并设置最高价格阈值。
{ "LaunchTemplate": { "LaunchTemplateId": "lt-0abcd1234efgh5678", “version”: “1” }, "InstanceCount": 5, "Type": "request", "InstanceInterruptionBehavior": "terminate" }
澳大利亚国民银行 (NAB)通过利用 Spot 实例处理分析工作负载并转向 AWS Graviton 处理器上经济实惠的计算,在 2022 年将其云费用削减了 20%。阅读更多。
即使无人访问,开发环境和临时环境等资源也会全天候运行。如果能够在非工作时间自动关闭这些资源,那么将节省大量成本。
• 使用AWS Instance Scheduler构建计划自动化,以在预配置的时间窗口内启动和停止资源。
• 创建Lambda解决方案 - 根据工作量或假期日历动态更新计划。
{ "InstanceId": "i-0abcd1234efgh5678", "Schedule": "office-hours" }
物流公司Archway通过使用 AWS Instance Scheduler 自动关闭资源,在非生产环境中节省了 40%,在生产环境中节省了 15%。 阅读更多
AWS S3 非常灵活,但将所有数据存储在默认存储类别下会大大增加费用。根据访问频率正确优化存储类别是节省成本的关键。
• 针对访问模式不可预测的对象启用S3 智能分层。
• 配置S3 生命周期策略,以便在 30-60 天后自动将数据传输到 Glacier 进行长期存储。
• 使用S3 Storage Lens分析存储桶使用情况,以快速找到降低成本的机会。
{ "Rules": [ { "ID": "MoveToGlacier", "Prefix": "", "Status": "Enabled", "Transitions": [ { "Days": 30, "StorageClass": "GLACIER" } ] } ] }
Airbnb通过将不常访问的数据传输到 S3 Glacier 来优化 AWS S3 的使用,并将存储成本降低了 27%。阅读更多
对于可预测的工作负载,预留实例 (RI) 和 Savings Plans 可比按需定价节省高达 72% 的费用。
• 分析稳定状态工作负载并承诺1年或3年的预留实例。
• 当需要实例系列和区域灵活性时,定位计算节省计划。
• 通过AWS Cost Explorer跟踪使用情况,以实现您的全部承诺投资回报。
电信公司Hiya通过自动化储蓄计划,在 2022 年将其有效储蓄率提高了 22%,从而每年将增量成本降低了 110,000 美元。阅读更多
对于任何工作负载来说,数据传输都是一项急剧增长的成本,特别是当您的工作负载需要跨区域流量或内容传送时。
• 利用AWS CloudFront为更靠近客户的客户提供经常访问的数据,以降低传出成本。
• 在同一区域内共置资源,以最大限度地减少区域间转移费用。
• 通过AWS Cost Explorer和AWS Billing Dashboard实现使用情况监控。
Canva优化了其云基础设施,通过使用 CloudFront 和高效的网络策略,将计算和数据传输成本降低了 46%。阅读更多
使用 AWS Lambda 等无服务器平台,您只需按使用量付费,即按您使用的计算时间付费,这有助于消除闲置时相关的成本。
• 将单体应用程序重构为事件驱动的AWS Lambda 函数。
• 使用AWS Lambda Power Tuning执行内存大小和执行时间优化。
import boto3 lambda_client = boto3.client('lambda') response = lambda_client.update_function_configuration( FunctionName='MyFunction', MemorySize=128 )
可口可乐于 2022 年将自动售货机遥测服务迁移到 AWS Lambda,减少了 65% 的运营开销。阅读更多。
如果有人无法了解 AWS 资源的支出,就很容易超支。AWS 预算和成本异常检测通过警报提供可操作的见解。
• 为特定服务或团队设置预算,并通过电子邮件或 SNS配置通知。
• 使用AWS 成本异常检测自动标记异常的支出模式。
{ "Budget": { "BudgetLimit": { "Amount": 1000, "Unit": "USD" }, "Notification": { "ComparisonOperator": "GREATER_THAN", "Threshold": 80, "Subscribers": [ { "SubscriptionType": "EMAIL", "Address": "[email protected]" } ] } } }
游戏公司Zynga通过使用 AWS Budgets 监控其支出以控制其在未使用资源上的支出,每年可节省数百万美元。阅读更多
虽然本指南主要关注Amazon Web Services (AWS) ,但这些节省成本的技巧也适用于其他主要云提供商,如Microsoft Azure、 Google Cloud Platform (GCP)等。大多数云提供商都提供计算、存储、网络和监控服务。
下面是一个参考表,将 AWS 服务映射到 GCP 和 Azure 提供的类似产品,这使得将前面讨论的提示和建议应用于 GCP 和 Azure 变得更加容易。
特色/服务 | AWS | Azure | 谷歌云(GCP) |
---|---|---|---|
存储优化 | S3 生命周期策略、智能分层 | Azure Blob 存储生命周期管理 | 云存储生命周期策略 |
档案存储 | S3 Glacier | Azure Blob 存档层 | 云存储档案 |
计算优化 | EC2 实例、Spot 实例 | Azure 虚拟机,发现虚拟机 | 计算引擎,可抢占虚拟机 |
合适尺寸的工具 | AWS 计算优化器 | Azure 顾问 | GCP 推荐器 |
无服务器计算 | AWS Lambda | Azure 函数 | 云功能 |
自动扩展 | Auto Scaling 组 | 虚拟机规模集 | 自动缩放器 |
监控与警报 | CloudWatch、成本管理器 | Azure 监视器、Azure 成本管理 | 云监控、账单提醒 |
预留定价 | 预留实例、储蓄计划 | 预留虚拟机 | 承诺使用折扣 |
数据传输优化 | CloudFront | Azure 前门 | 云 CDN |
现货定价管理 | Spot 实例顾问 | Azure 现货顾问 | 可抢占式虚拟机推荐器 |
预算管理 | AWS 预算、异常检测 | Azure 预算 | 预算和成本警报 |
这一切都是为了建立一个高效且负责任的环境,而不仅仅是节省一点钱。看看这些高影响力策略的实施如何让您在不降低性能的情况下削减 AWS 成本。
从基础开始:正确调整您的 EC2 实例大小或自动化资源调度,并使用 Spot 实例、无服务器计算和 Savings Plans 将您的工作扩展到高级技术。
如果您有特殊的工作量或挑战,让我们更深入地了解一些定制的解决方案,以控制您的云账单。