サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説

2020-03-02
AWS 最新ドキュメント紹介

Author : 伊藤 ジャッジ向子(さきこ)

本連載では、様々な AWS サービスをグラフィックレコーディングで紹介する awsgeek.com を、日本語に翻訳し、図の解説をしていきます。

※ awsgeek.com は Amazon Web Services, Inc. プリンシパル・テクニカル・エバンジェリスト、ジェリー・ハーグローブが運営しているサイトです。

サーバーレスとは

皆さんの中には何かのシステムを動かすため、「1. プログラムを書く」そして「2. 実行する」というお仕事(または趣味?)をされている方もいらっしゃるかと思います。

歴史的にこの二つはセットで、プログラムを実行するためには、実行環境のサーバー構築やメンテナンスをする必要もありました。でも、どんなに良いプログラムも、実行環境であるサーバーがさばききれる能力以上のリクエストが集中して、実行環境がクラッシュしてしまっては、元も子もありません。

そのため従来のサーバー環境ではリクエストに応じて、またはリクエストが増えることが事前に分かっている場合は、実行環境であるサーバーの CPU やメモリやストレージの量や数を増強する必要があります。その作業のため、プログラムを書く部隊とサーバーのメンテナンスをする部隊が別にいるシステム構築チームが編成されることが多いと思います。

来るかもしれないリクエストのために実行環境の増強をしたり、サーバーのメンテナンスに人的リソースや労力を割くようなビジネスに直接の価値を生み出さない作業を減らしていく方法はないでしょうか。

そんな労力から解放するため、2014 年、AWS はサーバーレスのコンピューティングを担うサービス、AWS Lambda を発表しました。Lambda 関数でシステムを構築することにより、サーバーのプロビジョニングや管理をする必要がなくなります。

すべて AWS が管理する(マネージド)ため、プログラムを書いたら後は AWS が実行環境の面倒を見ます。

では、Lambda にはサーバーの管理から解放するためにどのような機能があるのでしょうか。

AWS Lambda の自由度:関数

Lambda はAWS が実行環境の面倒をみる点がメリットですが、とはいっても、皆さんで Lambda の実行環境をコントロールすることもできます。

Lambda のマネジメントコンソールから、使用するメモリ量、Lambda 関数にアクセスできる AWS サービス、ユーザー等、アクセス許可ならびにセキュリティの設定が可能です。

img_awsgeek_lambda_01

AWS Lambdaの自由度:ランタイム

AWS Lambda で選択できるランタイムは多く、複数の言語がサポートされます。また、独自のランタイム(カスタムランタイム)を使用することもできますので、PHP や COBOL といった使用者が従来のオンプレミス環境で慣れ親しんだ言語で AWS Lambda を使うことができます。

img_awsgeek_lambda_02

従来のオンプレミスの実行環境で取得していたコード実行のログは、Amazon CloudWatch ならびに AWS CloudTrail を使って取得することができます。

したがって AWS Lambda は、従来のオンプレミスの実行環境と同じようにコードの実行が可能で、なおかつサーバーの管理から解放されるメリットがあります。

img_awsgeek_lambda_03

「コードだけ書いたら、後は実行環境の面倒を見てもらえる!そんな素敵サービス、でも…お高いんでしょう?」

と考える方も多いでしょう。次に AWS Lambda の料金を見てみましょう。

料金

Lambda の使用料は実行したリクエストと時間分だけ支払います。リクエスト課金は 100 万リクエストにつき 20 セントです。また、1 つのプログラムを実行するために 1 GB のメモリを使用した場合、東京リージョンでは 1 秒あたり $0.000016667です。

Lambda で設定した使用メモリが 128 MB なら、もしプログラムの実行時間が 100 ミリ秒なら、$0.000000208 だけ、支払うことになります。プログラムが実行していない時間には課金されないため、実行環境のサーバーを常に稼働させているより、無駄なリソースを費やすことがなく安上がりということになります。

img_awsgeek_lambda_04

月ごとの支払いは下記のようになります。(下記は 2020 年 2 月現在 東京リージョンにおける、ごく一例となります)

関数に 128 MB のメモリ量を割り当てて 50,000,000 回実行し、毎回の実行時間が 100 ミリ秒間だったとします。

  • 1 か月のコンピューティング価格
    • 1 GB/秒につき 0.00001667 USD
    • 合計コンピューティング (秒) = 50,000,000 × (0.1 秒) = 5,000,000 秒
    • 合計コンピューティング (GB/秒) = 5,000,000 秒 x 128MB ÷ 1024 = 625,000 (GB/秒)
    • 625,000(GB/秒)– 無料利用枠 (400,000 GB/秒)の無料利用枠 = 225,000 (GB/秒)
      = 1 か月のコンピューティング料金 = 225,000(GB/秒) × 0.00001667 USD = 3.75 USD
  • 1 か月のリクエスト料金:
    • 1,000,000 件のリクエストにつき 0.20 USD
    • 50,000,000 件のリクエスト– 1,000,000 件の利用無料枠のリクエスト = 49,000,000 件のリクエスト
      =1 か月のリクエスト料金 = 49,000,000 × 0.2 USD ÷ 1,000,000 = 9.8 USD
       
  • 1 か月の合計金額
    3.75 USD + 9.8 USD = 13.55 USD

イベント駆動:様々なトリガー

img_awsgeek_lambda_05

各プログラムで共通で使うプログラム:レイヤー

img_awsgeek_lambda_06

Lambda@Edge

img_awsgeek_lambda_07
img_awsgeek_lambda

Lambda を使用することにより、リクエストが多くなる「かもしれない」という予想により事前からリソースに投資して実行環境であるサーバーを増強する必要がなくなります。サーバーの管理のために労力を浪費する必要もなくなります。

サーバーレスでイベント駆動のシステム構築をご検討の方は、この機会にぜひお試しください。

実際にサーバーレス開発を行う際に役立つフレームワークをご紹介

photo_ito_judge

筆者紹介

伊藤 ジャッジ向子(さきこ)

アマゾン ウェブ サービス ジャパン株式会社 テクニカルライター。
2016 年にアマゾン ウェブ サービス ジャパン株式会社テクニカルサポート部入社。AWS Snowball 等のストレージ系サービスのサポート、ならびに IoT サービスをメインにサポートを行い、2019 年より現職。
趣味はインドアでは小さなセンサーと Raspberry Pi でおもちゃを作ること。アウトドアでは犬を連れてのハイキングとキャンプ。

AWS のベストプラクティスを毎月無料でお試しいただけます

さらに最新記事・デベロッパー向けイベントを検索

下記の項目で絞り込む
絞り込みを解除 ≫
フィルタ
フィルタ
1

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する