本文首發於個人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流量能夠極大下降成本。最重要的是去度量成本的花費而且監控起來,讓你們知道公有云的錢花在哪裏了,讓團隊每一個人都去在乎這件事情,造成一種文化。