📐

「AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる LambdaとRDS Proxy」に参加してLTしました。

2021/10/11に公開

最近はVPC Lambda使ってない人です。


10/2にAWSのエバンジェリスト亀田さん主催の勉強会「AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる LambdaとRDS Proxy」でLTをしました。
https://awsbasics.connpass.com/event/221807/

発表資料はこちらです。
https://speakerdeck.com/kwada/awsbasics-rds-proxy-9de3d31b-e99e-4893-9f22-83e3da961557

内容自体は、2020年8月27日にJAWS UG千葉支部の勉強会でLTした際の内容にちょっと加筆したものです。

LTでも話しましたが、RDS ProxyがGAになったのが2020年7月1日で、本の出版が7月22日、最終チェックしてるぐらいだったんですが、RDS Proxyはプレビューです的な記述を急いで消した思い出のあるRDS Proxyになります。
宣伝です
途中でre:inventも開催されるので、色々変わるだろうな。と思いつつ、執筆続けてましたが、本当色々変わって大変でした。いい経験にはなりましたが。。。あとはびっくりするぐらい誤字とか文字の揺らぎが多くて、最後までその修正に追われてました(自分が信じられなくなった人です)。

久々のRDS Proxy

LTしたものの、実は実業務でRDS Proxy使うことがないので、RDS Proxy使うの久々でした。
余裕があれば、LTの内容もう1回やっておこうと思ったんですが、ちょっと時間がなく・・・。

勉強会参加して

上記の通り、RDS Proxy使うの久々だったので、新鮮な気分で

Cloud9の使い方

ということで、久々のRDS Proxyでした。
RDS Proxyというか、RDSを使うにあたって、テーブル作成とかどうするのかなと思っていたのですが、今回のハンズオンでは、Cloud9を使いました。
説明によると、Cloud9にMariaDBのクライアントが入っているので、そのままMySQLなRDSに接続できるんですね。
あー、踏み台兼MySQL Client用にEC2インスタンス起動してでやるよりは楽だなぁーって思った人です。
まあ、実態は裏でEC2インスタンス起動してますが、ブラウザ上でできるので、その分考えても楽ですね。今後、検証とかでRDS Proxy使う際は、Cloud9をMySQLクライアントしたいと思います。

Lambdaが使うENIについて思い出したこと

VPC Lambdaの場合、VPC内のリソースにアクセスするために、ENIが必要なんですが、2019年のアップデート以前は、Lambda関数の起動時に作成していたため、コールドスタート時に時間がかかるという事象がありましたが、2019年のアップデートで、作成タイミングが関数作成時に変わったため、関数作成時に時間かかるようになりましたが、起動は高速になりました(無論多数起動した場合は、ENI作成が発生するため、遅くなることはありますね)。
作成されるENIですが、どこに紐付けられるかと言うとSecurityGroupに紐付けられますね。同じセキュリティグループを使うLambda関数を2つ作ると2つ目の起動は1つ目より速くなります。

arm64(AWS Graviton2コア)なLambdaにしてみた

ハンズオンに直前9月29日に、Lambda関数でAWS独自のArm CPUであるAWS Graviton2プロセッサを使った関数を作成することができるようになりました。

https://aws.amazon.com/jp/blogs/news/aws-lambda-functions-powered-by-aws-graviton2-processor-run-your-functions-on-arm-and-get-up-to-34-better-price-performance/

あれ、場合によってはAWS Graviton2プロセッサ使ってると思ってたんですが、めっちゃ誤解だったみたいです。
で、上記の複数Lambda作った時起動速くなるよなーというのの確認ついでに、ハンズオンで作ったLambdaをもう1つ作り、その際アーキテクチャをarm64にしてみました。
アーキテクチャ選択

関数一覧

本来はarm64対応でビルドしたライブラリ等を用意するのがいいんでしょうが、今回は単純に切り替えただけなので、参考程度にお考えください。

6回(毎回DB接続先を変えているので1回目はコールドスタートになるため)実行して、残り5回で最小、最大、平均値を出しています。

※CS : Cold Start

x86_64

1回目 RDS Proxyなし RDS Proxyあり 2回目 RDS Proxyなし RDS Proxyあり 3回目 RDS Proxyなし RDS Proxyあり
cs 1368.6 1322.82 cs 1461.92 1477.74 cs 1522.81 1487.67
230.61 131.19 59.29 62.68 78.42 48
262.46 188.96 17.82 35.51 26.74 21.69
42.27 25.31 29.47 35.28 20.5 38.79
40.67 31.33 25.13 28.24 36.94 41.17
29.06 41.43 30.66 41.92 37.62 18.25
最大値 1368.6 1322.82 最大値 1461.92 1477.74 最大値 1522.81 1487.67
最小値 29.06 25.31 最小値 17.82 28.24 最小値 20.5 18.25
平均値 192.0033333 130.97 平均値 48.18333333 58.46333333 平均値 59.90666667 49.88333333

arm64

1回目 RDS Proxyなし RDS Proxyあり 2回目 RDS Proxyなし RDS Proxyあり 3回目 RDS Proxyなし RDS Proxyあり
cs 1251.4 1389.47 cs 1399.41 1397.25 cs 1369.1 1419.66
223.81 203.06 40.1 58.99 49.73 41.33
203.44 241.85 38.31 30.48 41.49 23.39
25.02 18.88 18.23 35.81 45.38 20.03
19.22 21.29 8.03 20.8 12.53 22.24
26.27 15.96 25.93 199.66 18.57 22.41
最大値 1251.4 1389.47 最大値 1399.41 1397.25 最大値 1369.1 1419.66
最小値 19.22 15.96 最小値 8.03 20.8 最小値 12.53 20.03
平均値 159.5133333 161.6933333 平均値 40.85666667 108.3133333 平均値 51.72333333 36.45666667

単純にアーキテクチャを換えただけでしたが、概ねarm64の方が、実行速度は早いのかなーという感じがしました。
前提条件にも書きましたが、単純に切り替えたので、ちゃんと
JavaとかGoとかでarm64対応したデプロイモジュール作ってやるのがいいのかもしれませんが、
とりあえずは、上記記事の内容でもやってみようかなと思います。

次回は、翌週(先日)の「AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる Grafana」ではまった点になると思います。

Discussion