向公有云轉型就跟遷移移動應用和支付每月賬單一樣簡單。然而,你的開支是否超出應有的費用?下面這五項公有云應用程序優化技術將幫助你節省費用,另外還能提升性能。
1. 重構代碼,以應對云服務提供商的計費模式
亞馬遜網絡服務(AWS)不僅僅針對使用的計算、存儲和網絡帶寬向用戶收費――每當你訪問你的存儲資源以便讀取或寫入數據時,它也收費。因而,只要有可能,你可能想集合應用程序的讀取和寫入,并將它們歸入單一操作。那樣一來,一旦你花錢購置了自己的服務器,每當進行讀取或寫入操作,就不會產生額外的費用。
這項云優化技術的整體效果取決于你簽約使用的那家公有云服務提供商(CSP)的定價方法。無論你與哪家CSP簽約,重構代碼都可以視作是提升應用程序性能的機會。
2. 優化已選擇的默認云實例
使用EC2構建實例時,你可以在不同層次的計算、內存和存儲等資源之間進行選擇。此外,EC2提供了競價型實例(Spot Instance),這種實例是指隨時可供使用的額外容量,以低于普通實例的價格來提供。
有必要花點時間試一下你的應用程序,以便確定你所需要的計算、內存和存儲等資源的最佳數量。這將幫助你確保沒有在容量或配置上開支過度,它會幫助弄清楚要不要考慮使用競價型實例(或者另一家CSP提供的同等服務)。
3. 兼顧所需的服務級別和默認的云實例
每個應用程序都有各自的服務級別配置文件――也就是它的一般用途和功能。比如說,你那個面向客戶的電子商務網站其服務級別就不同于內部員工門戶網站。對照各種應用程序所需的服務級別評估公有云實例的成本,可能會幫助你優化公有云成本。
不妨回顧發生過的Netflix停運事件。考慮到視頻流服務具有的性質,鑒于Netflix具有存儲和帶寬密集型的特性,強行啟動亞馬遜建在另外地方的另一個數據中心可能行不通。然而,必要的話,可以優化不大密集、較為重要的關鍵任務型服務,以便由替代的數據中心來提供服務,因而讓Netflix可以不受此類停運事件的影響。
4. 微調自動擴展規則
有些應用程序可自動擴展(增加和減少)服務器實例的數量,它們為優化提供了大好機會。比如說,你可能有一條自動擴展規則:一旦處理器的使用率在所有當前實例上達到80%,就創建一個新的實例;還有另一條自動擴展規則:一旦處理器的平均使用率達到40%,就創建新的實例。
你如何知道80%和40%是正確的數字?為何不是85%和35%?如果采用后一個規則,你就可以創建較少的實例,并降低成本。
此外,各應用程序對計算、存儲和帶寬等資源的需求都不一樣。因此,你的規則需要基于以上三個因素的復雜組合,而不是僅僅基于處理器的使用率。你可能需要試一下對你的公有云應用程序和所需的服務級別而言看似合乎邏輯的組合。然后,你可以在一段時間內優化這些百分比。
5. 數據庫行優化
Netflix之類的應用程序具有局部性,這意味著大多數時候,客戶只能訪問屬于他們的數據。Netflix使用AWS的地區(Region)和區域(Zone)來托管運行服務器,為住在那些數據中心附近的客戶提供服務。
這之所以能成為現實,多虧了數據庫分片技術。該技術讓你可以對數據庫中的行進行分區,將不同的分區存儲在位于不同數據中心的數據庫內。這項技術還適用于信用卡處理之類的應用,因為分片技術適用于局部的使用模式,比如查詢某個持卡人的交易或與某個商家之間的交易。
你不需要存儲所有數據庫實例中的所有數據庫行。如果你能劃分數據庫行,并將它們存儲在不同實例中的數據庫分區,那么你就能充分發揮使用模式的局部性。這將減少你所需要的服務器實例的數量,因而減少公有云服務的成本。
你將應用程序轉移到公有云后,實際上它可能很順暢地運行,沒有任何變化。不過,如果你注意到CSP如何收費,并結合你的應用程序使用計算、內存、存儲和網絡帶寬等資源的模式,很容易降低公有云的費用。借助一些代碼重構優化應用程序本身也許能提升應用程序的性能,并延長使用壽命,而試用并微調你自己的默認實例以及自動擴展規則也許有助于進一步降低CSP成本。
英文原文鏈接:http://www.computerworlduk.com/how-to/cloud-computing/3373508/how-to-optimise-public-cloud-applications/