🐡

Lambdaで開発をする時に気をつけるシリーズ②

2022/04/22に公開約1,000字

お寝坊さん

みなさんどうも、jey_desunですん
どうですか?つかってますか?Lambda
さて、今日は言わずもがな、Lambdaを使おうとすると誰もが直面するあの問題についてです。

コールドスタート

https://aws.amazon.com/jp/blogs/news/operating-lambda-performance-optimization-part-1/
そうです、Lambdaは関数を実行するリクエストを受けてから動きだすまでに時間がかかるのです。
2回目以降というか、リクエストとリクエストの間が短ければ
パッと動くんですが、一回寝てしてしまうとこれはなかなかお寝坊さん😪

実際どれくらいかかるか

実際に使用しているLambdaで10数秒などかかることも!(実体験。数年前は起動するまでに40秒くらいかかってました)

APIなどで使用する場合

速度が求められるAPIなどでLambdaを使用する場合などには常にリクエストを一定に飛ばし、「寝る?よろしいならば寝かせないだ!」という酷な選択肢を取らなければいけません。
APIなどはhealthチェックがてらリクエスト飛ばすのがいいですね

寝かせなくても

寝かせないように、リクエストを一定飛ばしても、リクエストがババっときてしまった場合、新たな実行環境を作るため、結局コールドスタートが発生してしまいます。
なので、アクセス数が結構くるものであれば、さらなる設定としてProvisioned Concurrencyを設定してあげる必要があります。これも完全ではない

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/provisioned-concurrency.html

結論

どれだけLambdaのメモリを上げようが、並列処理を行おうが、関数の実行開始するまで自体が遅いので、「寝かせない」という酷な対応をLambdaにしてあげる必要がある。さらには影分身を覚えさせる必要もある。
精一杯、心の中で「ごめんねLambda、働いて?」という強い気持ちを持って接してあげましょう。そうしないと、里から巻物を盗まれる可能性があります

シリーズ一覧

https://zenn.dev/jey_desun/articles/a50d991c9e012d

Discussion

ログインするとコメントできます