「AWS」が提供する”サーバーレスコンピューティングサービス”。「AWS Lambda」とは何?

AWS Lambda とは何か?

AWS Lambdaはとはサーバーレスコンピューティングサービスの1つで、AWSによって提供されているサービスです。いわゆる「サーバーレスアーキテクチャ」とも呼ばれているものですが、このサーバーレスの仕組みがよくわからない方もいらっしゃるかと思います。AWS Lambdaについて理解するために、サーバーレスコンピューティングについても少しご説明しておきましょう。

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

文字通りに理解すると「サーバーがなくても運用可能な」サービスや技術のように思えますが、実際にはサーバーが無くても良いわけではありません。サーバーレスの「レス」というのは、実際にサーバーの運用(=構築や保守までを含めたもの)をしなくても、プログラムをサーバー上で実行できるサービスのことを言います。

従来の常識で考えれば、プログラムを作成し、作成したプログラムをサーバー上で稼働させようとするのであれば、まずはサーバーを構築することが必須条件でした。サーバーが構築されていなければサーバー上で稼働させることが前提のプログラムは動かないというのが常識だったのです。

サーバーレスコンピューティングの場合、サーバー本体は存在しており、そのサーバー構築は成されているものの、その運用や保守などを含む全ての管理業務を自社が行う必要がありません。そのため、プログラムを組んでインストールすれば、すぐにサーバー上でプログラムを稼働させることができるようになります。これはサーバーレスコンピューティングを実現させるために、サービスを提供する企業がサーバーの構築や運用・保守までを含めた管理業務を全て行い、準備してくれるからです。

つまり、「サーバーレス」というのは「サーバーの管理、運用・保守の必要がない」という意味での「レス」だということになります。言葉の使い方については賛否両論あるかもしれませんが、実態はご説明している内容になります。利用者にとってみればこのサーバーレスコンピューティングというのは、サーバーの複雑な管理や運用・保守に人的リソースを割く必要がなくなり、事業計画上必要な製品・サービスの開発に開発リソースを割くことができるので、とてもメリットのある仕様です。

AWS Lambdaとは

AWS Lambdaというのは「サーバーレスコンピューティング」による、AWSが提供するサービスのことです。サーバーレスなので、ここまでご説明してきたように利用者がサーバーを構築したり、レンタルサーバーや仮想サーバーを借りて運用する必要なく、プログラムを実行することが可能なサービスになっています。

AWS Lambdaが高い評価を受けている理由として、高い汎用性により多くの実行プログラムやアプリケーションに対応できるというものがあります。つまり、サーバー本体やサーバーOS、ストレージの管理や保守対応を気にすることなく、開発したプログラムやアプリケーションが問題なく実行できているかどうかに集中できるのです。

「高い汎用性」というのは、つまり「より多くのプログラミング言語に対応している」という意味で、AWS Lambdaがサポートすることを明言しているプログラミング言語でコーディングされたプログラムは、自動的にAWS Lambda上でLambda関数に変換され、サーバー上で実行されることになります。これはサーバー上での実行可否をテストしながらではなく、純粋にプログラムのコーディングに集中できることを意味します。AWS Lambdaを利用しているということは、サポートする言語でコーディングすれば実行が保証されるということにほぼ等しいからです。

AWS Lambdaでサポートされている言語は以下の通りです。

(1)Node.js

(2)Python

(3)Ruby

(4)Java

(5)Go

(6).NET Core

(7)PowerShell

AWS LambdaとAmazon EC2の違い

AWSはそもそもAmazonが提供するサービスの1つですが、広い意味での「クラウドコンピューティングサービス」という括りではAmazon EC2というサービスも存在します。

AWS LambdaとAmazon EC2の違いとしては、明確な点として「サーバーの運用や保守が必要」ということがあげられます。Amazon EC2はクラウド上に構築された仮想サーバーを利用する形を取っており、利用者が自分でサーバー用ミドルウェアやアプリケーションをインストールしたり、運用・保守業務を行うことになります。

それに対してAWS Lambdaの場合は、繰り返しになりますがサービス内容が「プログラムやコードの実行環境を提供する」ものになるので、クラウド上の仮想サーバーレンタルとは異なり、サーバーそのものの構築(ミドルウェアやアプリケーションのインストール・設定)を行うこと無く、コーディングされたプログラムやアプリケーションを実行させることが可能です。

