怠惰系エンジニアのメモ帳

勉強した内容をメモしていきます。解説ブログではないので悪しからず。

AWS Lambdaメモ -その1-

今更ながらAWS Lambdaについて勉強しているので、現時点で分かっていることを書き起こしてみようと思います。 とりあえず、今回は概要をツラツラを書くだけで、コードとかは無しです。 今後もLambdaの勉強は継続していくので、メモその1ということで。

記載内容に間違いなどありましたら、ご指摘いただけると幸いです。

AWS Lambdaとは

2014年にリリースされたAmazon Web Serviceのサービスの1つで、 ざっくり言うと 「何かしらのイベントをキッカケに、定義しておいたコード(処理)を実行する環境」を提供しているサービス です。(正直、最初はピンときてませんでした...) 勿論、処理とキッカケ(トリガー)は事前に紐付けしておく必要があります。

公式サイトには以下のように記載されています。

AWS Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを実行できるコンピューティングサービスです。AWS Lambda は必要に応じてコードを実行し、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケーリングします。

AWS Lambda とは - AWS Lambda より引用

また、Wikipedia には以下のように記されています。

AWS LambdaはAmazonAmazon Web Servicesの一部として提供する、イベント駆動のサーバーレスコンピューティングプラットフォームです。

※サーバーレスについては後述。

サーバーレス(Serverless)とは

サーバーレスとは「処理を実行するためのサーバが不要」というわけではなく、 「サーバーを自前で用意しなくてもいい」 ということです。 サーバーの用意や運用を意識せずに、行いたい処理だけに注力することができます。

勿論裏ではサーバがあり、そのプラットフォーム上で処理が実行されていることになります。(コンテナ上で処理が走っている) ログ監視やスケーリングなども自動的に行ってくれるので、ユーザは「処理」だけ意識していれば良くなります。

初めて「サーバレス」という単語を聞いた時は 「サーバが不要なわけないやん...」 と思いました。

AWS Lambdaだと何が嬉しいのか

端的に言うと 「きっかけ」と「処理」さえ定義すれば、やりたいことを実現できる点 です。

先程記載した通り「何かしらのイベントをキッカケに、定義しておいたコード(処理)を実行する」のがLambdaなわけですが、この 「イベントをキッカケに、処理を実行する」(イベント駆動) という部分がLambdaのミソだと思っています。

例えば「画像がアップロードされたら、リサイズした画像を返却する」という処理を行いたいとします。 通常であれば、

  1. 画像がアップロードされたことを検知する仕組みを作る
  2. 検知されたことを通知する仕組みを作る
  3. 画像をリサイズし、返却する仕組みを作る

といったことが必要になると思います。
ただ、ここでやりたいのは「画像をリサイズして返却する」ことであって、1や2は本質ではありません。 あくまで「画像をリサイズして返却する」ために必要となる仕組みの話です。

AWS Lambdaを利用すれば、1や2のような仕組みを作成することなく、リサイズした画像を返却することが可能になります。「画像がアップロードされる」というイベントに対して、「画像をリサイズして返却する」という処理を紐付けてあげればいいだけです。「画像がアップロードされたことを検知する」「検知したことを通知する」のはAWSが行ってくれます。

便利ですね。

ユースケース

REST API に利用されるケースがほとんどでしょうか? (正直、ユースケースが思いつかない...)

Lambdaに限らず、AWSはサービス間の連携が強いイメージなので、 その辺を上手く組み合わせることで様々なことができそうですね。

まとめ

  • AWS Lambdaは何かを「きっかけ」に「処理」を行うプラットフォーム
  • サーバーレスなので、「処理」に注力できる
  • サーバーレスとは「サーバの用意・運用が不要」ということ

今回はここまで。