サーバーレスの代表格である「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作業・管理
- サーバー負荷増による負荷分散や冗長化などの設計
- サーバーの稼働状況監視:過剰な負荷を検知→対応
- ネットワークの監視:異常通信検知→通信遮断などの処置
サーバーレスのサービス全般にいえることですが、これらの管理作業を削減することで、開発担当者はアプリケーション開発や構築作業に集中できるようになります。
多くのプロダクトサービスと連携できる
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ドル |
割当メモリに応じた料金は以下となります。
128MB | 0.0000002083 USドル |
512MB | 0.0000008333 USドル |
1024MB | 0.0000016667 USドル |
1536MB | 0.0000025000 USドル |
2048MB | 0.0000033333 USドル |
3008MB | 0.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 ドル(月額)
利用サービス | 項目 | 費用 (USD) | 計算式 ※2020年6月8日時点での試算 |
---|---|---|---|
AWS Amplify | ビルド&デプロイ | 0.12 | 4 (回/月) × 3 (分/回) = 12 ビルド/月 |
ストレージ | 0.01 | 100(MB)/1024 (GB/MB) × 4 = 0.19 GB/月 | |
ホスティング | 134.04 | 30,000(リクエスト/日) * 1(MB) / 1024 (GB/MB) * 30.5(日/月) = 893.55 GB/月 | |
Amazon Cognito | Cognito ユーザープール | 0.00 | 10,000 MAU |
Amazon API Gateway | リクエスト回数 | 12.97 | 10,000(回/日) x10(APIs) x 30.5(日/月) = 3,050,000 回 |
AWS Lambda | リクエスト回数 | 0.41 | 10,000(回/日) x 10(Functions) x 30.5(日/月) – 1,000,000(回/月(※2)) = 2,050,000 回 |
実行時間 | 18.76 | 0.5(GB のメモリ量を設定) x 1.0(秒) x 10,000(回/日) x 10 (Functions) x 30.5(日/月) – 400,000(回/月(※2))= 1,125,000 GB-秒 | |
Amazon DynamoDB | データストレージ | 7.13 | 50(GB) – 25(GB(※3)) = 25 GB |
読み出し要求 | 0.87 | 10,000(回/日) x 10(Functions) x 30.5(日/月) = 3,050,000 回 | |
書き込み要求 | 4.36 | 10,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分 |
最大メモリ | 3008MB | 1536MB | 2048MB | 2048MB |
コンテナ | –Elastic Container Service –Fargate | Container Instance | Cloud Run | Code Engine |
国内データセンター | 東京3/大阪2 | 東日本3/西日本1 | 東京3/大阪3 | 東京3 |
SLA | Multi 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-秒 |
アウトバウンド トラフィック | 100GB | 100GB | 5GB | なし |
無料枠では、呼び出し回数については、「Cloud Functions(Google)」が200万件と最大で、アウトバウンドトラフィックについては、「Lambda(AWS)」と、「Azure Functions (Microsoft)」が100GBで最大であることがわかります。
なお、総実行回数は、どのサービスも同等であるという結果となりました。
【入門編】AWSの始め方
AWSサービスを活用するには、まずAWSのアカウントを作成する必要があります。ここでは、AWSのアカウント作成の流れについて簡単に触れていきます。
なお、AWSアカウント作成までの所要時間は「約10分で終了」します。
- AWSアカウントの作成
- AWSサインイン画面へアクセス
- EメールアドレスとAWSアカウント名を入力※
- 認証コードをEメールアドレスに送信ボタンを押す
- 再度メールアドレスを入力
- パスワードを入力
- パスワードを再度入力
- AWSアカウント名を入力
- 氏名、電話番号、住所などの必要情報を入力
- 支払いのためのクレジットカード情報を入力
- 本人確認:携帯電話がある場合は番号を選択
- セキュリティチェックの文字入力※
- サポートプランを選択
- アカウント作成終了
- AWSマネジメントコンソールにサインイン
- 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」 を使用する想定としています。
モジュール
こちらは、5つの短いモジュールに分かれています。次にあげる項目を順に作業を進めていきます。
- ウェブアプリケーションを作成 : AWS Amplifyコンソールからウェブアプリケーションの静的リソースをデプロイする
- サーバーレス関数の構築: AWS Lambdaを使用し、サーバーレス関数を構築
- サーバーレス関数をWebアプリへリンク:API Gatewayを使用し。サーバーレス関数をデプロイする
- データテーブルの作成:Amazon Dynamo DBテーブルにデータを保持する
- Webアプリへ対話性を追加:Webアプリケーションを変更し、APIを呼び出す
AWSサーバーレスの学習・勉強方法
ここからは、サーバーレスの学習方法について解説します。
学習の際に気をつけるポイントは、サーバーレスありきではなく、まずはシステム要件をしっかり整理することです。それによって、本当にサーバーレスが必要かをまず明確にすることが大切です。そのためにも、サーバーレスで「何ができるのか」を深く勉強する必要があります。
座学・知識面
AWSに関する知識を蓄積するためにおすすめの方法をあげていきます。
- 書籍
- AWS公式の資料
- AWS公式のYouTube動画
- 各企業独自で作成のYouTube解説動画
- Webサイトの解説
なかでも、サーバーレスに触れたことがない方は、以下のスライドを一度はご覧いただくことをおすすめいたします。
また、AWS初心者の勉強に役立つ資料や情報を、以下に紹介します。
- 無料デジタルトレーニング(AWS公式資料)
- サーバーレスの勉強方法を聞いてみた(AWS公式資料)
- 【初級】いまから始めるサーバレスアプリケーション | AWS Summit Tokyo 2019(AWS公式動画)
- めざせ!サーバレスプロフェッショナル | AWS Summit Tokyo 2019(AWS公式動画)
- 【AWS Black Belt Online Seminar】サーバーレスイベント駆動アーキテクチャ(AWS公式動画)
- 【AWS Black Belt Online Seminar】形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
- 基礎から学ぶサーバーレス開発(出版社:シーアンドアール研究所)
実技・実際に手を動かして練習
ここでは、AWSのサーバーレスLambdaを実際に手で動かして練習をする方法を紹介します。
やはり、Webサイトや動画を閲覧して学習することがメインです。
- AWS Lambda 開始方法(AWS公式資料)
- 「Hello, World!」をサーバーレスで実行する(AWS公式資料)
- AWS Lambdaの最初の一歩 関数をつくって実行しよう!(YouTube動画:ダイワボウ情報システム公式より引用)
- 【AWS 入門】LambdaのコードをPythonで書いてみよう!(YouTube動画:「クライン【Klein】」より引用)
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におけるサーバーレス「Lambda」は、AWSのさまざまなプロダクトサービスとの連携が可能です。他のサービス提供会社との連携を必要としないため、AWS 1社とさえやりとりをすれば運用が可能となるというメリットがあります。
しかし、1度導入をすると他のサービス提供会社への変更が難しくなるため、自社の実現したいこととマッチしているかを充分検討した上での導入がベストです。AWSのサーバーレスをうまく活用して、最適なサーバー運用を実現しましょう。
コンテナ管理をこれから始めたいお客様に最適な、RancherでKubernetesを簡単に管理できるコンテナサービスと、サーバースペック 95パターン+ディスク容量 10パターンから選択できるクラウドサーバーを提供する国産クラウドプラットフォームです。