何に使えるのか?

ここまでの説明で想像できた方もいらっしゃるかもしれませんが、AWS Lambdaはその特性上、利用用途が多岐に渡ります。アプリケーションの開発現場で使用することも可能ですし、セキュリティに関連した処理などにも利用することができます。実行条件が定義されていればプログラムを実行することが可能なサービスなので、「条件を満たした状態で特定の処理を行う」ということが可能になるのです。

このような特徴を持っているため、特定のデータが入力された際に自動的に集計させるプログラムを実行させたり、特定のフォーマットのファイルがアップロードされた際に決められた処理を行ったり、一定期間が経過すると同時に自動的に特定のログを抽出・計算したりする集計プログラムを実行することもできます。

AWS Lambdaの料金

AWS Lambdaは有料サービスですが、実際の利用料金はどのように設定されているのでしょうか?

プログラムを実行した時間に対する従量制

AWS Lambdaの利用料金はいわゆる「従量課金制」となっており、つまり「使った実質時間✕設定された時間単価」が利用料金として請求される形式です。AWS Lambdaの場合は、プログラムやアプリケーションの実行が求められた回数(リクエスト回数)と、指定されたプログラムが実際に実行され、コードの返答が行われた時間に対して請求されることになっています。しかし例えば何らかの理由で要求されたプログラムの実行がされなかった場合はカウントされず、その分の料金は請求されません。

実は、AWS Lambdaには無料利用枠が設定されており、月間100万リクエスト、かつ320万秒までの利用であれば請求が発生しないことになっています。プログラムの実行に割り当てられたメモリの総量によって多少の変化はありますが、少なくともご紹介した内容に近い範囲以内の利用であれば無料で利用することができます。AWS Lambdaの評価が高いのは、無料で利用できる枠に期限が設定されていないという点にあります。例え1年間未使用だったとしても期限が切れることはないので、契約だけはしておいて、期限を気にすること無く開発期間を取ることもできますし、社内でのテストを十分に行ってから本番の実装をAWS Lambdaで行い、一定期間を無料利用で賄うという使い方も可能なのです。

AWS LambdaとAmazon EC2、どちらがお得?

気になるのはAWS LambdaとAmazon EC2のどちらが料金的にお得なのかという点ですが、実は一概にどちらがお得とは言い切れません。なぜなら、AWS LambdaとAmazon EC2ではそれぞれ請求形態が異なるからです。

AWS Lambdaの場合、すでにご紹介したように無料期間が付帯していて、全く利用がない=プログラムの実行リクエストが無い場合は請求が発生しませんし、そもそも請求のベースが「プログラムの実行リクエスト回数と実行時間の乗算」になっているため、実行リクエストがなければ請求は発生せず、実行回数が増えればその回数に応じて請求金額が上がっていく仕組みになっています。

それに対してAmazon EC2の場合はサービスの利用契約が締結されていればその時点で課金が発生します。その代わり、実行リクエストの回数と請求金額に相関関係はない、つまり利用している間に何回実行リクエストがあったとしても、実行回数によって請求金額が増えるということがありません。

AWS Lambdaのメリットは?

サーバーレスコンピューティングとはどんなものか?その1つであるAWS Lambdaとはどんなものかについて解説していますが、端的に言ってAWS Lambdaを使うメリットとはどんなものがあるのでしょうか?いくつかご紹介していきます。

コストダウン

まず第一に、サーバーの維持費全般のコストを削減することができます。通常、サーバーを立ててサービスを提供しようとした場合はサーバー本体の用意、ネットワークの整備、サーバーOSのインストールと構築、プログラムやアプリケーションの開発、開発したプログラムやアプリケーションのインストール、そして運用・保守、と何段階ものプロセスが必要です。しかしAWS Lambdaの場合はプログラムやアプリケーションの開発とインストール以外はAWSが用意してくれているので、人的リソースを全て開発に注ぎ込むことができます。さらに、AWS Lambdaの請求はインストールしたプログラムの実行回数✕時間によって料金が決まるため、保持しているだけで費用が発生する通常のサーバー運用と比べて全体のコストを格段に下げることが可能です。

