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

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

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

この連載記事のその他の記事はこちら

↓ AWS グラレコ解説 バックナンバー ↓
  • ↓ AWS グラレコ解説 バックナンバー ↓
  • 今話題のブロックチェーンをAWSで実現する仕組みをグラレコで解説 »
  • サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説 »
  • 機械学習のワークフローってどうなっているの ? AWS の機械学習サービスをグラレコで解説 »
  • 外部から AWS のバックエンドサービス利用を実現する仕組みをグラレコで解説 »
  • AWS でデプロイの自動化を実現するベストプラクティスをグラレコで解説 »
  • コンテナを使ってモノリスを分割する方法をグラレコで解説 »
  • クラウドへ移行する理由とそのステップをグラレコで解説 »
  • Windows ワークロードをクラウドへ移行するためのベストプラクティスをグラレコで解説 »
  • サーバーレスのイベントバスって何 ? Amazon EventBridge をグラレコで解説 »
  • サーバーレスで SaaS を構築する方法をグラレコで解説 »
  • 「あなたへのおすすめ」はどう生成するの ? Amazon Personalize で簡単に実現する方法をグラレコで解説 »
  • クラウド設計・運用のベストプラクティス集「AWS Well-Architectedフレームワーク」をグラレコで解説 »
  • 特定の顧客セグメントにメッセージ送信。「Amazon Pinpoint」の仕組みをグラレコで解説 »
  • アプリにユーザー認証機能を簡単に追加できる「Amazon Cognito」をグラレコで解説 »
  • わずか数分で WordPress サイトを構築できる「Amazon Lightsail」をグラレコで解説 »
  • 異なるアプリケーション同士の疎結合を実現。「Amazon SQS」をグラレコで解説 »
  • Web アプリを高速に開発できる「AWS Amplify」をグラレコで解説 »
  • 機械学習の知識ゼロでもテキストデータを分析。Amazon Comprehend をグラレコで解説 »
  • ビジネスデータをまとめて可視化 & 分析。Amazon QuickSight をグラレコで解説
  • 人工衛星の地上局を 1 分単位で利用。AWS Ground Station をグラレコで解説
  • カオスエンジニアリングで本当にカオスにならないための進め方をグラレコで解説
  • GraphQL API を簡単に作成 & 運用。AWS AppSync をグラレコで解説

builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

photo_ito_judge

筆者紹介

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

アマゾン ウェブ サービス ジャパン合同会社
テクニカルライター。

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

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

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

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

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

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