作者:邢建辉 GrowingIO 运维开发工程师,主要负责平台化,自动化方向的设计与开发。
背景
营收和成本是任何一家企业都需要关注的问题。
当一家互联网公司发展到一定规模时,服务器成本会变成一项重大的开支,优化服务器成本也将变成一件提上日程的任务。GrowingIO 主要服务运行在 AWS 上,下面主要针对 GrowingIO 在 AWS 上的一些优化。
成本分析
1. 概览分析
在开始成本优化之前,需要先做规划,通过规划来确定实施方案,而不是拍脑袋直接去做,这样可能最后就是花了很大力气,成本降低的效果却不是很明显。
做规划需要通过数据做依据,通过数据分析来确定优化的优先级,例如哪些优化方案会使总体成本下降最快,哪些成本花费的并不合理。下图为 AWS 中的账单中一些概览。
通过 AWS 的账单概览中我们可以发现费用排名依次为 EC2,DataTransfer 等,下面针对 EC2,DataTransfer 等我们需要做账单的详细分析。
2. 细节分析
数据收集
AWS 的账单中只能做到对总体的一个概览,例如只显示到 c5.xlarge 机型的 Reserved Instances 和 On Demand 的花费,而流量费用也只显示到 out of CNN1 的总数,这些信息只能让我们总体的看到费用的大致花费构成,对于庞大的资源,这些信息并不能帮助我们精准定位到优化具体资源上。
这里我们通过 Cost Management Preferences 中将详细账单文件保存到 S3 中,账单中的详细信息 https://docs.aws.amazon.com/cur/latest/userguide/detailed-billing-migrate.html
数据标签
这里需要说明的是在做详细账单时最好提前将 AWS 的所有资源打上统一 tag,我们根据自己的情况打了主要如下四个标签:
打完标签后需要将 AWS 的账单中的 tag 激活,否则生成的详细账单中不会包含 tag 信息,具体步骤为在 AWS 账单页面的 cost allocation tags 中将对应 tag active,这样在生成的账单文件中会包含 active 的 tag,如 user:App 等类似字段。
数据可视化
GrowingIO 通过 Azkaban 任务自动化对账单数据进行可视化,流程大致如下。