效能與資源最佳化

在 AWS 上部署應用程式

Dunieski Otano

Amazon Web Services Solutions Architect

又慢又貴

  • 流量高峰時 app 感覺變慢
  • 同月的 Lambda 帳單飆升
  • 調校可更快也更省

速度與成本儀表:函式又慢又貴,指向最佳化

在 AWS 上部署應用程式

併發數:成本 vs 冷啟動


Reserved:設上限並保護

  • 為函式設上限並保證容量
  • 成本最低,但對冷啟動無效

Provisioned:付費保溫

  • 保持執行個體預先溫熱,無冷啟動
  • 成本較高;僅在延遲很重要時使用
在 AWS 上部署應用程式

用時間-成本曲線選對記憶體

記憶體增加時的時間-成本曲線:時間先降後趨平,總成本呈 U 型,最省的記憶體設定被標示

  • 記憶體越多 = CPU 越多 = 時間更短
  • 成本 = 記憶體單價 × 執行時間
  • 最省錢點常在中間
  • 用多個大小量測,再選定
在 AWS 上部署應用程式

應用層快取

  • 執行環境內重複利用工作
  • 溫熱的 Lambda 會保留全域變數於呼叫間
  • 快取設定、用戶端與熱門查詢
  • ElastiCache 供跨執行個體共享快取

Lambda 執行環境快取:在溫熱呼叫間重用全域用戶端物件,且 ElastiCache 叢集在多個函式執行個體間共享熱門資料

在 AWS 上部署應用程式

CloudFront 邊緣快取

  • CloudFront:在邊緣節點快取回應
  • 重複請求可不打後端直接服務
  • 快取鍵可含標頭、查詢字串、Cookie
  • 靜態與可快取內容可免費擴展

CloudFront 邊緣快取:全球邊緣節點向附近使用者提供快取回應,不打後端,並顯示含標頭與查詢字串的快取鍵設定

在 AWS 上部署應用程式

選對快取層級

三層快取:邊緣的 CloudFront 供靜態廣泛共享內容;每個執行個體的記憶體內快取存放熱門物件;ElastiCache 或 DAX 供共享的高頻讀取

  • Edge(CloudFront):靜態、廣泛共享內容
  • Application(記憶體內):每執行個體的熱門物件
  • Data(ElastiCache/DAX):共享的熱門讀取
  • 分層使用;各自降低不同成本
在 AWS 上部署應用程式

整合最佳化策略

  • 時間-成本曲線選對記憶體
  • 只在延遲重要處加 provisioned concurrency
  • 邊緣、應用、資料層快取
  • 量測→改一項→再量測

最佳化總結:用時間-成本曲線決定記憶體、是否使用預先併發、三層快取圖、以及量測-變更-再量測的循環

在 AWS 上部署應用程式

一起來練習吧!

在 AWS 上部署應用程式

Preparing Video For Download...