お問い合わせはこちら

AWSのサーバーレスサービスとは何かを分かりやすく紹介

公開

サーバーレスの代表格である「Lambda」は、AWSの他のサービスと連携することでさまざまな機能を活用することが可能となります。

しかし、Lambdaの詳細な機能や、他のサーバーレスのサービスとどのような違いがあるのか、詳細をご存知ない方もいらっしゃるのではないでしょうか。

この記事では、AWS「Lambda」の機能や、他社サービスとの違いについて詳しく解説します。

サーバーレスの代表格AWSとは?

AWSとは、Amazonのグループ会社「Amazon Web Service, Inc」が提供する、クラウドコンピューティングサービスの総称です。また、日本法人の名称は、アマゾン・ウェブ・サービス・ジャパン株式会社となり、日本の企業が申込みをする際は、このアマゾン・ウェブ・サービス・ジャパン株式会社とやり取りすることになります。

クラウドコンピューティングとは、サーバーやストレージ、アプリケーションなど、インターネットを介して利用可能とするサービスを意味します。

インターネットに接続できる環境さえあれば、パソコンなどの端末を使ってアプリケーションサーバーや大容量ストレージなどを、必要な分だけ利用できます。

活用方法としては、以下のようなさまざまなことを実現します。

  • Webシステムを開発(サーバーレス)
  • 機械学習(サーバーレス)
  • さまざまなアプリケーションの利用(クラウドサーバー)
  • 企業の社内ワークフローシステム(クラウドサーバー)
  • 大容量データの出し入れ(ストレージ)

AWSのサーバーレスサービスは3種類

AWSのサーバーレスサービスには、大きく分けて3種類のサービスがあります。

ここでは、AWSが提供する以下3つのサービスについて解説します。

  • コンピューティングサービス
  • アプリケーション統合サービス
  • データストアサービス

コンピューティングサービス

AWSのコンピューティングサービスとは、インスタンス(仮想マシン)、コンテナ、サーバーレスなどさまざまなサービスがあります。AWSにおけるサーバーレスの代表格「Lambda(ラムダ)」は、OSやミドルウェア、アプリケーションが予め設定されているため、コードの実行のみで利用が可能です。

AWSのサーバーレスサービスと言うと、一般的にこのLambdaのことを指します。また、課金の特徴としては、実際にコンピューティングを使用した「時間」や「回数」のみに課金されるという特徴があります。そのため、必要な部分のみコストかけるということが可能になります。

アプリケーション統合サービス

AWSのアプリケーション統合サービスとは、分散システム、マイクロシステム、サーバーレスアプリケーション内で、各コンポーネント間をつなぐためのサービスです。

API管理や、イベントパスメッセージングなどを実行可能な各サービスが用意されています。

そのため、例えばLambdaを構成する際に、API管理サービスである「Amazon API Gateway」を用いることで、他のサービスとの連携が可能となります。それにより、他社サービスを使用することなく構築できるため、複数ベンダーとの打ち合わせの時間や手間を削減することができます。

引用元:コンテナとサーバレスの使い分け

データストアサービス

AWSのデータストアサービスは、ストレージ機能を主としたサービスです。代表的なサービスである「Amazon S3(Simple Storage Service)」は、動画などの大容量データやアプリケーションなど、あらゆるデータを保存・保護することが可能です。

例えば、テレビ番組の制作会社が大量の動画データを保管したり、データベースにおいてさまざまな情報を管理したりと、大小を問わない規模の企業が、多く活用しているストレージサービスです。

AWSのメリット

AWSを活用することで、さまざまなメリットを得られるようになります。ここからは、AWSを活用することで享受できるメリットについて、それぞれ解説します。

管理コストを最小化できる

AWSの最初のメリットは、管理コストを最小化できることです。

自社でサーバーを構築するオンプレミスでは、物理的な機器やソフトウェアなどを購入するため、導入費とその後の保守運用費がかかります。また、管理者はサーバーを管理するために、以下に挙げるさまざまな項目を実施しなければなりません。

  • 機器・各ソフトウェアの不具合監視
  • 障害時のメーカー対応依頼やメーカーへの連絡
  • 機器やソフトウェアの保守期限管理
  • サーバーのリソース使用状況の監視
  • 修正パッチの適用
  • 最新の状態にセキュリティを保つこと
  • OSを含めた各アプリケーションのUP date作業・管理
  • サーバー負荷増による負荷分散や冗長化などの設計
  • サーバーの稼働状況監視:過剰な負荷を検知→対応
  • ネットワークの監視:異常通信検知→通信遮断などの処置

