クラウドで発生する手間を自動化で削減
サーバレス運用を実現――「AWS Lambda」「Azure Functions」を比較する
クラウドを利用するにも、プロビジョニングといった手間やコストが発生する。だが、システムが自動でそれを実行できるとしたら、手間が大幅に下がる。ではどのように自動化すればいいのだろう。
Amazon Web Servicesの「Amazon Web Services」(AWS)やMicrosoftの「Microsoft Azure」といったクラウドサービスには各種のメリットがあるが、こうしたサービスは依然としてオーバーヘッドを伴う。仮想サーバであれ、オブジェクトストレージバケットであれ、SQLデータベースであれ、使用する前にまずリソースを最適に提供する「プロビジョニング」をする必要がある。こうした必須とみられる要件が、クラウドを利用するためのコストや時間、手間を確実に増大させる。
だがシステムが自動的にサービスをプロビジョニングし、別のアプリケーションからの通信といった各種のイベントに反応してジョブを実行できるとしたらどうだろう。これが「サーバレスアプリケーション」の背後にある考え方だ。サーバレスアプリケーションは「クラウドファンクション」とも呼ばれる。本稿では、2つのサーバレスコンピュ―ティングサービスであるAmazon Web Servicesの「AWS Lambda」とMicrosoftの「Azure Functions」について比較しながら確認する。
併せて読みたいお勧め記事
AWS Lambdaに関する記事
コンテナって何?
トリガーと対応言語
クラウドファンクションは新しい概念だが、既に複数のベンダーがサービスを提供している。リーダー的存在はAWS Lambdaだが、他にもIBMの「IBM Bluemix OpenWhisk」、Googleの「Google Cloud Functions」、Azure Functionsなどのサービスがある。
Azure Functionsは現在プレビュー段階だ。「Azure App Service」や「Azure WebJobs」といった既存のPaaS(Platform as a Service)を利用し、モバイルアプリケーションやブラウザベースなどに必要なアプリケーション向けバックエンドコンポーネントの開発を簡素化する。「JavaScript」や「C#」「Python」「PHP」などの言語で記述されたコードモジュールのセットを、下記の外部イベントをトリガーとして発生したときのみ実行する仕組みだ。トリガーとなるイベントはAzureに限定されず、サードパーティーやオンプレミスのシステムで発生するあらゆるイベントを利用できる。
- ストレージコンテナ内の変化
- メッセージキューに対する操作
- 公開されている「HTTP API」からのアクセス
AWS Lambdaはトリガーを「イベントソース」と呼び、AWSの他のサービスや外部アプリケーションからも受け取れる。ユーザーはイベントソースとAWS Lambdaの関数をひも付けて利用する。例えば、AWSのクラウドストレージ「Amazon Simple Storage Service」(Amazon S3)のバケットにオブジェクトを作成する。そのとき、AWS Lambdaコードを実行する許可が与えられている場合、関数を実行するといった具合だ。AWS LambdaのイベントソースにはAmazon S3の他、AWSのデータベースサービス「Amazon DynamoDB」やSNSの通知、AWSのモニタリングツール「Amazon CloudWatch」のアクティビティーなどを設定できる。
モバイルアプリケーションでAWSのソフトウェア開発キット「SDK」を利用し、公開されている「AWS Lambda API」を実行することで、オンデマンド機能を呼び出すことも可能だ。AWS Lambdaの関数は、「Node.js」やPython、「Java」などで記述できる。
コンテナの役割
Azure FunctionsとAWS Lambdaはどちらもコンテナで動作する。ただし、実装方法や制限事項はそれぞれ異なる。
Azure Functionsの関数はAzure App Serviceのコンテナアーキテクチャを使って構築する。料金プランには「App Serviceプラン」と「動的サービスプラン」の2種類がある。App Serviceプランでは、関数をその他のアプリケーションと同様に専用の仮想マシン(VM)で実行する。専用VMはコードが実行中かどうかにかかわらず、常に使用することが可能だ。App Serviceプランは関数を長期間継続的に実行する場合や既存のVMの使用率が低い場合などに適している。
一方、動的サービスプランは関数専用のプランであり、関数を複数のVMに自動的にスケーリングできる。動的サービスプランは、実行時間が短い断続的なジョブに適している。
AWS Lambdaの関数もコンテナで動作する。コンテナでメモリサイズや最大実行時間を設定する。関数がトリガーされると、AWS Lambdaはそうした設定に基づき、新しいコンテナを起動する。コンテナの設定と起動に時間がかかる。そのため同じ関数が繰り返し呼び出されたてから実行するまでのレイテンシを最小限に抑えられるよう、AWS Lambdaは起動したコンテナを一定時間保持する。さらに各コンテナは再利用に備えて、一定のディスク容量を一時的に確保する。ただしAWSによれば、AWS Lambdaは常にコンテナを再利用するわけではなく、場合によって新しいコンテナを作成することもあるという。
料金
Azure Functionsにせよ、AWS Lambdaにせよ、サードパーティーが提供する同様のサービスにせよ、クラウドファンクションの魅力はその効率性とスケーラビリティにある。Azure FunctionsとAWS Lambdaの料金は、関数実行時間と実行回数に基づいて計算される。関数実行時間はGB/秒で計算され、GB/秒当たりの単価がある。
関数は既に主要IaaS(Infrastructure as a Service)の標準機能となっているが、まだ新しく、急速に進化中のカテゴリーだ。今後、IaaS事業者が機能や言語のサポートを追加し、開発環境や継続的デリバリーツールとの連係を強化していく中での進展に注目したい。変化が期待される分野の1つに、設定ダッシュボードがある。イベントソースや関数のひも付けの件数を考えると、その役割は極めて重要だ。
一般的には、既存のAWSユーザーはまずAWS Lambdaを試してみてから、他社の関数を試すと良い。Azureユーザーは、その逆だ。同様に、Azure Functionsが関数でJavaをサポートするまでJava開発者は、AWS Lambdaが必要であり、C#の利用者はAzure Functionsを使う必要があるだろう。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Excel至上主義」の終わらせ方 丸2日の手作業地獄から情シスと現場を救うには
-
2
「Microsoft 365のセキュリティ運用」に関するアンケート
-
3
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
4
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
5
221人調査で分かった「情シス最大のストレス」は?
-
6
「Salesforceのテスト自動化ツール」に関するアンケート
-
7
「データストレージの活用方法」に関するアンケート
-
8
「AI時代の統合基盤・エンタープライズAI管理」に関するアンケート
-
9
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
10
自宅のWi-Fiが「遅い」「途切れる」本当の原因は? Dellが推奨する鉄則
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー