みなさん、こんばんは。ご無沙汰しています。新人のRenです。
今日はLambdaについて簡単に学んだことをお伝えします。
AWS Lambdaとは、AWSが提供するFaaS(クラウドサービスの1種、いわゆるサーバーレス)のサービスであり、クラウド上にプログラムを定義しておくことで、インターネットを通じてプログラムを実行できるサービスです。つまり、利用者側はプログラムコードを用意して、Lambdaに設定するだけでプログラムの実行が可能となります。
サーバーレスのメリット
サーバーレス、つまりサーバー管理から解放されることが1番のメリットと言えます。サーバーがある場合は、コンピュータ資源の初期設定や管理を行う必要があり面倒です。サーバーの管理から解放されるので、運用・保守・サーバーそのもののコストを削減できます。また、オートスケールによりリソースが自動的に増減するので、無駄をなくすことができ、コードを書くだけの効率的なシステム開発につながります。
AWS Lambdaの基本的な使い方
AWS Lambdaは基本的に、AWSの他のサービスと組み合わせて利用します。Lambdaは、「何らかのイベントが起こったら、あらかじめ設定していたプログラムが実行される」という仕組みなので、利用時にはトリガーに対する対応をあらかじめ設定します。トリガーへの対応は主に2つあります。
・トリガーと同期して関数を起動するもの・・・①
・トリガーを検知して、非同期で関数を実行するもの・・・②
①は、代表的なサービスとしては、Cognito、API Gatewayなど該当します。
②は、代表的なサービスとしては、Amazon S3、CloudWatch Logs、CloudWatch Eventsなどが該当します。
メリット
AWS Lambdaの主なメリットは下記の通りになります。
・安い
毎月100万件の実行は無料でできます
・高速開発が可能である
準備したコードを実行するだけです
・仮想サーバの保守・運用が不要
AWS側が管理しているので、利用者が保守・運用をする必要がありません
・人的コストの改善
保守・運用にかかっていたコストをすべて削減できます
・AWSのサービスとサービスを疎結合につなげることが簡単にできる
例:S3やDynamoDBのデータ更新をトリガーにLambdaを起動する
・疎結合で障害が起きても影響を極小化できる
疎結合(アプリ同士の関係性を薄くした独立性の強い結びつけ)の利点です
・実行トリガーとなる関数が多い
SNS、DataDog(監視サービス)とも連携可能です
・選択できるプログラミング言語が豊富
「カスタムオンライン」という機能を使えば、一般的な言語以外も使用可能です
その他の使い道
プログラミング言語の実行以外にも様々な使い方があります。非常に便利な使い方に下記のようなものがあります。
・データ処理やファイル連携
・認証やアクセス権の実行
・ログの抽出
・EC2との連携
「利用料が一定ラインを越えたら停止させる」など
要件に合わせた使い方をすることで、最大限の効果を発揮できます。
まとめ
Lambdaは「サーバーレスの関数置き場」というイメージです。様々な使い道、特徴、メリットがあります。特に、利用料金が安く、障害が起きにくいため、安く安定したアプリケーションを作ることが可能です。Lambdaの使い方を知れば知るほど便利になるサービスなので、是非利用してみてください!