Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Aurora Serverless v2 コスト戦略の羅針盤【DeNA TechCon 2023】

DeNA_Tech
March 02, 2023

Aurora Serverless v2 コスト戦略の羅針盤【DeNA TechCon 2023】

youtube:https://youtu.be/syYxf5ag4vQ

概要:
本セッションでは Amazon Aurora Serverless v2 のコスト戦略についてお話します。2022年4月に Amazon Aurora Serverless v2 が GA となりました。また、同年6月にはこの Aurora Serverless v2 について、主に性能面の検証結果を DeNA エンジニアブログ(https://engineering.dena.com/blog/2022/06/aurora-serverless-v2/) にて公開致しました。それに続く今回は、コスト面についての発表です。AWS リリースポスト曰く、Aurora Provisioned と比較して大幅にコストを削減できるとのことです。これを確かめるべく、再度、我々エンジニアは Amazon の奥地へと向かいました!

◆ チャンネル登録はこちら↓
https://youtube.com/c/denatech?sub_confirmation=1

◆ Twitter
https://twitter.com/DeNAxTech

◆ DeNA Engineering
https://engineering.dena.com/

◆ DeNA Engineer Blog
https://engineering.dena.com/blog/

◆ DeNA TechCon 2023 公式サイト
https://techcon2023.dena.dev/

DeNA_Tech

March 02, 2023
Tweet

More Decks by DeNA_Tech

Other Decks in Technology

Transcript

  1. • Aurora Serverless v2 ACU 増加速度 検証のアップデート • Aurora Serverless

    v2 の 導入検討 のコスト面を紹介 はじめに 3
  2. Table of Contents 1. Aurora Serverless v2 の紹介 2. Aurora

    Serverless v2 の性能 4 3. Aurora Serverless v2 のコスト 4. Aurora Serverless v2 の懸念点
  3. Aurora Serverless v2 の仕組み 7 db.serverless = Aurora Serverless v2

    の DB インスタンスクラス Aurora Capacity Units (ACU) = Serverless v2 スケーリング単位
  4. 性能検証 in 2022-06-16 9 DeNA Engineer Blog で ACU 増加速度

    検証を公開 新サービス Aurora Serverless v2 の検証とその評価
  5. 無風状態からの ACU 増加 • 5-15 秒の無反応期間 ACU 増加は二段階 • 急激(5-7

    /sec) • 緩やか(0.05-0.15 /sec) 性能検証 in 2022-06-16 10
  6. オンデマンドなオートスケール • コスト削減領域 = ▪ • コスト増加領域 = ▪ ap-northeast-1

    の場合 ▪ + ▪ > ▪ × 4.6 で v2 優位 us-east-1 の場合 ▪ + ▪ > ▪ × 3.3 で v2 優位 コストグラフ in db.serverless 16
  7. コストグラフ in db.serverless 17 2状態で理想化 • Busy = 最大リソース使用 •

    Lazy = 最小リソース使用 変数定義 • offpeak = Lazy(h) / 24h • loadgap = Busy(%) - Lazy(%) • buffer = 100% - Busy(%)
  8. 0 < offpeak(O) < 1、0 < loadgap(L) < 0.8 、buffer(B)

    = 0.2 ▪ = Aurora Provisioned 優位 ▪ = Aurora Serverless v2 優位 vs Aurora Provisioned (db.r5.2xlarge in tokyo) 18 L=0.79 L=0.69 L=0.59 L=0.49 L=0.39 L=0.29 L=0.19 L=0.09 L=0.01 O=0.01 O=0.1 O=0.2 O=0.3 O=0.4 O=0.5 O=0.6 O=0.7 O=0.8 O=0.9 O=0.99
  9. vs Aurora Provisioned (db.r5.2xlarge in tokyo) 0 < offpeak(O) <

    1、0 < loadgap(L) < 1 、buffer(B) = 0 ▪ = Aurora Provisioned 優位 ▪ = Aurora Serverless v2 優位 19 L=0.99 L=0.89 L=0.79 L=0.69 L=0.59 L=0.49 L=0.39 L=0.29 L=0.19 L=0.09 L=0.01 O=0.01 O=0.1 O=0.2 O=0.3 O=0.4 O=0.5 O=0.6 O=0.7 O=0.8 O=0.9 O=0.99
  10. 0 < offpeak(O) < 1、0 < loadgap(L) < 0.5、buffer(B) =

    0.5 ▪ = Aurora Provisioned 優位 ▪ = Aurora Serverless v2 優位 vs Aurora Provisioned (db.r5.2xlarge in tokyo) 20 L=0.49 L=0.39 L=0.29 L=0.19 L=0.09 L=0.01 O=0.01 O=0.1 O=0.2 O=0.3 O=0.4 O=0.5 O=0.6 O=0.7 O=0.8 O=0.9 O=0.99
  11. 0 < offpeak(O) < 1、0 < loadgap(L) < 0.8 、buffer(B)

    = 0.2 ▪ = Aurora Provisioned 優位 ▪ = Aurora Serverless v2 優位 vs Aurora Provisioned (db.r5.2xlarge in tokyo) 21 L=0.79 L=0.69 L=0.59 L=0.49 L=0.39 L=0.29 L=0.19 L=0.09 L=0.01 O=0.01 O=0.1 O=0.2 O=0.3 O=0.4 O=0.5 O=0.6 O=0.7 O=0.8 O=0.9 O=0.99
  12. 0.7 ≦ offpeak(O) < 1、0.49 ≦ loadgap(L) < 0.8、buffer(B) =

    0.2 vs Aurora Provisioned (db.r5.2xlarge in tokyo) 22 L = 0.79 -$130.2 $233.9 $597.9 $925.5 L = 0.69 -$452.7 -$134.8 $183.2 $469.3 L = 0.59 -$775.3 -$503.4 -$231.6 $13.1 L = 0.49 -$1097.9 -$872.1 -$646.3 -$443.1 O = 0.7 O = 0.8 O = 0.9 O = 0.99
  13. vs Aurora Provisioned (db.r5.2xlarge in tokyo) 0.7 ≦ offpeak(O) <

    1、0.49 ≦ loadgap(L) < 0.8、buffer(B) = 0.2 O = 0.9、L ≒ 0.7、B = 0.2 の状態で約 18 % のコスト削減が可能 23 L = 0.79 -$130.2 $233.9 $597.9 $925.5 L = 0.69 -$452.7 -$134.8 $183.2 (約 18%) $469.3 L = 0.59 -$775.3 -$503.4 -$231.6 $13.1 L = 0.49 -$1097.9 -$872.1 -$646.3 -$443.1 O = 0.7 O = 0.8 O = 0.9 O = 0.99
  14. O = 0.9、L ≒ 0.7、B = 0.2 • 8 倍のリクエスト量

    • 144 分のピーク期間 ex) • ソーシャルゲーム • オークションサービス • etc… vs Aurora Provisioned (db.r5.2xlarge in tokyo) 24
  15. vs Aurora Provisioned (AWS Graviton2) 27 db.r6g (AWS Graviton2) は

    db.r5 より性能・コスト共に優れる QPS: db.serverless (32 ACU) × α = db.r6g.2xlarge
  16. 性能検証 (db.serverless vs db.r6g.2xlarge) $ sysbench … --tables=$TABLES --table-size=$TABLE_SIZE oltp_common

    prepare $ sysbench … --tables=$TABLES --table-size=$TABLE_SIZE --threads=$THREADS --time=$TIME --db-ps-mode=disable $TESTCASE run 29 Name Instance Class TABLES TABLE_SIZE TESTCASE TIME THREADS provisioned-105 db.r6g.2xlarge 1 10^5 oltp_read_write 180 128 serverless-105 db.serverless (32 ACU) 1 10^5 oltp_read_write 180 128 provisioned-107 db.r6g.2xlarge 1 10^7 oltp_read_write 180 128 serverless-107 db.serverless (32 ACU) 1 10^7 oltp_read_write 180 128 provisioned-109 db.r6g.2xlarge 1 10^9 oltp_read_write 180 128 serverless-109 db.serverless (32 ACU) 1 10^9 oltp_read_write 180 128
  17. QPS: 1.09 - 1.27 倍の性能差、α = 1.20 コスト: 約 5.1

    倍 (ap-northeast-1)、約 3.7 倍 (us-east-1) vs Aurora Provisioned (db.r6g.2xlarge) 30
  18. 0 < offpeak(O) < 1、0 < loadgap(L) < 0.8 、buffer(B)

    = 0.2 ▪ = Aurora Provisioned 優位 ▪ = Aurora Serverless v2 優位 vs Aurora Provisioned (db.r6g.2xlarge in tokyo) 31 L=0.79 L=0.69 L=0.59 L=0.49 L=0.39 L=0.29 L=0.19 L=0.09 L=0.01 O=0.01 O=0.1 O=0.2 O=0.3 O=0.4 O=0.5 O=0.6 O=0.7 O=0.8 O=0.9 O=0.99
  19. 0.7 ≦ offpeak(O) < 1、0.49 ≦ loadgap(L) < 0.8、buffer(B) =

    0.2 vs Aurora Provisioned (db.r6g.2xlarge in tokyo) 32 L = 0.79 -$463.7 -$26.8 $410.0 $803.2 L = 0.69 -$850.7 -$469.2 -$87.6 $255.7 L = 0.59 -$1237.8 -$911.5 -$585.3 -$291.7 L = 0.49 -$1624.9 -$1353.9 -$1083.0 -$839.1 O = 0.7 O = 0.8 O = 0.9 O = 0.99
  20. 0.7 ≦ offpeak(O) < 1、0.49 ≦ loadgap(L) < 0.8、buffer(B) =

    0.2 O = 0.9、L ≒ 0.7、B = 0.2 の状態で約 10 % のコスト増加 vs Aurora Provisioned (db.r6g.2xlarge in tokyo) 33 L = 0.79 -$463.7 -$26.8 $410.0 $803.2 L = 0.69 -$850.7 -$469.2 -$87.6 (約 10%) $255.7 L = 0.59 -$1237.8 -$911.5 -$585.3 -$291.7 L = 0.49 -$1624.9 -$1353.9 -$1083.0 -$839.1 O = 0.7 O = 0.8 O = 0.9 O = 0.99
  21. 0.89 ≦ offpeak(O) < 1、0.69 ≦ loadgap(L) ≦ 0.79 、buffer

    = 0.2 ▪ = Aurora Provisioned 優位 ▪ = Aurora Serverless v2 優位 vs Aurora Provisioned (db.r6g.2xlarge in tokyo) 34 L=0.79 L=0.78 L=0.77 L=0.76 L=0.75 L=0.74 L=0.73 L=0.72 L=0.71 L=0.70 L=0.69 O=0.89 O=0.90 O=0.91 O=0.92 O=0.93 O=0.94 O=0.95 O=0.96 O=0.97 O=0.98 O=0.99
  22. 0.89 ≦ offpeak(O) < 1、0.69 ≦ loadgap(L) ≦ 0.79 、buffer

    = 0.2 ▪ = Aurora Provisioned 優位 ▪ = Aurora Serverless v2 優位 vs db.r6g.2xlarge + Reserved Instance 35 L=0.79 L=0.78 L=0.77 L=0.76 L=0.75 L=0.74 L=0.73 L=0.72 L=0.71 L=0.70 L=0.69 O=0.89 O=0.90 O=0.91 O=0.92 O=0.93 O=0.94 O=0.95 O=0.96 O=0.97 O=0.98 O=0.99
  23. 0.89 ≦ offpeak(O) < 1、0.69 ≦ loadgap(L) ≦ 0.79 、buffer

    = 0.2 ▪ = Aurora Provisioned 優位 ▪ = Aurora Serverless v2 優位 vs db.r6g.2xlarge + Reserved Instance 36 80 倍 40 倍 27 倍 20 倍 16 倍 13 倍 11 倍 10 倍 9 倍 8 倍 7 倍 158 min 144 min 130 min 115 min 101 min 86 min 72 min 58 min 43 min 29 min 14 min
  24. おわりに Aurora Serverless v2 の ACU 無反応期間 が 5-15 秒

    から 3-4 秒 に! 2022-06-16 の検証結果より約 70% 短縮!まさしくマネージドサービスによる恩恵! 37 ほぼ全てのケースで db.r6g 系統に軍配があがる... 5.1 倍のベースコストが響いている... コスト削減 “のみ” を目的として導入するのは難しい、今後の価格改定に期待! Aurora Serverless v2 で コスト削減 は かなり厳しい