AWS lambdaとは?サーバレスコンピューティングを解説

この記事を読むと以下の3つのことがわかります。
①サーバレスコンピューティングとはなにか?
②サーバレスコンピューティングにはどのようなメリットがあるのか?
③AWS Lambdaとはどのようなサービスか?

2010年代後半から、「サーバレス」という言葉を耳にするようになりました。2014年にはAmazonがAWS lambdaのサービスを開始。2020年に入りクラウド環境への以降が加速する中、サーバレスコンピューティングが注目されています。今回の記事では、サーバレスコンピューティングとは一体なにか、AWS lambdaサービスの特徴、そしてそれらを使うことによるメリットとデメリットをご紹介します。

サーバレスコンピューティング

一昔前まで、アプリを開発する際にはまずサーバを構築しなければなりませんでした。開発チームは要件を伝えて、システム管理者やインフラエンジニアが数時間・場合によっては数日かけてサーバを構築することが当たり前でした。プロジェクトが始まってから、コードを実行できるようになるまで数日かかるのは常識だったのです。しかし、現在では「DevOps」と呼ばれる開発/運用手法によりその考え方が大きく変わりました。DevOpsでは、開発に携わるメンバーと運用に携わるメンバーが同じチームに参加することで、同じゴールを目指して効率よくシステムを作り上げることができます。また、現在の技術を使えば、これまで数日かかっていたサーバの準備は数分で終えることができます。またAPIを呼び出して構築することができれば、Ansibleのような構築自動化ツールを利用することもできます。しかし、それで終わりではありません。今回紹介する「サーバレスコンピューティング」は、これまで必要だったサーバの構築をそもそも意識することなく、サービス開発に取り掛かることができます。信じられるでしょうか?それでは、一体なぜそんなことが可能なのか見ていきましょう。

「サーバレス」の意味

「サーバレス」という英語をそのまま日本語に翻訳すると、「サーバなし」。つまりサーバが存在しないという意味になります。しかし、実際には本当にサーバが存在しないわけではありません。実際にコードを実行するにはサーバが必要です。サーバレスコンピューティングでは、開発・運用者がサーバを意識することなくコーディングすることができます。開発されたコードは、今回紹介するAWS lambdaのようなサーバレスコンピューティングサービスを提供するプラットフォームにアップロードすることで即時実行できるようになるのです。

サーバレスコンピューティングのメリット

サーバを意識することなく開発・運用ができると、どのようなメリットを得られるのでしょうか。最初に間違いなく挙げられるのは、「コストの削減」でしょう。これまで行っていたサーバの構築・メンテナンスの必要がなくなるため、それに伴う人的リソースや物理的なサーバの購入費用、サーバを配置するために必要だったハウジングの費用など多くのコストを削減することができます。また、運用においても実際に処理されたリクエスト分だけの料金が課金されます。これはこれまでリクエストがなくても一定額だった時代に比べ効率もよく、かつ費用も抑えられる画期的なメリットといえます。
また、「開発速度」も大きなメリットの1つといえるでしょう。すでに記述したとおり、コードをアップロードすればすぐに実行可能なので、現代主流といえるアジャイル方式での開発に向いています。
「スケーリングの簡単さ」も言及せずにはいられません。これまでは、アクセスのピークを考慮して物理サーバのリソースを決定する必要があったため、ピーク時以外の時間帯にはリソースに無駄が発生することがありました。しかし、サーバレスにすることによって、その時のアクセス状況に応じたリソース割当をすることが可能です。いつ、スペックオーバーしてしまうのかを心配する必要はもうありません。

サーバレスコンピューティングのデメリット

