lambdaの挙動を整理する
AWSの中でも使ってる人が多い、サーバーレスサービスのlambda。
普段、なんとなくfunctionを呼び出してるけど、中の仕組みってどうなってるんだ?と思ったので、復習の意味を兼ねてlambdaをもう一度勉強してみた。
そしたら案外しらない事もチラホラ・・・
なので今回はlambdaのトピックについて書きます。
lambdaの呼び出し方法
lambdaの呼び出し方法は主に同期と非同期とあります。
サービスによって決まっていて、任意で呼び出す場合はInvocationTypeを指定すれば選択出来ます。
同期
InvocationType=RequestResponseで呼び出す。
ELB、Cogito、APIGatewayとかから呼ぶ場合は同期。
同期の名前の通り、function実行してレスポンスを待って終了したら結果を返すパターン。
わかりやすいしすっと理解できると思います。上記のサービスで非同期とか考えづらいし納得しやすい。
非同期
InvocationType=Eventで呼び出す。
S3から呼ぶと非同期。
同期と違うのは、呼び出したらキューに突っ込んでから実行されます。キューに入った段階で成功になるので、実行結果はその時にはわかりません。
まぁS3から同期って考えづらいので、こういう仕様になってます。
普段当たり前のように使っていたけど、内部仕様を知ると勉強になりますね。
RDSとの相性
よく言われるRDSとの相性が悪いという話ですが、よっぽどlambdaをスケールしなければ問題ない感じでした。
10くらいの多重起動じゃパフォーマンスが問題になることはなかったです。
ここらへん、少しはコネクションプールされるような仕組みが、こちらのリージョンに来るとか来ないとか・・・
気にするのなら素直にDynamoDBを使いましょう。Dynamo早くて優秀。
lambda、もっと使っていきたいですが、各サービスから呼ばれるとIAMの管理めんどそう・・・
S3から呼び出すスタンダードやり方以外にも模索していきたいですね。