オートスケール

AWS Lambdaが持つ機能の1つに「オートスケール機能」があります。AWS Lambdaはサーバー周りの環境構築や運用・保守といったことを全て用意してくれるサービスですが、気になるのは「サービスが拡大してサーバーの拡張が必要になったとき」にどうするか?です。実はAWS Lambdaのオートスケール機能は、実際の稼働時におけるアクセス数、実行数、負荷などに応じて、稼働させるサーバー数を自動的に変更してくれる機能を持っています。そのため、利用者は規模としてどれくらいのサーバーをいくつ稼働させているかなどを気にせずにサービスの運営と開発に集中することができるのです。

サーバーの構築や管理が不要

コストダウンの項でも触れましたが、AWS Lambdaを利用する場合はサーバーを自ら構築したり、管理、運用、保守などのメンテナンス全般を行う必要がありません。つまりサーバーエンジニアを自社で抱えておく必要がなく、アプリケーションエンジニアやデザイナーといった、制作サイドのヒューマンリソースに資本を集中できるようになります。ハードウェアを保有する必要がなく、メンテナンスも必要ないので、身軽に動くことが可能です。

高いセキュリティ

セキュリティ対策に関してもAWS側が行ってくれるため、<セキュリティについての専門家がいなかったとしても高いセキュリティ性を維持することができます。/mark>AWS Lambdaはサーバーをネットワーク上に公開しておらず、プラットフォームとしての細かい仕様や要件も公開していません。いわばクローズな状態が維持されているため、脆弱性が外部に漏れることが非常に少なくなっています。しかも定期メンテナンスなどに伴うダウンタイムロスがないため、継続して安定した運用を行うことが可能です。

さまざまなプログラム言語に対応

AWS Lambdaは複数のメジャーなプログラミング言語に対応しており、Node.js、Python、Ruby、Java、Go、.NET Core、PowerShellなどでコーディングしたプログラムを、自動的にLambda関数に変換してサーバーにアップロードしてくれます。つまり、AWS Lambdaに対応させるためのコーディングは必要なく、自分たちが普段から使っている言語でいつもの通りにコーディングするだけで全く問題ありません。

AWS Lambda を利用する際の注意点は?

万能のように思えてしまうAWS Lambdaですが、もちろん利用する際の注意点がいくつかあります。

まず、「AWS Lambda単体では何もできない」ということを覚えておく必要があります。Amazonが提供するサーバー製品はAWSで、AWS Lambdaはそれらのうちの1つという位置づけになっています。そのため、本格的に運用する場合にはAWSの他のサービスとも組み合わせてシステム構成を考える必要が出てきます。

もちろんそうなると月額費用や年間費用が発生するわけですが、すでにご紹介したようにAWS Lambdaには無料期間が設定されていたり、従量課金制の請求形態になっているため、毎月定額で請求が発生するわけではないので「固定費」として計上することができない、という経理上のデメリットが存在します。

機能面での注意点としては、メモリの最大値に限界が設定されているため、制限値以上の大容量メモリが必要となるプログラムの実行を考える場合は別の手段を考える必要があるという点です。処理時間が900秒を超える場合には自動的にタイムアウトになるなど、いくつか制限もあるので、こうした機能面での注意点はよく確認しておく必要があります。

そもそもサーバーレスコンピューティングは全てを解決してくれる万能ツールだというわけではなく、AWS Lambda以外にもサーバーレスコンピューティングサービスはありますが、それぞれに特徴やメリット、デメリットがあるため全てのサービスで同じことが実現できるとも限りません。場合によってはAWS Lambdaから別のサービスに移行する必要性が出てきた時に問題が発生する可能性もあるので、実際の物理サーバーを構築するケースとは違ったアプローチでの障害・トラブル対応は考えておく必要があります。

まとめ

ここまで、サーバーレスコンピューティングとはどんなものか?その中の1つであるAWS Lambdaとは何か?ということをご紹介してきました。物理サーバーを自前で用意することなくサーバーを利用することができる一方、物理サーバーを自社で保有する時とは異なる注意点もあります。しかし、その分だけ開発に集中することもできるため、事業の段階によっては非常に有効なサービスだと言えるでしょう。これを機会によく調べてみて、ぜひ検討してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です