サーバレスといえばLambda(ラムダ)をイメージする方も多いのではないでしょうか。でも、そもそもLambdaってどんなものなのか?よくわからん、、、という方に向けて今回はLambdaとはなんぞや?というコトについて解説したいと思います。
結論(というか特徴)
- サーバレスで実行できる
- Python、Java、node.jsなどでプログラムが書ける
- 秒単位の従量課金
- 並列実行できる(自動スケーリングしてくれる)
サーバレスで実行できる
最大の特徴がサーバレスアーキテクチャであることですね。
EC2やレンタルサーバのようなサーバを使用せずプログラムが実行できる、というのが売りなわけです。
つまり、セキュリティアップデートがあったからOSのパッチ当てなきゃ!とかストレージ容量が足りないから拡張するかログ圧縮する、とかそういった面倒な運用作業が一切いらないわけです。
そういった意味で、非常に楽なソリューションといえるわけですね。
実態はLambdaもプログラムですから、AWSが管理するサーバ上で実行はされている形になりますがそのサーバの管理を全てAWSがやってくれる感じです。
サーバの運用なしで実行でき、イベントフックすることができるので例えばWebページのリクエスト(Webページを開こうとしたとき)が来た時に起動してユーザにWeb画面を返す、とかもできます。
S3のPutEventなども起動条件にすることが可能なので、S3にファイルが配置されたらそのファイルを圧縮する、とかも行えます。
Python、Java、node.jsなどでプログラムが書ける
2020/05/31時点で、
- Node.js
- Python
- Ruby
- Java
- Go
- C#
に対応しています。
この中の言語でプログラムを書くと、その書いた内容をLambdaが実行してくれます。比較的幅広い言語をサポートしてますね。
ちなみに小技を使うとOSのコマンド(Linux)を使うこともできます。
実際に利用する際は自分の好きな言語を使って使ってみましょう!
なお、注意点として言語そのもののサポートがなくなる場合Lambdaもサポートされなくなる事があるため注意が必要です。
この場合は作成したプログラムが新バージョンで動作するかどうか検証を行い、必要な対応をしましょう。
秒単位の従量課金
料金は秒単位で課金されます。
Lambdaは処理能力(割り当てるメモリ量がベース)を利用者が設定することができ、割り当てたメモリ量に応じて基本料金が決まります。
そこに、イベントフックから処理終了までの時間を掛けて料金を算出する仕組みです。つまり、1回呼び出される毎にお金がかかる感じですね。
スケーリングして同時起動もされるため、DOSなどに晒されて大量に実行されると思わぬ料金がかかることがあるので注意が必要です。
詳しい料金計算などはこちらをどうぞ。
並列実行できる(自動スケーリングしてくれる)
同時にイベントが発生した場合はLambdaは自動でスケーリングし、複数同時実行してくれます。一応、初期で同時1000までとなっていますが足りない場合はAWSに相談すると上限引き上げしてもらうこともあります。
とはいえ、同時1000を超えるような大規模な環境だと料金も馬鹿にならないのでその点は注意しておいたほうがよいでしょう。
一時的に負荷が上がる場合、オンプレ等ではサーバスペックを予め上げておいて(設計時に予測できる最大値を処理できるスペックにする)備えることが多いですが閑散期とかは無駄ですよね!
Lambdaは、必要だけ動く&自動でスケーリングしてくれるので効率的!
起動していない時間はお金もかかりません!
逆に、相当量の処理を継続して実行し続ける場合はEC2でインスタンスを作成し常時実行させておいたほうがコストパフォマンスは良い場合もありますのでどちらを選択するかは検討したほうがよいでしょう。
まとめ
Lambdaは手軽に利用できるので、とりあえず作ってみて動かしてみるといいと思いますよ!
1個動かすのであれば全然コストもかかりませんから。
また、開発者向けツールを使えばPC(ローカル環境)でも実行動作を見ることができますのでそちらを利用しても良いと思います!
何にせよ実際に使ってみるとより一層イメージが付きやすいと思いますので、興味があれば是非一度触ってみることをオススメします!