AWSでサーバレスを実装しようとした際の代表的なサービスにLambda(らむだ)があります。
今回は、本当に初心者向けの記事を書きたいと思います。
というのも、私も「Lambdaとは何ぞや?」ってところの基本中の基本が中々イメージがつかめず苦戦したので、備忘も兼ね記載しております。
■Lambdaとは?
AWS Lambda はサーバーをプロビジョニングしたり管理する必要なくコードを実行できるコンピューティングサービスです。 AWS Lambda は必要時にのみてコードを実行し、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケーリングします。使用したコンピューティング時間に対してのみお支払いいただきます-
いきなりLambdaの説明したのは「上記サイトだけをみてLambdaのイメージをつかめる人」用です。
私は残念ながらイメージすら掴めなかったので。笑
とうことで、まずは用語の説明をしたいと思います。
■サーバレスとは?
言葉通りにはなりますが、「サーバを用意しない」ことです。
もう少し詳細を話すと、本来何かしらの処理を行うためにはサーバが必要です。
「サーバ上でプログラムを書いて、実行して」というのが一般的でした。
この際、大変になるのはサーバを用意/運用/保守することです。
用意・・・CPU、メモリ、ディスク設計等、サーバを用意するにも考慮すべきことが多々あります。
運用/保守・・・スペック不足やパッチ適用等のメンテナンスが発生し、それが重荷になることが多々あります。
といった具合に、サーバがあることによる負担、弊害があります。
この負担、弊害から解放されるための概念が「サーバレス」です。
■ランタイムとは?
「プログラミング言語」のことです。「プラグラムを実行する環境」と読み替えてもらって差し支えないかと思います。
例としては、「ランタイムにPythonを選択する」というような使い方をします。
※PythonじゃなくてもNode.jsやJavaやC#等、Lambdaで使用できる言語は複数あります。
■トリガーとは?
トリガーとは、「Lambdaが受け取ったイベント」のことです。
流れは以下の感じです。
①とあるイベント発生
②Lambdaが受け取る
③lambdaに設定した処理が自動的に実行される
この際の上記①のことをトリガーと言います。
トリガーにはAWSサービスとして複数をサポートしており、
S3、SQS、SNS等色々あります。
■イベントとは?
トリガーのところでシレっと用語を出していますが、
イベントとは、「何かしらの状態」のことです。
例えば、
・S3にオブジェクトを登録した時
・CloudWatchEventに登録したスケジュール(ルール)を迎えた時
・SQSにキューが投入された時
等、何かしらの状態になった時にLambdaを動かしたい!みたいなときに使う用語です。
言葉を定義しようとすると混乱するのですが、例を見てもらうとわかりやすいかと思います。
■Lambdaの実体は?
少しLambdaの深い部分になりますが、サーバレスとはいえ、
Lambdaを動かしているサーバ自体は存在しています。
ユーザが意識する必要がないってだけです。
使用するプログラミング言語(やバージョン)によってサーバの種類が変わりますが、
主に、AmazonLinux、AmazonLinux2が利用されています。
■Lambdaのユースケースは?
Lambda を使用すると、画像のサムネイル作成、ビデオのコード変換、ファイルのインデックス作成、ログの処理、コンテンツの検証、およびデータの収集とフィルタリングをリアルタイムで実行できます。
このように、何かしらの状態になった時(=上記の場合、S3に画像がアップロードされた時)、Lambdaがそれを検知して、指定していた処理を実行する(=上記の場合、画像リサイズ)のように使用することができます。
■参考サイト
サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説 - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS
AWS Lambda(イベント発生時にコードを実行)| AWS
以上です。次回はLambdaを実際に使ってみたいと思います。