サーバーレスのサービス全般にいえることですが、これらの管理作業を削減することで、開発担当者はアプリケーション開発や構築作業に集中できるようになります。

多くのプロダクトサービスと連携できる

引用:AWS の クラウドが選ばれる 10 の理由

2021年3月現在、AWSでは200を超えるサービスが提供されています。サービスの種類が豊富なため、多くのコンポーネントをAWSのみで構築が可能となります。

各サービスによって、それぞれのベンダーとの打ち合わせ時間や手間を削減できるため、作業をスピードアップできるのです。

最先端な技術を利用できる

AWSは、ロボット工学、機械学習、量子テクノロジーなど、最先端の技術を含んだ200を超えるサービスを提供しています。また、常に機能改修やバージョンアップなど定期的にアップデートされているため、ユーザーは常に最先端の技術を利用することが可能です。

また、AWSの90%以上の機能やサービスは、ユーザーからのリクエストを元にして開発されています。そのため、企業が必要とする機能は一通りそなわっているため、AWSのサービスのみで完結させることも可能です。

AWSのデメリット

AWSのメリットについて解説してきましたが、良い点ばかりではなく注意点についても把握しておくことが重要です。ここからは、AWSのデメリットについて解説していきます。

言語の制限がある

サーバーレスサービスの種類によっては、追加作業をしなければ特定のプログラミング言語が使えないことがあります。自社で開発していたプログラミング言語がサーバーレスサービスですぐ使えない場合は、準備に手間取る可能性があります。

サーバーレスサービスでは、どのようなプログラミング言語がデフォルトで使えるのか、追加作業にはどの程度手間がかかるのかをしっかり確認しておきましょう。

フレームワークが使えない

AWSでは、フレームワークが使えないというデメリットもあります。したがって、プログラムをPure Javaや、PHPなどで構築する必要性がでてきます。

処理時間やメモリに制限がある

Lambdaでは、処理時間が最大900秒(15分)となっており、それ以上処理にかかる場合は利用できません。また、メモリの最大は3,008MBまでとなっているため、多くのメモリを要する処理にも利用できないケースもあります。

したがって、利用する用途がこれらの制限にかかるようであれば、他のサービスと連携をさせるか、別のサービスを検討する必要があります。

サーバーレスサービス選定の際は、こういった点を充分に検討し、自社の開発環境にマッチしたサービスを選定するようにしましょう。

AWSサーバーレスの料金体系

AWSサーバーレスの代表格であるLambdaの料金体系は、基本的には従量課金制となっており、具体的には実行時間とリクエスト数によって決まります。

リクエスト月100万リクエストに対して0.2USドル
実行時間GB-秒あたり0.0000166667USドル

割当メモリに応じた料金は以下となります。

128MB0.0000002083 USドル
512MB0.0000008333 USドル
1024MB0.0000016667 USドル
1536MB0.0000025000 USドル
2048MB0.0000033333 USドル
3008MB0.0000048958 USドル

また、無料利用枠は以下の通りです。

  • 月100万リクエスト
  • 月40万GB秒のコンピューティング時間

積算条件を1ヶ月で1024MBのメモリで3,000,000回実行し、毎回の実行時間が2秒だった場合は以下の通りです。

項目計算式
全体の使用時間①リクエスト数=3,000,000回
実行時間=3,000,000回×2秒=6,000,000秒
実行時間×GB=6,000,000秒×1,024MB/2,048MB=3,000,000秒・GB
無料枠の計算②無料利用枠を引いたリクエスト数=3,000,000-1,000,000=2,000,000回
無料利用枠を引いた実行時間×GB=3,000,000-400,000=2,600,000秒・GB
実際の料金①-②リクエスト月額料金=2,000,000回×0.2USドル/1,000,000=0.2USD
実行時間月額料金=2,600,000秒・GB×0.000016663USD=43.32USD
合計金額=43.52USD

