Lambda」はAmazonの提供する、サーバーレスコンピューティングサービスです。AWSの各種サービスと連携し、従来サーバーで実行していた処理をLambdaで行うことで、開発者はサーバー管理から開放されます。ウェブ開発に慣れた人ほど「サーバーが無いってどういうこと?」という疑問が湧くと思います。Lambdaの前にまずサーバーレスの背景と概念から紹介します。RDSの仕様・公開情報に準じます。膨大なアクセスが見込まれるサイトのサーバーダウンを避ける方法として、サーバーの冗長化構成が検討されることは多くあります。サーバーの冗長化は、単純にサーバー台数が倍以上になるためインフラ費用が増加し、その冗長化構成の構築に作業と期間の相応のコストがかかります。冗長化をしたとしても負荷監視や障害時の対応といった継続的な保守管理は必要です。開発者視点だと、サーバーの構築・保守管理は必要なことですが基本的にクリエイティブな作業ではありません。Lambdaによるサーバーレスの概念は、そうしたサーバーに関わる煩わしい課題や作業から開放され、エンジニアがクリエイティブな開発に専念できるようになる機能を備えています。Lambdaの特徴・メリットLambdaには以下のような特徴があります。サーバー構築・管理からの開放ウェブアプリケーションを稼働させるには従来ならサーバーを立ち上げ、Linuxなどの環境構築、ウェブサーバーやミドルウェアの設定が必要です。稼働中もOSやミドルウェアの更新、死活監視など継続的なインフラの保守管理が必要です。Lambdaはそれらを一切省き、ウェブアプリケーションを稼働させる実行環境を用意しています。開発者はアプリケーション開発のみ行い、それをLambdaに実行させるだけで済むようになります。サーバーが落ちることがないサーバーが無いのでサーバーダウンの概念がありません。厳密にはAmazon側のネットワークがダウンすれば共倒れしますが、どのプラットフォームもサービス本体がダウンすれば同じことが言えるので、世界的インフラのAWSと、自社サーバーや一般企業のレンタルサーバーのどちらを信用するか、という話になります。サーバーの脆弱性を突いた攻撃が効かないセキュリティ被害の多くはサーバーOSやミドルウェアの脆弱性を突いた攻撃ですが、公開ネットワーク上にサーバーが無いので、一般的なサーバーの脆弱性を突く攻撃が効きません。Amazonのプラットフォームに脆弱性が無いとは言えませんが、プラットフォーム仕様が公開されていないので脆弱性を探すことが難しく、一般的なサーバーOSより脆弱性被害の可能性は少ないです。様々なプログラムに対応Lambdaは以下のプログラム言語に対応しており、今後も対応する言語が追加される予定です。コード実行単位の従量課金Lambdaはコードが実行される0.1秒(100ms)ごと、およびプログラムが実行された回数で課金されます。一般的なホスティングサーバーやAWSのEC2も、ウェブサイトへのアクセスが無くともサーバーの公開中は課金され続けますが、Lambdaはプログラムが実行されなければ一切料金は発生しません。Lambdaの料金Lambdaの料金はプログラムのリクエスト数+実行時間の合計料金です。公式の料金表を見てもイメージにしくいですので、ケースを仮定して料金計算してみます。Lambdaの料金を試算してみる一般的なメールフォーム月に100回実行され、毎回の実行時間が1秒、割当メモリ128MBとした場合...実は計算するまでもなく無料です。100万リクエストまでは無料のため、ほんの100回程度では料金がかかりません。スケールを上げてみましょう。(約500円)なんと500円でした。1ヶ月で500万登録に成功するキャンペーンなど滅多にありませんが、これをサーバー冗長化で捌こうとすると、数千倍の費用が見込まれます。上記の計算はLambdaだけの料金です。Lambda単体ではウェブサイトの体を成さないため、S3などAWS関連サービスの料金が別途かかります。関連サービスを考慮しても、サーバーの冗長化構成をするより低コストで高負荷に強い環境が作れると考えられます。特徴から料金についてご紹介しました。サーバーレスの概念は初めは難しくとっつきにくい印象があるかと思います。メリットを理解することでサーバーに関わる様々な常識が変わるので、今回の内容がサーバーレスの理解の助けになりましたら幸いです。ツイートシェアはてなゴトーUI/UXエンジニア。デザイン、サービス設計、機能(UI)設計、サーバサイド、SEO、ウェブマーケティングなどWebの全般に関わり、現在はBtoBの領域中心にWebとユーザーのふれあい方(体験:UX)に関して垣根なく取り組んでいます。