Lambdaとはサーバーレスサービスです。サーバーレスとはサーバーを自身で管理する必要がなくなるということです。サーバーを管理するのはサーバーレスを提供しているクラウドサービスです。こちらの記事で詳しくサーバーレスについて解説していますのでご参照ください。
https://envader.plus/article/36
今回はサーバーレスサービス(FaaS)の一種Lambdaについて解説します。
Lambdaとは
冒頭で記述した通りLambdaとはサーバレスサービスの一種です。具体的にLambdaは、プログラムを実行する環境を提供しているサービスです。サーバーなどの管理はAWSが管理するので利用者はプログラムだけに注力して開発することができます。
なぜLambdaか?
Amazon EC2との違いはEC2は仮想サーバーで利用者はミドルウェアやアプリケーションサーバーなどのインストールしなければいけません。Amazon EC2はサーバーを利用している時間単位で課金計算されます。
その点、AWS Lambdaはプログラムを実行できる環境を提供しているのでソフトウェアのインストールを利用者が行う必要がありません。課金対象はプログラムを実行している時間で計算されます。
Lambdaのメリット
- 保守、運用、管理の負担がない
- 従量課金制
- 自動スケーリング
- 様々なトリガーがある
- サポート言語が豊富
- カスタムランタイム
保守、運用、管理の負担がない
Lambdaは実行環境がAWSによって用意されるため、OSやフレームワークなどの保守は必要としません。サーバやミドルウェアの管理を自分ですることなく、サーバの運用もAWS側が負担するので保守、運用に手間がかかりません。
従量課金制
AWSは基本従量課金制でLambdaはリクエストがあった時間だけが課金対象となるため稼働中はずっとコストが生じるEC2インスタンスでの運用に比べて、無駄のないコスト運用ができます。
自動スケーリング
自動スケーリングは、負荷に応じてリソースを自動的に追加および削除できる機能です。 Lambdaでもリクエストに応じて自動でスケーリングします。リクエスト数に上限はありません。
様々なトリガーがある
Lambda関数の作成には追加料金はかかりません。また実行トリガーとなる関数も豊富なので様々な改善や障害に素早く対応できます。
サポート言語が豊富
選択できるサポート言語も豊富にあります。一般的に使用されているプログラミング言語Java,Ruby,Pythonなど選択できます。サポートされていない言語も次で説明するカスタムランタイムという機能で使用可能になります。
カスタムランタイム
AWS LambdaでいうカスタムランタイムとはLambdaでサポートされていない言語、すなわちどのプログラミング言語でも実装することができるということです。ランタイムは関数が呼び出されたときに Lambda 関数のハンドラメソッドを実行するプログラムです。関数のセットアップコードの実行、環境変数からのハンドラ名の読み取りLambda ランタイム API からの呼び出しイベントの読み取りを行います。そしてイベントデータを関数ハンドラに渡し、ハンドラからのレスポンスを Lambda に戻します。
AWS Lambdaでサポートされているランタイムと非推奨とされているランタイムを紹介します。(2022年12月現在)
サポートランタイム | 非推奨ランタイム |
---|---|
Python 3.9 | Python 3.6 |
Python 3.8 | Python 2.7 |
Python 3.7 | .NET Core 2.1 |
Ruby 2.7 | Ruby 2.5 |
Node.js 16 | Node.js 10 |
Node.js 14 | Node.js 8.10 |
Node.js 12 | Node.js 4.3 |
.NET Core 3.1 | Node.js 6.10 |
.NET 6 | .NET Core 1.0 |
.NET 5 | .NET Core 2.0 |
Java 11 | Node.js 4.3 Edge |
Java 8 | Node.js 0.10 |
Go 1.x |
Lambdaデメリット
- 実行時間上限が15分
- 同時実行数、実行時間の制限
- エラー解析が複雑
- Labda単体で使用できない
実行時間上限が15分(900秒)
Lambdaの実行時間は15分以内です。そのため、15分以上の時間がかかる処理を実行することができません。処理時間が15分以上にならないよう処理を分割して並列化する処理設計が必要です。とはいえ、並列化すると次に説明する同時実行数の制限に引っかかる可能性があるのでこの点も考慮しながら対応しなければなりません。
同時実行数、実行時間の制限
同時実行数とは1秒間に同時に実行することができる関数の上限のことです。例えば、Lambdaの場合、実行に10秒かかる関数が毎秒1件ずつ起動される場合は、最大の同時実行数が10となります。Lambdaでは上限値は同一アカウントの同一リージョン内で1,000までとなっています。上限に達すると、それ以上の関数の呼び出しは制限されます。
エラー解析が複雑
ランタイムの大部分がLambda内部に隠蔽されているため、問題が発生した時の解析が難しくなります。
Lambda単体で使用できない
Lambda関数を実行するには、他のサービスリソースで処理を起動させるきっかけとなるトリガーを設定する必要があります。
他のサービスリソース例
-
Event Bridge
AWSリソースの状態変化への対応に役立ちます。例えば、Lambda 関数を自動的に呼び出しEC2インスタンスの状態を記録することができます。
-
Amazon S3 (Amazon Simple Storage Service)
オブジェクトに関する詳細を含むイベントで関数を呼び出します。なのでオブジェクトを作成または削除するときに、イベントを Lambda 関数に送信できます。
-
Amazon DynamoDB
Lambda 関数を使用して、Amazon DynamoDBのレコードを処理します。DynamoDB テーブルが更新されるたびに追加の作業を実行することができます。
サーバレスであるLambdaが解決する問題・課題
ITシステムのアジリティを向上させやすくなりコスト面、開発時間を踏まえて、新開発のチャレンジをしやすくなります。また自動でスケールされため、冗長化の考慮、対応などは最小限で済むようになります。なんといっても、サーバーの構築や運用、保守にかかる手間が不要となりサーバーダウンによる障害対応などが軽減されるので開発全体の負担が軽減になります。
まとめ
今回はサーバーレスサービスであるLambdaについて紹介しました。Lambdaは、EC2インスタンスのような仮想サーバーを必要としません。プログラム実行環境は、AWSによって用意されます。そのため、サーバーの保守・運用をする必要がありません。また豊富なトリガーやサポート言語が用意されています。必要に応じてEC2インスタンスとLambdaをうまく利用して、より安くより良い方法で開発を進めていきましょう。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.04.14
合格するための勉強方法は?AWS プロフェッショナル DOP取得ガイド
今回は、「AWSプロフェッショナルDOP試験に合格するための勉強方法」について解説します。受験するにあたって知っておきたい「試験概要」や「合格のために意識したいポイント」も紹介しているので、ぜひ参考にしてください。
- AWS
- 資格
2023.10.31
TerraformとEventBridge Schedulerを活用したEC2インスタンスの時限起動によるコスト削減
EC2インスタンスを指定した時間帯だけ起動・停止するスケジュールの設定方法などを説明しています。
- AWS
2024.02.27
AWS ALBとAzure Application Gatewayの違い
この記事では、クラウドコンピューティングの二大巨頭、Amazon Web Services (AWS) の Application Load Balancer (ALB) と Microsoft Azure の Application Gateway (アプリケーションゲートウェイ)の間で、Web アプリケーション向けのロードバランサーサービスを比較します。
- AWS
- Azure