活用方法によってサービスの選択が変わってくるため、必要な機能の洗い出しと構成例を充分に確認する必要があります。 なお、Amazonが運営しているAWS料金見積もりツールもあるので合わせて確認すると便利です。

Webアプリケーションを構築するときの費用試算

ここでは、具体的にWebアプリケーションを構築する際の費用試算の例をご紹介いたします。

■AWS ソリューション構成例:会員制 web サイト構築

■目的・用途:
・Webサイトを、サーバーレスアーキテクチャで構築
・常に利用できる状態としておく

■この構成での料金試算例:178 ドル(月額)

引用:https://aws.amazon.com/jp/cdp/ec-serverless/
利用サービス項目費用
(USD)
計算式
※2020年6月8日時点での試算
AWS Amplifyビルド&デプロイ0.124 (回/月) × 3 (分/回) = 12 ビルド/月
ストレージ0.01100(MB)/1024 (GB/MB) × 4 = 0.19 GB/月
ホスティング134.0430,000(リクエスト/日) * 1(MB) / 1024 (GB/MB) * 30.5(日/月) = 893.55 GB/月
Amazon CognitoCognito
ユーザープール
0.0010,000 MAU
Amazon API Gatewayリクエスト回数12.9710,000(回/日) x10(APIs) x 30.5(日/月) = 3,050,000 回
AWS Lambdaリクエスト回数0.4110,000(回/日) x 10(Functions) x 30.5(日/月) – 1,000,000(回/月(※2)) = 2,050,000 回
実行時間18.760.5(GB のメモリ量を設定) x 1.0(秒) x 10,000(回/日) x 10 (Functions) x 30.5(日/月) – 400,000(回/月(※2))= 1,125,000 GB-秒
Amazon DynamoDBデータストレージ7.1350(GB) – 25(GB(※3)) = 25 GB
読み出し要求0.8710,000(回/日) x 10(Functions) x 30.5(日/月) = 3,050,000 回
書き込み要求4.3610,000(回/日) x 10(Functions) x 30.5(日/月) = 3,050,000 回

月額合計料金:178.67(USD)

※ 2020 年 6 月 8 日時点での試算

他のサーバーレスサービスとの比較

サーバーレスの代表的なサービス、4社(AWS、Microsoft、Google、IBM)について、機能性や費用に関してを比較して解説します。

機能性を比較

