サーバーレスでプログラムを実行できる「AWS Lambda」とは

通常、プログラムを実行するためには、サーバーOSやアプリケーションサーバーソフトウェアと環境設定が必要です。こうした実行環境の準備の手間を大幅に削減してくれるのが、「AWS Lambda(ラムダ)」です。今回は、AWS Lambdaについて解説します。

AWS Lambdaとは

AWS Lambdaとは、サーバーレスでプログラムを実行できる環境を提供するAWSのサービスのことです。通常、プログラムを開発・実行するためには、サーバーOSやアプリケーションサーバーソフトウェアを準備し、実行するためにサーバーやインスタンスを起動し続ける必要があります。こうした環境がすべてあらかじめ準備されているのが、AWS Lambdaです。セキュリティの設定、モニタリングといったサービスもAWS Lambdaに含まれているため、ユーザーは実行するプログラムを作成して登録するだけです。開発者は、プログラムを準備してLambda関数として作成して登録しさえすればよく、実行プログラムを動作させるための環境の準備も、その環境のパッチの提供といったメンテナンスやセキュリティ管理も必要ありません。とても魅力的な AWS Lambda ですが、Amazon EC2 とは何が違うのでしょうか?

Amazon EC2が提供するのは、あくまで仮想サーバーです。ユーザーはAmazon EC2 の仮想サーバーの上にOSやミドルウエア、アプリケーションをインストールし、そのメンテナンスも自身で行う必要があります。しかしながら、仮想サーバー上で動作させるミドルウエアやアプリケーションに制限はありません。AWS Lambdaは、OSやミドルウエア、アプリケーションをインストールするといった管理の手間を省く一方で、その用途をプログラム開発に限定しているのです。

AWS Lambdaは、可用性が高く耐障害性に優れたAWSのプラットフォーム上で動作します。各リージョンの複数のアベイラビリティゾーンで動作しているため、信頼性の高い運用パフォーマンスを提供することができます。メンテナンス目的のサーバー停止や定期的なダウンタイムもなく、高品質のサービス提供を実現できます。

AWS Lambdaで実現できること

AWS Lambdaの特徴として、何らかのイベントなどをトリガーとして自動的にプログラムコードが実行されることが挙げられます。AWS Lambdaで実行するコードは「Lambda 関数」と呼ばれます。開発言語は、Node.js、Java、C#、Pythonに対応しています。AWS Lambdaを利用するからといって、新たに特別なプログラミング言語やフレームワークを習得する必要はありません。使い慣れた開発言語を使って、プログラムを作成することができます。

具体的に開発できるプログラムは、AWSに対するイベントをトリガーに実行されるものをイメージするとよいでしょう。具体的には、以下のような処理が考えられます。

Amazon S3へのファイルアップロード時にファイル処理を行う
リアルタイムにストリーミングデータを処理する
データベース内のデータ変更要求に対して、検証やフィルタリング処理を行う
IoT環境などにおけるバックエンド処理を行う

例えば、「Amazon S3」に対してファイルをアップロードした際に、これをトリガーとしてAWS Lambdaが画像リサイズ処理を実行し、Webサイトやモバイルサイト用に最適な画像に変換する仕組みが挙げられます。画像のサムネイルを作成したり、インデックス処理を施したりすることができます。

実際に、ある新聞社では新聞の電子版について、AWS Lambdaの画像処理の機能を利用しています。電子版の新聞に対するアクセスが集中すれば、AWS Lambdaには瞬間的にサーバー換算で数万台分の処理が求められます。処理能力の拡張は自動的に行われるため、スケーラビリティが高いうえに運用管理が簡単であり、開発効率も高めています。

このような画像処理の自動化は、ゲームについても応用されています。ゲームについても特定のイベントなどで一時的に負荷が大きくなる傾向がありますが、年数回のイベントのためだけにサーバーを増強することは現実的ではありません。同時に、高い処理能力も求められます。あるゲーム会社では、AWS Lambdaを使うことで、従来は数時間かかっていた処理をわずか10数秒で完了させるとともに、オンプレミスと比較してコストを1/20にまで削減できたといいます。

画像処理以外にも、POSデータ集中処理システムをAWS Lambdaで実現した小売店の例もあります。高い生産性が求められ、変化が速いビジネスの現場では、プログラム開発を伴うシステム開発を求められることが多いでしょう。サーバーレスでプログラム開発ができるAWS Lambdaを使うことで、企業の競争力を高めることにも期待が持てます。

AWS Lambdaの料金体系

AWS Lambdaの料金は、プログラムコードが実行に移されない限り発生しません。リクエスト数と実行に移されたときのコンピューティング時間に対して料金が発生する仕組みとなっています。このため、サーバーの運用コストはかからないほか、プログラムを作成するだけでは料金は発生しません。一方で、Amazon EC2の場合は、プログラムの動作に関係なく、仮想サーバーを構築した段階で、費用が発生します。プログラムが動いた場合にのみ料金がかかる仕組みになっているため、プログラム管理にかかるコストを大幅に削減することができるのです。

リクエスト数に対する金額は、100万リクエストにつき0.2USドルという低価格となっています。しかも、1か月につき100万リクエストまでは無料で使うことができます。実行に移されたときのコンピューティング時間についても、月間400,000 GB-秒のコンピューティング時間が無料です。ただし、Lambda関数に割り当てたメモリ容量によって無料で使うことができる時間は異なりますので、注意しましょう。

このように、AWS Lambdaがリクエスト数と実行に移されたときのコンピューティング時間に応じて従量課金されることは、大規模システムではコストメリットが大きくなります。負荷が集中した際などに高いスペックが求められることがありますが、割り当てたメモリの範囲内であればリソースの割り当ては自動的に行われ、追加料金は発生しないからです。

料金はすべて2019年8月現在の設定です。

最新の料金につきましては、AWSの公式サイト別ウィンドウで開きますをご覧ください。

サーバーレスプログラミングを実現するAWS Lambda

AWS上でシステムを構築し、効率的に運営していくためには、プログラミングの手法を使った自動化が求められることがあるでしょう。しかし、どんな小さなプログラムでもハードウエアやOSなどのプラットフォームが必要となり、そのコスト負担や運用の手間は決して小さくありません。

AWS Lambdaを使えば、サーバーレスでプログラミング環境を開発、実行することができます。しかも、提供されるプラットフォームはセキュリティ強度が高く、処理能力を左右するスケーラビリティにも優れます。AWSで提供するサービスを効率化し、拡張性を持たせたいのであればAWS Lambdaを検討してみてはいかがでしょうか。

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る