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

劇的改善?? VPC Lambda Before&After

TomoyaIwata
October 26, 2019

劇的改善?? VPC Lambda Before&After

2019/10/26に開催されたDevelopers.IO 2019 Fukuokaで発表させて頂いた際の資料です

TomoyaIwata

October 26, 2019
Tweet

More Decks by TomoyaIwata

Other Decks in Technology

Transcript

  1. 劇的改善︖︖
    VPC Lambda Before&After
    CX事業本部
    岩⽥ 智哉

    View Slide

  2. スライドは後で⼊⼿することが出来ますので
    発表中の内容をメモする必要はありません。
    写真撮影をする場合は
    フラッシュ・シャッター⾳が出ないようにご配慮ください
    Attention

    View Slide

  3. 3
    ⾃⼰紹介
    lクラスメソッド株式会社
    lサーバーレス開発部 改め CX事業本部
    l⼤阪オフィス所属
    l好きなAWSサービス: AWS Lambda
    岩⽥ 智哉

    View Slide

  4. 4
    今⽇話したいこと
    アンチパターンとされていた
    VPC Lambdaの懸念事項が
    どのように改善されたのか︖︖

    View Slide

  5. 5
    想定しているターゲット
    • AWS Lambdaの基礎的な知識を持っている⼈
    • サーバーレスなシステムの開発/運⽤をやってる⼈
    • VPC Lambdaの利⽤を検討している⼈

    View Slide

  6. 6
    アジェンダ
    • AWS Lambdaのアーキテクチャおさらい 5分
    • VPC Lambdaのアーキテクチャ(新)
    • VPC Lambdaのアーキテクチャ(旧)
    • 改善効果について
    6分
    4分
    6分
    • どのように考え⽅を変えるべきなのか
    • まとめ
    5分
    2分

    View Slide

  7. 7
    アジェンダ
    • AWS Lambdaのアーキテクチャおさらい 5分
    • VPC Lambdaのアーキテクチャ(新)
    • VPC Lambdaのアーキテクチャ(旧)
    • 改善効果について
    6分
    4分
    6分
    • どのように考え⽅を変えるべきなのか
    • まとめ
    5分
    2分

    View Slide

  8. 8
    Lambdaのアーキテクチャについて
    無駄なコスト
    ※Security Overview of AWS Lambda(https://d1.awsstatic.com/whitepapers/Overview-AWS-Lambda-Security.pdf)より引⽤
    cgroups
    namespaces
    seccomp
    iptables
    chroot

    View Slide

  9. 9
    Lambdaのアーキテクチャについて(EC2モデル)
    無駄なコスト
    • 1つのMicroVM上に複数のLambda実
    ⾏環境を作成
    • AWSアカウントをまたいでWorkerは
    共有されない
    ※Security Overview of AWS Lambda(https://d1.awsstatic.com/whitepapers/Overview-AWS-Lambda-Security.pdf)より引⽤

    View Slide

  10. 10
    Lambdaのアーキテクチャについて(Firecrackerモデル)
    • 1つのMicroVM上には1つのLambda実
    ⾏環境しか作成しない
    • AWSアカウントをまたいでWorkerを
    共有する
    ※Security Overview of AWS Lambda(https://d1.awsstatic.com/whitepapers/Overview-AWS-Lambda-Security.pdf)より引⽤

    View Slide

  11. 11
    アジェンダ
    • AWS Lambdaのアーキテクチャおさらい 5分
    • VPC Lambdaのアーキテクチャ(新)
    • VPC Lambdaのアーキテクチャ(旧)
    • 改善効果について
    6分
    4分
    6分
    • どのように考え⽅を変えるべきなのか
    • まとめ
    5分
    2分

    View Slide

  12. 12
    VPC Lambdaのアーキテクチャ (旧)
    ENIキャパシティの計算式: Projected peak concurrent executions * (Memory in GB / 3GB)
    ※Announcing improved VPC networking for AWS Lambda functions
    (https://aws.amazon.com/jp/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/)より引⽤

    View Slide

  13. 13
    VPC Lambdaのアーキテクチャ (旧)
    ※A Serverless Journey: AWS Lambda Under the Hood (SRV409-R1) - AWS re:Invent 2018
    (https://www.slideshare.net/AmazonWebServices/a-serverless-journey-aws-lambda-under-the-hood-srv409r1-aws-reinvent-
    2018?ref=https://dev.classmethod.jp/cloud/aws/reinvent2018-srv409/)より引⽤

    View Slide

  14. 14
    VPC Lambdaの課題
    • ENIの枯渇問題
    • ENI作成のRate Limit
    • IPアドレス枯渇問題
    • ENI作成を伴うコールドスタート時の遅延
    • インターネットアクセスにNAT Gatewayが必要

    View Slide

  15. 15
    VPC LambdaからRDB(S)を利⽤する際の課題
    • 同時接続数の問題
    • コネクションプーリングが使えない
    • RDBはスケールアウトではなくスケールアップ
    • コスト最適化の課題

    View Slide

  16. 16
    RDB(S)を使う場合のコストと同時接続数の関係
    • 最⼤同時接続数を上げるにはインスタンスタイプを変える必要がある
    • 柔軟にスケールアップできない
    • コストを最適化できない
    処理可能な最⼤同時接続数とコスト 実際の接続数
    インスタンスタイプ変更 インスタンスタイプ変更

    View Slide

  17. 17
    VPC Lambdaは⼀般的に
    アンチパターンと
    されていた
    旧来の考え⽅

    View Slide

  18. 18
    アジェンダ
    • AWS Lambdaのアーキテクチャおさらい 5分
    • VPC Lambdaのアーキテクチャ(新)
    • VPC Lambdaのアーキテクチャ(旧)
    • 改善効果について
    6分
    4分
    6分
    • どのように考え⽅を変えるべきなのか
    • まとめ
    5分
    2分

    View Slide

  19. 19
    VPC Lambdaのアーキテクチャ (新)
    ※Announcing improved VPC networking for AWS Lambda functions
    (https://aws.amazon.com/jp/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/)より引⽤

    View Slide

  20. 20
    VPC Lambdaのアーキテクチャ (新)
    ※A Serverless Journey: AWS Lambda Under the Hood (SRV409-R1) - AWS re:Invent 2018
    (https://www.slideshare.net/AmazonWebServices/a-serverless-journey-aws-lambda-under-the-hood-srv409r1-aws-reinvent-
    2018?ref=https://dev.classmethod.jp/cloud/aws/reinvent2018-srv409/)より引⽤

    View Slide

  21. 21
    Hyperplane
    • AWS内部で利⽤されているSDNの技術
    • S3 Load Balancerがベース
    • EFS、NLB、Private Link、Managed NATで利⽤
    • デフォルト5Gbit/secの性能Tbitレベルまでスケール
    • msレベルのレイテンシー

    View Slide

  22. 22
    新アーキテククチャへの移⾏開始
    • 2019/9/3 AWSより新アーキテクチャへの段階移⾏開始の
    アナウンス
    • 2019/9/27 オハイオ、フランクフルト、東京への適⽤
    完了のアナウンス

    View Slide

  23. 23
    • AWS Lambdaのアーキテクチャおさらい 5分
    • VPC Lambdaのアーキテクチャ(新)
    • VPC Lambdaのアーキテクチャ(旧)
    • 改善効果について
    6分
    4分
    6分
    • どのように考え⽅を変えるべきなのか
    • まとめ
    5分
    2分

    View Slide

  24. Public subnet
    24
    検証1
    AWS Cloud
    VPC
    • API GatewayのバックにVPC Lambdaを紐付け
    • EC2からheyコマンドで並列アクセス

    View Slide

  25. 25
    2019/5/29時点の実⾏結果
    Summary:
    Total: 13.4614 secs
    Slowest: 13.0460 secs
    Fastest: 0.0194 secs
    Average: 1.2528 secs
    Requests/sec: 37.1433
    Total data: 2500 bytes
    Size/request: 5 bytes
    Response time histogram:
    0.019 [1] |
    1.322 [448] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    2.625 [1] |
    3.927 [0] |
    5.230 [0] |
    6.533 [0] |
    7.835 [0] |
    9.138 [0] |
    10.441 [4] |
    11.743 [9] |■
    13.046 [37] |■■■

    View Slide

  26. 26
    2019/10/20時点の実⾏結果
    Summary:
    Total: 1.3694 secs
    Slowest: 0.5470 secs
    Fastest: 0.0225 secs
    Average: 0.0970 secs
    Requests/sec: 365.1342
    Total data: 2500 bytes
    Size/request: 5 bytes
    Response time histogram:
    0.023 [1] |
    0.075 [411] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    0.127 [25] |■■
    0.180 [1] |
    0.232 [0] |
    0.285 [0] |
    0.337 [0] |
    0.390 [9] |■
    0.442 [7] |■
    0.495 [33] |■■■
    0.547 [13] |■

    View Slide

  27. 27
    もうちょっと
    イジメてみる

    View Slide

  28. 28
    検証2
    ENI1が追加作成されたりしない︖︖
    • Lambdaの実⾏がすぐに完了しないように2秒
    のSleepを追加
    • heyの並列数を500に引き上げ

    View Slide

  29. 29
    検証2の結果
    Summary:
    Total: 21.8108 secs
    Slowest: 3.4042 secs
    Fastest: 2.0223 secs
    Average: 2.1532 secs
    Requests/sec: 458.4892
    Total data: 50000 bytes
    Size/request: 5 bytes
    Response time histogram:
    2.022 [1] |
    2.160 [8998] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    2.299 [1] |
    2.437 [0] |
    2.575 [0] |
    2.713 [0] |
    2.851 [0] |
    2.990 [0] |
    3.128 [113] |■
    3.266 [844] |■■■■
    3.404 [43] |

    View Slide

  30. 30
    検証2実⾏後のENIの状況
    VPC Lambda⽤のENIは1つのまま変わらず

    View Slide

  31. 31
    さらにイジメてみる

    View Slide

  32. Public subnet
    32
    検証3
    AWS Cloud
    VPC
    master
    slave

    View Slide

  33. 33
    検証3
    • FargateでLocustのクラスタを作成し、API GW経由で
    VPC Lambdaに⼤量アクセス
    • Lambdaは3秒Sleep後にレスポンスを返却
    • Usersは1,100に設定
    • Hatch rateは100に設定
    • 同時実⾏数の上限に達するようなワークロード

    View Slide

  34. 34
    検証3
    スロットリングが頻発するような状況でも
    ⼤きな待ちは発⽣せず

    View Slide

  35. 35
    検証3 実⾏時のLambda同時起動数

    View Slide

  36. 36
    検証3 実⾏時のスロットリング状況

    View Slide

  37. 37
    検証結果から....
    • Lambdaの同時実⾏数が増えてもENIの追加作成が
    ⾛ることは無さそう
    • ⼤量のデータ転送を伴うLambdaだと懸念がある︖︖要検証
    • Lambdaのペイロードサイズ上限を考えると⼤丈夫︖︖
    • ⾮VPC Lambdaと同等レベルの耐久性がありそう

    View Slide

  38. 38
    • AWS Lambdaのアーキテクチャおさらい 5分
    • VPC Lambdaのアーキテクチャ(新)
    • VPC Lambdaのアーキテクチャ(旧)
    • 改善効果について
    6分
    4分
    6分
    • どのように考え⽅を変えるべきなのか
    • まとめ
    5分
    2分

    View Slide

  39. 39
    VPC Lambdaの課題(再掲)
    • ENIの枯渇問題
    • ENI作成のRate Limit
    • IPアドレス枯渇問題
    • ENI作成を伴うコールドスタート時の遅延
    • インターネットアクセスにNAT Gatewayが必要

    View Slide

  40. 40
    VPC LambdaからRDB(S)を利⽤する際の課題(再掲)
    • 同時接続数の問題
    • コネクションプーリングが使えない
    • RDBはスケールアウトではなくスケールアップ
    • コスト最適化の課題

    View Slide

  41. 41
    新アーキテクチャでの考え⽅
    • ENI周りの懸念事項は解消された
    • 新アーキテクチャでも課題は残る
    • 何でもかんでもVPC Lambdaを使っても⼤丈夫という訳で
    はない
    • あくまでリスク受容できる範囲が広がっただけ

    View Slide

  42. 42
    VPC Lambdaを使っても良さそうなユースケース
    • コールドスタートによる10秒~20秒数100ミリ秒~数秒程度の遅
    延が許容できるワークロード
    • 利⽤予定のVPCリソースが想定される最⼤アクセス数を問題な
    く処理可能なワークロード
    例えば、、、
    アクセス数が安定しており、数秒程度のレイテンシが許
    容できるB2Bサービスのバックエンドなど

    View Slide

  43. 43
    その他 考慮しておきたいこと
    • VPC Lambdaを使う ≒ 何かしらのサービスを利⽤するためのラ
    イブラリが必要
    • パッケージやLayerが肥⼤化しがち 当然コールドスタートは遅い
    • アプリケーションフレームワークは使う︖それとも使わない︖
    • モノリシックなアプリケーションをVPC Lamdbaに乗せ替えよう
    としていないか︖︖

    View Slide

  44. 44
    • AWS Lambdaのアーキテクチャおさらい 5分
    • VPC Lambdaのアーキテクチャ(新)
    • VPC Lambdaのアーキテクチャ(旧)
    • 改善効果について
    6分
    4分
    6分
    • どのように考え⽅を変えるべきなのか
    • まとめ
    5分
    2分

    View Slide

  45. 45
    まとめ
    • VPC Lambdaのアーキテクチャは様々な課題を抱えていた
    • そのうちいくつかの課題は改善された
    • いくつかの課題は継続して残り続けている
    • VPC Lambdaを採⽤しても問題ないケースは増えた

    View Slide

  46. 46
    適切なアーキテクチャを
    選定できるように
    常に知識のアップデートを
    まとめ

    View Slide

  47. 47
    ご清聴ありがとうございました

    View Slide

  48. View Slide