aws成本優化

本文首發於個人bloghtml

咱們使用aws已經一年了,幾乎所有的在線和離線任務都已經遷移到了aws。可是看每月帳單的時候發現公有云的花費真的多(具體多少不便透露,反正不算小客戶了)。我最近研究了下咱們的帳單,發現有很多的優化空間,起碼能夠把花銷下降一半甚至1/3。這篇文章是我在團隊內部分享如何優化公有云花費的一次整理。數據庫

成本優化的基本原則

選擇EC2的合適size

若是large能夠知足,就不要選擇xlarge。經過經驗+實際測試來獲得肯定合理的機器,不能拍腦殼。網絡

儘可能選新一代機器,性價比更高,好比選擇m5,不要選擇m4。性能

根據業務場景選擇機器,通常數據庫類型選擇r系列,計算密集類型選擇c系列,計算密集而且對內存也有要求的話選擇m系列。測試

彈性原則

資源用完了就釋放,再用的時候再申請。好比一個典型的場景是,開發申請了一臺機器用於測試,可是這臺機器每一個周只會用兩次,在這種場景下每次用的時候開機,用完以後關機,這樣比7*27小時開機節省了大量的費用。大數據

不只如此,設計系統的時候也要作到彈性。流量多任務系統就自動申請更多機器,流量下來了任務少了就主動釋放掉多餘的機器,這個過程須要徹底是自動化的。優化

選擇合適的EC2模型

EC2有按需實例(用多少時間,給多少錢),預留實例(一次買一年的,無論用多少都得交一年的錢),spot實例(aws從資源池裏面空閒的資源,價格很是便宜,可是可能由於資源緊張致使申請機器的時候申請不到)。雲計算

關於價格,我用c4x.8large爲例,按需/預留/spot的一小時價格分別爲 10.844 / 3.871 / 2.7267。debug

選擇EC2模型的參考:設計

  • 對於7*24小時運行的業務(好比在線服務,數據庫應用),購買預留實例最划算。
  • 對於離線業務,採用spot實例最划算。而且跑完任務就自動回收機器最好。
  • 對於短期的測試等等,能夠直接使用預留。

注意新建一個實例的時候不能指定這個機器用預留實例。由於機器買了以後是否匹配到預留實例是由aws做出的決定。而且aws有靈活的轉換因子,我舉個例子,我提早買了一個m4.8xlarge的預留,而且此時沒有實例命中了這個預留,這個時候我買了兩臺m4.4xlarge的按需實例,那麼就會命中m4.8xlarge的預留,一個m4.8xlarge等於兩個m4.4xlarge。

選擇合適的S3存儲

目前寧夏區有5種S3的存儲,針對長期和短時間的數據提供了不一樣的方案。

標準存儲 0.1755元/GB 月

適合不斷頻繁訪問的熱數據。

標準-IA 0.1030029

適用於不常訪問但在須要時要求快速訪問的數據。標準 – IA 很是適合長期文件存儲、來自同步和共享的舊數據、備份數據以及災難恢復文件。

要求一個文件最小128K,小於128K按照128K收費。

最少存儲30天,不足30天按照30天收費。

S3 One Zone-IA 0.08240232

和標準-IA區別是,S3數據只放在單個可用區,若是發生可用區故障會致使數據沒法訪問。因此適合存儲一些備份的副本或者其餘易於建立的數據(就算單個可用區故障致使數據丟失,仍是能夠建立回來)。

128K和30天限制和標準-IA相同。

Glacier 0.03006

至少存儲3個月,不足3個月刪除須要支付剩下的存儲時間費用。

3~5小時完成檢索,加速訪問可在5分鐘以內完成(須要支付必定費用)。

glacier deep archive 0.01082

12小時檢索出來數據,而且不能申請加速檢索。

文件最小40K,最少存半年。

適合每一年訪問幾回的數據。

以基因分析生產線爲例,看下應該如何選擇存儲

  • 配置文件。由於天天訪問幾十次,因此放標準存儲。
  • 生產線日誌文件。根據業務方要求,這些文件須要保存三個月用於debug。這些數據也不是特別重要的數據,因此能夠用one-zone,而後設置生命週期策略,3個月以後自動刪除。
  • 業務方會不按期的來檢索這些數據,因此用標準-IA/不頻繁訪問。
  • 每一個開發本身的存儲空間,使用標準,且限制最大1T。
  • 測試和內測環境,使用標準,限制最大1T。
  • 批量重跑的結果,由於數據量很大,上百T,而且訪問不頻繁,因此能夠一個月以後放glacier。須要讀的時候提早幾個小時說便可。

另外,S3提供了一個analytics-storage-class和智能分層技術來幫助咱們選擇合理的S3存儲。

選擇合適的EBS

選擇合適容量,合理估算。

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

參考

相關文章
相關標籤/搜索