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

VPCLambda × RDSのデメリットを正しく理解しよう!!

VPCLambda × RDSのデメリットを正しく理解しよう!!

2019/8/1に開催されたServerlessMeetupOsaka#5で発表させて頂いた際の資料です

TomoyaIwata

August 01, 2019
Tweet

More Decks by TomoyaIwata

Other Decks in Programming

Transcript

  1. 6 アジェンダ 無駄なコスト • Lambdaについて 5分 • VPC Lambda ×

    RDSのデメリットについて • VPC Lambdaと⾮VPC Lambdaについて • まとめ 3分 12分 2分
  2. 7 アジェンダ 無駄なコスト • Lambdaについて 5分 • VPC Lambda ×

    RDSのデメリットについて • VPC Lambdaと⾮VPC Lambdaについて • まとめ 3分 12分 2分
  3. 10 Lambda実⾏環境のライフサイクルについて (ENIの作成) ※詳しくは後述 コンテナの作成 デプロイパッケー ジのロード デプロイパッケー ジの展開 ランタイム

    起動・初期化 関数・メソッドの 実⾏ コンテナの破棄 20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 & Part2 https://www.slideshare.net/AmazonWebServicesJapan/20190402-aws-black-belt-online- seminar-lets-dive-deep-into-aws-lambda-part1-part2
  4. 11 Lambda実⾏環境のライフサイクルについて (ENIの作成) ※VPC Labdaの場合 コンテナの作成 デプロイパッケー ジのロード デプロイパッケー ジの展開

    ランタイム 起動・初期化 関数・メソッドの 実⾏ コンテナの破棄 20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 & Part2 https://www.slideshare.net/AmazonWebServicesJapan/20190402-aws-black-belt-online- seminar-lets-dive-deep-into-aws-lambda-part1-part2 コールドスタート
  5. 12 Lambda実⾏環境のライフサイクルについて (ENIの作成) ※VPC Labdaの場合 コンテナの作成 デプロイパッケー ジのロード デプロイパッケー ジの展開

    ランタイム 起動・初期化 関数・メソッドの 実⾏ コンテナの破棄 20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 & Part2 https://www.slideshare.net/AmazonWebServicesJapan/20190402-aws-black-belt-online- seminar-lets-dive-deep-into-aws-lambda-part1-part2 ウォーム スタート
  6. 14 無駄なコスト • Lambdaについて 5分 • VPC Lambda × RDSのデメリットについて

    • VPC Lambdaと⾮VPC Lambdaについて • まとめ 3分 12分 2分
  7. 15 VPC Lambdaと⾮VPC Lambdaについて AWSにはVPC(Virtual Private Cloud)という概念がある VPC AWS Cloud

    Availability Zone 1 Availability Zone 2 Public subnet Private subnet Private subnet Public subnet
  8. 16 AWSのサービス分類(⼀部抜粋) Amazon Aurora Amazon DocumentDB (with MongoDB compatibility) Amazon

    DynamoDB Amazon ElastiCache Amazon RDS Amazon Neptune Amazon Elasticsearch Service Amazon Simple Storage Service (S3) Amazon Cognito VPC内にリソースを作成するサービス VPC外にリソースを作成するサービス AWS IoT Device Management AWS CloudFormation データベース系のサービスがVPCに寄っている Amazon CloudWatch
  9. 17 VPC Lambdaと⾮VPC Lambdaについて • VPC内のリソースにアクセスできるように設定されたLambda関数 = VPC Lambda •

    VPC内のリソースにアクセスするためにENI(Elastic Network Interface)を利⽤する
  10. 19 無駄なコスト • Lambdaについて 5分 • VPC Lambda × RDSのデメリットについて

    • VPC Lambdaと⾮VPC Lambdaについて • まとめ 3分 12分 2分
  11. 20 VPC LambdaあるいはVPC Lambda × RDSのデメリット • コネクションプーリングの問題 • 同時接続数の問題

    • IPアドレス枯渇問題 • インターネットアクセスにNAT Gatewayが必要 (その分コストが・・・) 今回話しません • コールドスタートの問題 XXX問題という表現は良く聞くけど、具体的に何が問題︖︖
  12. 24 ⼀⼝にコネプーといっても⽅式は様々 • 例) PreForkのApache × PHPでxxxx_pconnect • プロセスを跨いでコネクションは共有できない •

    永続化であって「プーリング」ではない シングルスレッドのWeb(AP)サーバーで接続を永続化 • 例) Tomcat JDBC Connection Pool • スレッド間で接続を共有することで、物理的な同時接続数を削減できる可能性 がある マルチスレッドのWeb(AP)サーバーでプーリング • 例) pg_pool2 × PostgreSQL • 中間層を設けることで、プロセスを跨いでコネクションを共有できる ミドルウェアでプーリング DBMSの特性によってコネプーの効果もマチマチ...
  13. 25 ⼀⼝にコネプーといっても⽅式は様々 • 例) PreForkのApacheでxxxx_pconnect • プロセスを跨いでコネクションは共有できない • 永続化であって「プーリング」ではない シングルスレッドのWeb(AP)サーバーで接続を永続化

    • 例) Tomcat JDBC Connection Pool • スレッド間で接続を共有することで、物理的な同時接続数を削減できる可能性 がある マルチスレッドのWeb(AP)サーバーでプーリング • 例) pg_pool2 • 中間層を設けることで、プロセスを跨いでコネクションを共有できる ミドルウェアでプーリング Lambda実⾏環境でも実現可能 ※明⽰的に接続を閉じるタイミングが無いことに注意 Lambda実⾏環境では実現不可能 Lambda実⾏環境でも実現可能 ※メリットが出せるかどうかは別にして...
  14. 30 同時接続数の問題について • RDBには最⼤同時接続数のパラメータがある • 最⼤同時接続数を超える接続要求はエラーになる 例えばデフォルトの設定値を採⽤したAmazon Aurora PostgreSQLの 場合、最⼤同時接続数は以下のようになる

    インスタンスクラス max_connections db.r5.large 1600 db.r5.xlarge 3300 db.r5.2xlarge 5000 db.r5.4xlarge 5000 db.r5.12xlarge 5000 db.r5.24xlarge 5000 上限緩和申請無し状態での Lambdaの同時実⾏数上限 1000を上回っている
  15. 38 IPアドレスの枯渇について Lambdaのコンテナ1つにつき1つのENIを消費する訳では無い Micro VM Lambda関数 実⾏環境 (コンテナ) Worker Lambda関数

    実⾏環境 (コンテナ) Lambda関数 実⾏環境 (コンテナ) Lambda関数 実⾏環境 (コンテナ) ※EC2モデルの場合の例 Projected peak concurrent executions * (Memory in GB / 3GB) ENIキャパシティの計算式
  16. 41 コールドスタートの問題について (ENIの作成) コンテナの作成 デプロイパッケー ジのロード デプロイパッケー ジの展開 ランタイム 起動・初期化

    関数・メソッドの 実⾏ コンテナの破棄 20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 & Part2 https://www.slideshare.net/AmazonWebServicesJapan/20190402-aws-black-belt-online- seminar-lets-dive-deep-into-aws-lambda-part1-part2 VPC Lambdaの コールドスター ト時に発⽣
  17. 45 コールドスタートの改善について 画像はre:invent2018「 SRV409 A Serverless Journey: AWS Lambda Under

    the Hood 」の発表資料より引⽤ 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/ • コールドスタート時にENIを作成し てWorkerにアタッチする構成 • WorkerごとにIPアドレスを1つ消費 • Lambda関数作成時にENIを作成 • Worker外のRemoteNATというコン ポーネントでENIとのNAT処理を⾏ • 複数のWorkerで1つのENIを共有
  18. 46 コールドスタートの問題について • ENI作成を伴わなければ現状でもVPC Lambdaの初 期化処理は⼗分に⾼速 • VPC Lambdaの改善がリリースされれば、コール ドスタート時の⼤幅な遅延が無くなりそう︖︖

    • ENI作成を⾼速化するというアプローチでは無い ので、スケールアウト時の挙動は注意(予想です) • スパイクが想定されるワークロードには引き続き要注意︖︖
  19. 47 アジェンダ 無駄なコスト • Lambdaについて 5分 • VPC Lambda ×

    RDSのデメリットについて • VPC Lambdaと⾮VPC Lambdaについて • まとめ 3分 12分 2分
  20. 52