サーバーレスとは何か? EC2とLambdaの違いも解説


「最近サーバーレスという言葉を聞くけど、サーバーレスって何だろう?」

「サーバーレスとは従来のサーバーとは何が違うの?」

この記事を読んでいる方は、そのような疑問を持っているのではないでしょうか?

サーバーレスとは最近注目を集めているアーキテクチャです。

特に有名なのがAWSのLambdaというサービスです。

では、サーバーレスとはどのようなアーキテクチャでしょうか?また、サーバーレスは従来のサーバーとは何が違うのでしょうか?

この記事ではサーバーレスアーキテクチャ、AWSのEC2とLambdaを用いてサーバーとサーバーレスの違いについて解説します。

サーバーレスアーキテクチャとは?

サーバーレスアーキテクチャとはサーバーを用意しなくとも、クラウドに処理を登録することで適切なサーバーを割り当て実行するアーキテクチャです。利用者はサーバーのリソースを意識することなく管理・運用することができます。

サーバーを利用するには、OS・DB・ネットワークのセットアップなど自分たちでサーバーの構築を行わなければなりません。また、稼働後も利用状況などを監視しながらピークに合わせてリソースを拡張するなど、サーバーの管理・運用が必要です。

ですがサーバーレスの場合は、登録した処理の実行に必要なサーバーやリソースをクラウドサービスで割り当ててくれるため、OS・DBなどのインストールなしにサービスを利用できます。また、サービスが自動でスケールするなどして、管理・運用が不要になるというメリットがあります。

サーバーレスアーキテクチャの1つにFaaS(Function as a Service)があります。 FaaSとは関数のコードを実装すれば、関数を実行する環境を提供するサーバーレスアーキテクチャです。一般的に、サーバーレスアーキテクチャといえばFaaSを指すことが多いです。

代表的なFaaSサービスには以下があります。

AWSサーバーレスプラットフォーム「Lambda」とは?

「Lambda」とはAWSが提供するFaaSサービスです。Lambdaでプログラミング言語を用いて関数を登録すると、プログラムを実行することができます。なお、Lambdaで使用できるプログラミング言語には、Java、Ruby、Python、Goなどがあります。

Lambdaのマネジメントコンソールでは、LambdaにアクセスできるAWSサービス、実行時間、使用するメモリ量、アクセス許可、セキュリティの設定などができます。また、実行ログのモニタリングはAmazon CloudWatchやAWS CloudTrailで可能です。

Lambdaの利用料金は従量課金制であり、実行したリクエスト料金とコンピューティング価格を支払う仕組みとなっています。また、無料利用枠もあり、一定の範囲内であれば無料で利用できます。詳細は以下の通りです。

  • リクエスト料金:リウエスト数が1,000,000件までは無料。1,000,000件ごとに0.2USD
  • コンピューティング価格:400,000GB/秒までは無料。400,000GB/秒を超えると1GB/秒につき0.00001667USD

具体例を紹介します。メモリ量として128MBを割り当て、処理を50,000,000回しました。1回あたりの処理時間が100ミリ秒とします。これを1ヶ月間実行した場合の利用料金は以下の通りです。

  • リクエスト料金:.0.2USD × (50,000,000回数 –  無料枠回数:1,000,000) /1,000,000 = 9.8USD
  • コンピューティング価格:((50,000,000回数 × 0.1秒 × 128MB/1024) – 無料利用枠:400,000GB) × 0.00001667USD = 3.75USD
  • 1ヶ月の料金:9.8USD + 3.75USD = 13.55USD

この例では、Lambdaの使用料金はわずか1,500円程度ということが分かります。

LambdaとEC2の違いは?

EC2とは?

EC2とは「Elastic Compute Cloud」の略称で、AWS上に仮想サーバーを構築できるサービスです。

EC2はインスタンスという単位で仮想サーバーを利用できます。インスタンスとはOSが搭載された仮想サーバーのことです。インスタンスを複数作成して動作させることもできます。

例えば、アプリケーションサーバーとデーターベースサーバーを別々に構築したいとき、2つのインスタンスを作成します。なお、数分で仮想サーバーを作成できます。また、運用開始後もCPUやメモリなどのマシンスペックも簡単に変更できます。

このため、近年はアプリケーションサーバーやWebサーバーの利用、オンプレミスのシステムをAWSに移植する事例など、EC2の利用が増えています。

LambdaとEC2の違いは?

ここではLambdaとEC2の違いについて解説します。

EC2はOSがインストールされた状態の仮想サーバーのため、システムとして利用するためには初期設定が必要です。データーベースソフトやHTTPサーバーソフトなどの各種ミドルウェアのインストールや設定、アカウントの作成や権限の設定などです。プログラムの動作に必要なインフラ環境を設定した後、初めてプログラムを動作させることができます。

また、アプリケーション実行環境の最適化や最新のパッチを適用するなど、運用上の考慮も必要です。このため、サーバー運用者にとっては手間とコストがかかります。

一方、LambdaはAWSにてプログラムの実行環境が用意されているため、利用者がインフラ環境を整備する必要がありません。また、LambdaではストレージやデータベースなどのAWSの各種サービスが用意されており、これらを組み合わせて利用できます。利用者が関数やトリガーなど管理画面から定義すれば実行可能です。

また、アプリケーション実行環境の最適化や最新パッチの適用など、これらの作業は全てAWSにて行ってくれます。このため、利用者はアプリケーションの開発に専念できます。

このため、EC2に比べるとLambdaはアプリケーションの構築が簡単です。

まとめ

この記事ではサーバーレスアーキテクチャ、AWSのEC2とLambdaを用いてサーバーとサーバーレスの違いについて解説しました。

サーバーレスアーキテクチャとは利用者自身で動作環境を整えることなく利用できるアーキテクチャです。代表的なアーキテクチャにFaaSがあります。

AWSのサーバーレスアーキテクチャのサービスとしてLambdaがあります。AWSの仮想サーバーのサービスであるEC2との違いは、EC2はOSやミドルウェアのセットアップを利用者自身で行わなければならないのに対して、Lambdaは予め用意されているため、利用者はプログラムの設定だけでアプリケーションを利用できます。

Lambdaは最近注目を集めているサービスです。無料利用枠もあるため、もし興味があれば実際にLambdaに触ってみるとよいでしょう。