比較項目ALambda
(AWS)
Azure Functions
(Microsoft)
Cloud Functions
(Google)
IBM Cloud Functions
(IBM)
利用できる言語.NET Core 1.0 (C#)
.NET Core 2.0 (C#)
.NET Core 2.1 (C#/PowerShell)
Go 1.x
Java 8
Node.js 6.10
Node.js 8.10
Python 2.7
Python 3.6
Python 3.7
Ruby 2.4
カスタムランタイム
.NET Core 2.0 (C#)
.NET Core 2.0 (F#) Node.js 6
Node.js 8
Java 8 (プレビュー)
Node.js 6
Node.js 8 (ベータ版)
Pyhone 3.7 (ベータ版)
Node.js 6
Node.js 8
Python 3.6
Python 3.7
Swift 4
Swift 3.1.1
Ruby 2.5
PHP 7.1
PHP 7.2
タイムアウト時間15分10分9分10分
最大メモリ3008MB1536MB2048MB2048MB
コンテナ–Elastic Container Service
–Fargate
Container InstanceCloud RunCode Engine
国内データセンター東京3/大阪2東日本3/西日本1東京3/大阪3東京3
SLAMulti AZ:99.99%
単一:90%
DNS:100%
Multi AZ:99.99%
Fault domains:99.95%
単一:99.9%
DNS:100%
Multi AZ: 99.99%
単一:99.5%
DNS:100%
Multi AZ:99.99%
単一:99.9%
DNS:99.99%

サーバーレスの4サービスにおいて大きな違いは、開発言語の対応種類が最も多いのがAWSのLambdaでした。また、データセンター数では、Google Cloud Functionが東京に3拠点、大阪に3拠点と一番多いことがわかります。

自社の拠点がどこにあるのかによって、通信速度の問題もでてきます。 また、データセンターの拠点が多いサービスほど、災害リスクを考えたときに場所の冗長化を図れるため、リスクヘッジの意味で優位だと言えます。

費用を比較

ここでは、サーバーレスの代表的な提供会社4社について、費用を比較して解説します。

費用をわかりやすく比較するため、以下のような条件を設定しました。

【比較条件】
呼び出し回数:7百万回
インスタンス使用量:3,000,000GB-秒
データの使用量:300GB  
課金項目呼び出し回数
(7百万回)
インスタンス使用量
(3,000,000GB-秒)
データ転送量
(300GB)
合計
Lanbda
(AWS)
196.00円7,000.14円4,788.00円11,984.14円
Azure Functions
(Microsoft)
196.00円6,720.00円5,040.00円11,956.00円
Cloud Functions
(Google)
392.00円6,930.00円5,040.00円12,362.00円
Function Compute
(Alibaba)
196.00円6,881.28円4,914.00円11,991.28円

※2022年11月現在の為替「1ドル:140円」にて計算しています。

同じ条件での価格比較では、「Azure Functions (Microsoft)」が最も安価で、「Cloud Functions(Google)」が最も高価な結果となりました。
また、「Lambda(AWS)」は、2番目に安価であるということがわかります。

次に、各サーバーレスサービスの提供会社毎の「無料枠」についての比較をします。

比較対象の項目は以下となります。

  • 呼び出し回数(毎月最初)
  • 総実行回数(毎月最初)
  • アウトバウンドトラフィック
Lambda
(AWS)
Azure Functions (Microsoft)Cloud Functions
(Google)
Function Compute (Alibaba)
呼び出し回数
(毎月最初)
100万件100万件200万件100万件
総実行回数
(毎月最初)
400,000
GB-秒
400,000
GB-秒
400,000
GB-秒
400,000
GB-秒
アウトバウンド
トラフィック
100GB100GB5GBなし

無料枠では、呼び出し回数については、「Cloud Functions(Google)」が200万件と最大で、アウトバウンドトラフィックについては、「Lambda(AWS)」と、「Azure Functions (Microsoft)」が100GBで最大であることがわかります。

なお、総実行回数は、どのサービスも同等であるという結果となりました。

【入門編】AWSの始め方

AWSサービスを活用するには、まずAWSのアカウントを作成する必要があります。ここでは、AWSのアカウント作成の流れについて簡単に触れていきます。

なお、AWSアカウント作成までの所要時間は「約10分で終了」します。

  1. AWSアカウントの作成
  2. AWSサインイン画面へアクセス
  3. EメールアドレスとAWSアカウント名を入力※
  4. 認証コードをEメールアドレスに送信ボタンを押す
  5. 再度メールアドレスを入力
  6. パスワードを入力
  7. パスワードを再度入力
  8. AWSアカウント名を入力
  9. 氏名、電話番号、住所などの必要情報を入力
  10. 支払いのためのクレジットカード情報を入力
  11. 本人確認:携帯電話がある場合は番号を選択
  12. セキュリティチェックの文字入力※
  13. サポートプランを選択
  14. アカウント作成終了
  15. AWSマネジメントコンソールにサインイン
  16. AWSからメールが届く※

※3.で入力するメールアドレスは、AWSルートユーザーというアカウント名となります。
※12.のセキュリティチェックの画像が読みづらい場合、更新ボタンによって読みやすい画像へ変更ができます。
※16.これでAWSを始められる準備が整いました。

【入門編】基本的なWebアプリを構築する方法

ここまで、AWSのメリットや始め方、Lambdaと他のサーバーレスサービスの比較について解説してきました。

ここからは、基本的なWebアプリケーションを構築する方法を解説します。テスト環境を構築して、実際にWebアプリケーションを構築してみましょう。

それぞれの条件は、以下の通りです。

AWS経験値初心者向け
所要時間30分
コスト無料利用枠の対象
構築内容・Webアプリケーションを作成する
・Webアプリケーションをサーバーレスバックエンドへ接続する
・API とデータベースを使用し、Webアプリケーションに対話性を追加する

アプリケーションのアーキテクチャ

今回のアプリケーションの構築内容は、以下の図のように「AWS Amplify」、「Amazon API Gateway」、「AWS Lambda」、「Amazon DynamoDB」 を使用する想定としています。

引用:https://aws.amazon.com/jp/getting-started/hands-on/build-web-app-s3-lambda-api-gateway-dynamodb/

モジュール

こちらは、5つの短いモジュールに分かれています。次にあげる項目を順に作業を進めていきます。

  1. ウェブアプリケーションを作成 : AWS Amplifyコンソールからウェブアプリケーションの静的リソースをデプロイする
  2. サーバーレス関数の構築: AWS Lambdaを使用し、サーバーレス関数を構築
  3. サーバーレス関数をWebアプリへリンク:API Gatewayを使用し。サーバーレス関数をデプロイする
  4. データテーブルの作成:Amazon Dynamo DBテーブルにデータを保持する
  5. Webアプリへ対話性を追加:Webアプリケーションを変更し、APIを呼び出す

AWSサーバーレスの学習・勉強方法

ここからは、サーバーレスの学習方法について解説します。

学習の際に気をつけるポイントは、サーバーレスありきではなく、まずはシステム要件をしっかり整理することです。それによって、本当にサーバーレスが必要かをまず明確にすることが大切です。そのためにも、サーバーレスで「何ができるのか」を深く勉強する必要があります。

座学・知識面

AWSに関する知識を蓄積するためにおすすめの方法をあげていきます。

  • 書籍
  • AWS公式の資料
  • AWS公式のYouTube動画
  • 各企業独自で作成のYouTube解説動画
  • Webサイトの解説

なかでも、サーバーレスに触れたことがない方は、以下のスライドを一度はご覧いただくことをおすすめいたします。

また、AWS初心者の勉強に役立つ資料や情報を、以下に紹介します。

実技・実際に手を動かして練習

ここでは、AWSのサーバーレスLambdaを実際に手で動かして練習をする方法を紹介します。

やはり、Webサイトや動画を閲覧して学習することがメインです。

AWSサーバーレスサービスの活用シーン

AWS Lambdaの活用シーンをご紹介します。

iRobot

掃除機ロボット「Roomba」でおなじみのiRobotは、2013年に、インターネット接続型の新機種の基盤となるプラットフォームを、パブリッククラウドに構築することを決定しました。その後2015年9 月に、最初のクラウド接続型 Roomba を発売すると、またたく間に数倍の顧客やサービスが接続するようになり、拡張性や直接制御できる仕組みが必要であるという課題に直面しました。

そこで同社は、「統合的な機能」や「強力なツール」を活用できるAWSサーバーレスに注目しました。AWS LambdaとAWS IoT をベースとするサーバーレスアーキテクチャを活用することで、コストを抑え10人未満での管理が可能となり、運用ではなくコードとお客様に対して注力できるようになりました。

株式会社スクウェア・エニックス

ゲームソフト「ドラゴンクエスト」でおなじみのスクエア・エニックス社の事例です。同社の開発するケームソフト「ドラゴンクエストⅩ」では、ゲーム内で写真を撮影できる機能があり、ポータルサイトからこれらの写真をユーザーが閲覧、管理できるようになっています。

クリスマスや大晦日などのイベントで撮影が集中すると、通常2~300枚/秒のところ、イベントの際は6000枚/秒にまで増加しサーバーの大きな負担が課題となっていました。

AWSが選ばれた理由は、年に何度かしかないスパイク対処のために、高価なサーバーを導入するのは難しかったため、AWS Lambda を活用することで、画像処理の仕組みだけを切り出してオンプレミスサーバーと連携可能だと考えたからでした。

また、今後ユーザー数の拡大と共にスパイクがさらに大きくなっても、AWS Lambdaであれば理論上、無制限にスケールできることも選択した際のポイントとなりました。

▼スクウェア・エニックス社 システム構成図

【引用】AWS 導入事例:株式会社スクウェア・エニックス

まとめ

AWSにおけるサーバーレス「Lambda」は、AWSのさまざまなプロダクトサービスとの連携が可能です。他のサービス提供会社との連携を必要としないため、AWS 1社とさえやりとりをすれば運用が可能となるというメリットがあります。

しかし、1度導入をすると他のサービス提供会社への変更が難しくなるため、自社の実現したいこととマッチしているかを充分検討した上での導入がベストです。AWSのサーバーレスをうまく活用して、最適なサーバー運用を実現しましょう。