無伺服器:速度降低15%,價格提高8倍 - einaregilsson
在過去的幾年中,無伺服器一直是科技界的熱門話題。我想透過嘗試一些新方法來保持我的技術水平最新,所以我決定花幾個小時來學習無伺服器,並看看以這種方式託管我們的API是否有意義。
我學習了關於使用Serverless框架託管ASP.NET Web API 的非常不錯的教程,發現我只需要向我現有的API專案中新增一個簡單的配置檔案,新增一個依賴項和一個小的啟動類。然後我部署了它,大概花了20秒鐘左右,比部署到Beanstalk好得多。我猜這是因為Lambda內建了對.NET Core的支援(儘管只有2.2),而在Beanstalk中,僅當您使用Docker並自行管理時才支援。無論如何,到目前為止,我還是很高興,沒有考慮自動縮放組,最大例項數或任何其他東西。
測試效能
在AWS上無伺服器的是Lambda(它實際上是函式的宿主)和API Gateway(它是使您新增速率限制,API金鑰等內容)的前端。我在us-west-2區域設定了Lambda函式,該區域與託管Beanstalk伺服器的區域相同。然後,我將CloudFront例項設定為將對一個遊戲的請求路由到我們的新的無伺服器設定,以及將另一個遊戲的請求路由到我們的舊Beanstalk設定。然後,我對兩個URL(一個無伺服器,一個Beanstalk)進行了簡單測試。兩個網址都在我們的API中命中了完全相同的程式碼,從而將一個事件儲存到資料庫中。我為每個請求執行了100個請求。
我始終發現,無伺服器設定的速度要慢15%。(此外,如果您認為總體執行速度很慢,那麼我是從冰島執行的,因此會有一些延遲)。令人失望,但是它仍然足夠快,我只是想知道在API之前執行API Gateway會有一些開銷,即使我們不使用它們,它也提供了很多東西。
價錢
老實說,我之前根本沒有考慮過定價。我只是覺得“為您所用的內容付費”聽起來比為24/7上的例項付費要便宜。因此,我讓新的無伺服器設定執行了幾天,然後開始檢查我的賬單。哎呦!Lambda + API閘道器賬單已經超過一百美元!我首先開始搞亂Lambda設定,為lambda函式提供更少的記憶體以減少費用,但是當我真正檢視正在發生的事情時,很明顯,主要是API閘道器費用高。
我們的API每天接受大約一千萬個請求。僅用於API Gateway每天大約35美元。最重要的是,Lambda每天的費用約為10美元,儘管可以透過使用更少的記憶體來減少。兩者合計約為每天45 $,或每月1350 $,而Elastic Beanstalk 約為每月164 $。這是8倍更貴!我喜歡新技術,並且可以快速部署,但是我不會每月額外支付約1200美元。
結論
我確定在某些情況下,API Gateway和Lambda優於Elastic Beanstalk。我想我們的用例不是其中之一。也許如果您使用的是API金鑰,速率限制和API Gateway提供的其他內容,則有必要為一百萬個請求支付3.50美元。對我們來說,如果我們可以在Lambda前面放一個普通的負載平衡器,那就更好了。據我所知,API閘道器對於HTTP訪問Lambda是必需的。
最後,在這裡我一般不打算抨擊API Gateway,Lambda或無伺服器,只是表明對於某些工作負載,它們比無聊的舊EC2和Elastic Beanstalk昂貴得多。
來自HM的討論和最佳化建議:
PSA:將現有的應用程式一對一地移植到無伺服器幾乎無法按預期進行。建議最佳化幾點:
1.不要使用.NET,它的啟動時間很糟糕。Lambda全部涉及零成本的水平縮放,但是如果您的執行時需要100毫秒以上的時間進行初始化,那將不起作用。效能敏感功能的唯一有效選項是JS,Python和Go。
2.儘可能使用託管服務。您永遠不要在Lambda中處理登入事件,這是Cognito的。
3.考慮事件而不是REST操作。考慮哪些事件必須擊中您的API,什麼可以由託管服務直接處理或由您在邊緣處理。例如。永遠不要透過Lamdba函式上傳影像,而是透過簽名的URL直接將其上傳到S3,然後讓S3發出更改事件以觸發下游處理。
4.使用GraphQL彙集來自前端的API請求。
5.對於高吞吐量的API,Websocket便宜。
6.廣泛使用快取。可以從快取處理的請求永遠不會到達Lambda。
7.始終考慮節省勞動力,尤其是人員。
相關文章
- 小米釋出紅米Pro售價提高 價格不在親民?
- 如何提高無線網路bt下載速度
- 數字化轉型:敏捷和DevOps如何降低風險,提高速度敏捷dev
- 華納雲分享提高香港伺服器速度的方法伺服器
- 英偉達釋出「霸王龍」Titan RTX:價格降低,本月上市
- 提高無線網路下載速度的秘訣
- 《無價》之價格零售應用技巧
- 如何降低網站滲透測試服務的成本價格網站
- 阿里雲伺服器租賃價格及報價阿里伺服器
- 提高sql查詢速度SQL
- 提高count查詢速度
- 如何提高MySQL DELETE 速度MySqldelete
- 淺談伺服器價格不同的原因伺服器
- 騰訊雲輕量雲伺服器價格伺服器
- 360酷跑藍芽無線耳機價格售價多少錢藍芽
- 芝加哥期權交易所希望降低比特幣期貨合約價格比特幣
- 提高gradle編譯速度Gradle編譯
- 提高查詢速度使用materizlizedZed
- 金山雲伺服器咋樣? 金山雲伺服器KEC價格多少?伺服器
- 提高查詢速度方法總結
- 優化sql提高查詢速度優化SQL
- 怎樣才能買到價效比高價格又便宜的雲伺服器?伺服器
- 用於顯著提高檢索速度和降低成本的二進位制和標量嵌入量化
- IOTA澄清未與微軟正式合作,價格隨之下跌15%微軟
- 無縫鋼管價格暫時維持平穩PUXUX
- 編寫類Book, 定義方法updatePrice,實現更改某本書的價格,具體:如果價格>150,則更改為150,如果價格>100,更改為100,否則不變
- TrendForce:預計2020年Q3伺服器DRAM產品價格將下跌10%-15%伺服器
- 如何選擇高防伺服器?高防伺服器租用價格表伺服器
- 頁遊伺服器租用如何選擇?伺服器租用價格是多少?伺服器
- 【部落格】提高階字串字串
- 如何提高網站的開啟速度?網站
- dll預編譯提高webpack打包速度編譯Web
- 提高微信小程式的應用速度微信小程式
- 如何提高 Xcode 的編譯速度XCode編譯
- 如何提高Win10開機速度?Win10
- 如何提高FPGA敲程式碼的速度?FPGA
- 伺服器SSL證書價格受到哪些因素影響?伺服器
- 按照價格排序!排序