ここまで紹介してきた通り、サーバレスコンピューティング多くのメリットをもたらしてくれますが、どんな技術にも認識しておくべき次項があります。まず知っておくべきことは、サーバレスにすることによって実行速度が落ちる可能性がある、ということです。サーバレスコンピューティングでは、実行したい処理が呼び出される度に、それに必要な環境を都度自動的に割り当てることで効率的なリソース配分を実現しています。もし実行する処理がしばらく呼び出されていない状態であれば、その処理に必要な環境はシャットダウンされてしまいます。再度呼び出しがある場合には改めて環境を作るところから始まるため、結果として実行時間が長くなる可能性があります。もう一つ認識しておくべきことは、処理が長い関数は短い処理に比べて効率的でなくなる、という点です。前述の通り、サーバレスコンピューティングでは処理が実行されている時間分のみ課金されるというシステムです。処理が長い関数を作る、ということはその分課金される時間が増える、ということですので、結果としてオンプレミスの場合と比べた差が小さくなってしまう可能性があります。関数はなるべく短くなるように開発することが望ましいでしょう。

以上を考慮しても、サーバレスコンピューティングを利用することで得られるメリットは膨大です。ここからは、代表的なサーバレスコンピューティングサービスの1つである、AWS Lambdaをご紹介します。

AWS Lambdaの紹介

AWS LambdaはAmazonが提供するサーバレスコンピューティングサービスです。前述のとおり、2014年よりサービス提供が開始されました。実行環境を意識することなく「実行したい処理」のみを開発するコードを動かすことができます。AWS Lambdaではこの「実行したい処理」を「関数」や「ラムダ関数」と呼んでおり、データの変更、システムステータスの遷移、ユーザーによるアクションを含む様々なトリガで動作させることができます。実行可能なランタイムも豊富に用意されており、数あるサーバレスコンピューティングサービスを代表するサービスの1つと言えます。*注1

無料でアカウントを作成することで、チュートリアルを体験することができます。Hello World!をサーバレスで実行することでサーバレスによっていかに簡単にコードを実行することができるのかがお分かりいただけるでしょう。*注2

利用料金の例が掲載されており、関数に 128 MB のメモリ量を割り当てて 50,000,000 回実行し、毎回の実行時間が 100 ミリ秒間だった場合で月額13.55 USD(約1500円)とリーズナブルです。ユースケースも豊富に紹介されており、利用を開始するにあたっての参考になるでしょう。*注3

AWS Lambda の競合サービス

サーバレスコンピューティングサービスを提供しているのは、Amazonだけではありません。ここではAWS Lambdaの競合といえるサービスをいくつか紹介します。

・Google App Engine
・IBM Cloud Functions
・Salesforce Heroku
・Cloud Foundry

今や大手のIT企業たちが軒を連ねていますが、それぞれ特徴や料金体系、コンセプトなどが異なっています。無料で利用できる期間やリソースはありますので、実際使ってみて使い勝手を試してみてもよいかもしれません。

◆まとめ
いかがでしたでしょうか?今回はAWS Lambdaとサーバレスコンピューティングについて解説しました。日進月歩で技術が進化している現代、プログラミングやサービス開発の難易度は下がり、誰でも簡単にサービスを立ち上げることができるようになっていきます。サービスの開発は難しい、と思っているあなたも、まずはチュートリアルから初めて、サーバレスコンピューティングの世界を体験してみてはいかがでしょうか。




エンジニア募集中

株式会社キャパでは中途エンジニアの募集をしています。
私たちと一緒に働きませんか?
募集概要について詳しくは


◆参考URL
*注1
AWS Lambda
https://aws.amazon.com/jp/lambda/

*注2
「Hello, World!」をサーバーレスで実行する
https://aws.amazon.com/jp/getting-started/hands-on/run-serverless-code/?sc_icampaign=acq_jp_getting-started-handson-202010-run-serverless-code&sc_language=jp&sc_icontent=awssm-6338&sc_iplace=ribbon&trk=ha_ribbon_acq_jp_getting-started-handson-202010-run-serverless-code

*注3
サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説
https://aws.amazon.com/jp/builders-flash/202003/awsgeek-serverless/

関連記事一覧