本文首发于个人bloghtml
咱们使用aws已经一年了,几乎所有的在线和离线任务都已经迁移到了aws。可是看每月帐单的时候发现公有云的花费真的多(具体多少不便透露,反正不算小客户了)。我最近研究了下咱们的帐单,发现有很多的优化空间,起码能够把花销下降一半甚至1/3。这篇文章是我在团队内部分享如何优化公有云花费的一次整理。数据库
若是large能够知足,就不要选择xlarge。经过经验+实际测试来获得肯定合理的机器,不能拍脑壳。网络
尽可能选新一代机器,性价比更高,好比选择m5,不要选择m4。性能
根据业务场景选择机器,通常数据库类型选择r系列,计算密集类型选择c系列,计算密集而且对内存也有要求的话选择m系列。测试
资源用完了就释放,再用的时候再申请。好比一个典型的场景是,开发申请了一台机器用于测试,可是这台机器每一个周只会用两次,在这种场景下每次用的时候开机,用完以后关机,这样比7*27小时开机节省了大量的费用。大数据
不只如此,设计系统的时候也要作到弹性。流量多任务系统就自动申请更多机器,流量下来了任务少了就主动释放掉多余的机器,这个过程须要彻底是自动化的。优化
EC2有按需实例(用多少时间,给多少钱),预留实例(一次买一年的,无论用多少都得交一年的钱),spot实例(aws从资源池里面空闲的资源,价格很是便宜,可是可能由于资源紧张致使申请机器的时候申请不到)。云计算
关于价格,我用c4x.8large为例,按需/预留/spot的一小时价格分别为 10.844 / 3.871 / 2.7267。debug
选择EC2模型的参考:设计
注意新建一个实例的时候不能指定这个机器用预留实例。由于机器买了以后是否匹配到预留实例是由aws做出的决定。而且aws有灵活的转换因子,我举个例子,我提早买了一个m4.8xlarge的预留,而且此时没有实例命中了这个预留,这个时候我买了两台m4.4xlarge的按需实例,那么就会命中m4.8xlarge的预留,一个m4.8xlarge等于两个m4.4xlarge。
目前宁夏区有5种S3的存储,针对长期和短时间的数据提供了不一样的方案。
适合不断频繁访问的热数据。
适用于不常访问但在须要时要求快速访问的数据。标准 – IA 很是适合长期文件存储、来自同步和共享的旧数据、备份数据以及灾难恢复文件。
要求一个文件最小128K,小于128K按照128K收费。
最少存储30天,不足30天按照30天收费。
和标准-IA区别是,S3数据只放在单个可用区,若是发生可用区故障会致使数据没法访问。因此适合存储一些备份的副本或者其余易于建立的数据(就算单个可用区故障致使数据丢失,仍是能够建立回来)。
128K和30天限制和标准-IA相同。
至少存储3个月,不足3个月删除须要支付剩下的存储时间费用。
3~5小时完成检索,加速访问可在5分钟以内完成(须要支付必定费用)。
12小时检索出来数据,而且不能申请加速检索。
文件最小40K,最少存半年。
适合每一年访问几回的数据。
另外,S3提供了一个analytics-storage-class和智能分层技术来帮助咱们选择合理的S3存储。
选择合适容量,合理估算。
对于数据库应用,选择SSD提供出色的随机读写性能,对于大数据应用选择HDD,提供出色吞吐量。并非SSD必定比HDD性能好,须要根据业务选择。
能够用HDD的,就不要用SSD,由于SSD价格是HDD的两倍。
好比搭建测试k8s环境的时候,磁盘统一用HDD,正式环境的磁盘能够用SSD。
aws对于inbound流量和同一个zone的流量通常是不收费的,可是若是是outbound流量,费用就大了,以S3为例,传出到internet的流量是0.933/G,10个T的数据就是1W,流量比存储贵的多!
尤为是公有云和私有云公用的状况下,这块必定梳理清楚。
你度量什么,就会获得什么。
把成本做为metric之一监控起来很是有必要,这样天天均可以看到公有云花费增加的趋势,让每一个人有一个直观的感觉,让每一个工程师都开始专一成本,造成一种文化。
具体方案分红两步。首先须要给每一个资源打tag,具体参考AWS Tagging Strategies。而后拿到详细的消费表格而后解析把数据存储到Prometheus,而后经过Grafana展现出来。
经过选择合适的EC2,S3,和EBS,同时优化outbound流量能够极大下降成本。最重要的是去度量成本的花费而且监控起来,让你们知道公有云的钱花在哪里了,让团队每一个人都去在乎这件事情,造成一种文化。