クラウド図鑑 Vol.86

サーバーレス アーキテクチャはその名前のようにサーバーのハードウェアやインスタンスを意識することなくプログラムを記述し実行できる新しいコンピューティングの手法である。大前提となっているのは、第三者にインフラやプラットフォーム(IaaSやPaaS、つまり全般的にいうところのクラウド)に管理や運用をまかせることである。この手法を普及させたのは、周知のようにAWS Lambdaであり、2015年の正式提供を開始し、この分野をリードしている。一方で、「サーバーレス」という言葉に正式な定義はなく、発展途上の技術でもあるが、主要クラウド、すなわち、AWS、Azure、IBM、Googleの現時点での状況を本稿においてまとめてみた。なお、サーバーレスアーキテクチャと混同されがちな概念に「マイクロサービスアーキテクチャ」があり、この違いについては後日解説するが、基本的に「サーバーレス」は「Function as a Service (FaaS)」といわれるように特定の「関数」あるいは「機能」を処理することにフォーカスしているのが特徴である。現時点では、汎用的なアプリケーションの処理ではなく、日経電子版の事例における画像変換のような特定の処理に有効だと考えるべきである。

2017年3月1日
株式会社クラウディット 中井雅也

代表的な サーバーレス のサービスと概要

AWS Lambdaが2015年に先行し、Azure Functions、IBM Bluemix OpenWhiskが2016年後半に追随した。Google Cloud Functionsは2017年2月時点で正式提供ではない。各社は、この分野をリードするAWS Lambdaの主要機能や特徴を踏襲しつつ、より多くの言語が使えるAzure Functions、オープンソースのIBM OpenWhiskといった特色をだしつつある。また意外なほどに対応するプログラミング言語に差がある。全てで共通するのはJavaScript(Node.js)、次点がPythonだが、他の言語に関してはまちまちであり、Javaのような実績のある言語からSwiftのような新しい言語まで幅広いが、使いたい言語によって選択肢は限定される。

AWS Lambda Azure
Functsions
Google Cloud
Functions
IBM Bluemix
OpenWhisk
概要 米Amazonのイベント駆動型サーバーレスコンピュートサービス。2015年4月にGA。 米Microsoftのイベント駆動型サーバーレスコンピュートサービス。2016年11月にGA。 米Googleのイベント駆動型サーバーレスコンピュートサービス。2017年2月時点ではアルファ版。 米IBMのイベント駆動型サーバーレスコンピュートサービス。2016年12月14日にGA。
機能 実行する処理を Node.js 、Java 、 Python で記述し、インフラのプロビジョニング、拡張、運用などは Lambda が自動的に行う。AWSの他のサービス「S3」、「Kinesis」、「DynamoDB」、「Cognito」などと連携。発生するイベントから処理の自動実行、REST APIで呼び出し、モバイルアプリからの呼び出しが可能。 実行する処理を JavaScript、C#、F#、Python、PHP、Bash、Batch、PowerShell などで記述し、インフラのプロビジョニング、拡張、運用などは Azure Functions が自動的に行う。Azureの他のサービス、Dropbox、Box、Sendgridなどと連携。発生するイベントから処理の自動実行、REST APIで呼び出し、モバイルアプリからの呼び出し、Webhook、タイマー実行が可能。 実行する処理を Node.js で記述し、インフラのプロビジョニング、拡張、運用などは Cloud Functions が自動的に行う。GoogleのCloud Storage, Cloud Pub/Subのイベントからの呼び出し、HTTPでの呼び出しが可能。 実行する処理を Node.js 、Java、 Python、Swift で記述し、インフラのプロビジョニング、拡張、運用などは OpenWhisk が自動的に行う。Bluemix の他のサービス「Cloudant」、「Watson」、「MessageHub」、さらに「Slack」などと連携。発生するイベントから処理の自動実行、REST APIで呼び出し、モバイルアプリからの呼び出しが可能。


使いやすさ、ドキュメントなど

先行するAWS Lambdaは他のAWSのサービスと違和感のない使い方を実現し日本語ドキュメントも充実、追うAzure FunctionsはMicrosoftらしいVisual Studioとの連携といった特色をだしている。OpenWhiskはオープンソースの世界との親和性が高い。Google Cloud Functionsについては、現時点でアルファ版なので今後の追従に期待したい。

AWS Lambda Azure
Functsions
Google Cloud
Functions
IBM Bluemix
OpenWhisk
使いやすさ 日本語コンソールからの設定。AWSとして一貫した使い方。関数を記述するWeb UIが提供される。 日本語コンソールからの設定。Azureとして一貫した使い方。開発はWeb UIまたは任意のIDEが使用可能。処理のモニタリングができるダッシュボードも提供。 Google Cloud のコンソールに統合されているが、言語は英語。 日本語化されたBluemixのコンソールに統合されており、グラフィカルに設定・操作が可能。開発はWeb UIまたは任意のIDEが使用可能。
マニュアルや
書籍など
主要な情報は日本語で提供されている。 主要な情報は日本語で提供されている。 Webページやドキュメントは英語のものが多い。 主要な情報は日本語で提供されている。


拡張性や可用性について

サーバーレス に最も期待されるのは「拡張性や可用性について意識する必要がない」という点であろう。これは間違いではないが、一方で制約事項や注意点が存在する。例えばLambdaでは、最長実行時間は5分まで、同時実行数はデフォルトで100まで、また、他のサービスも同様だが、初回の処理では実行するコンテナーを起動するため遅延が発生する。Lambdaの場合はこのような制約も日本語のドキュメントがあり明確だが、他のサービスではまだ明確ではないようだ。すなわち性能やスケーラビリティにシビアな処理においては実際にテストを行って適合性を判断する必要がある。可用性についても例えばLambdaでは処理の再起動は3回までという制約があり、現時点において、ノーダウンを前提とするような処理を想定していないと考えるべきである。

AWS Lambda Azure
Functsions
Google Cloud
Functions
IBM Bluemix
OpenWhisk
拡張性 リクエストに応じて処理能力やリソースは自動的にスケール。 自動的にスケール。 自動的にスケール。 処理能力やリソースは自動的にスケール。IBMは1秒あたり数千回の並行要求までスケール可能だとしている。
可用性 レプリケーションと冗長化によって高い可用性を実現するとしている。メンテナンス時間や定期的なダウンタイムはない。 詳細は明らかでないが、SLAを規定している。 2017年2月の時点でアルファ版のため明らかでない。 詳細は明らかでない
SLA SLAは特にない。 99.95%のSLAを規定 2017年2月の時点でアルファ版のため明らかでない。 SLAは特にない。


自動化、セキュリティ、データセンターなど

各社のサービスはマネージドサービスとして提供されインフラやプラットフォームの運用管理をする必要はない。セキュリティに関しては、AWSのIAM によるアクセスコントロールが可能なLambdaが他AWSのサービス同様のセキュリティを実現している。Azure Functions と IBM OpenWhiskはどちらかといえばAPI Management的なセキュリティの考え方である。データセンターについては、AWS LambdaとAzure Functionsは日本のデータセンターが利用できる。

AWS Lambda Azure
Functsions
Google Cloud
Functions
IBM Bluemix
OpenWhisk
自動化 マネージドサービスとして提供されインフラの管理はない。 マネージドサービスとして提供されインフラの管理はない。 マネージドサービスとして提供されインフラの管理はない。 マネージドサービスとして提供されインフラの管理はない。
セキュリティ セキュリティグループやネットワークアクセスコントロールリストを使用して、Lambda の処理とリソースのアクセスをコントロール。LanbdaはVPC内部で実行される。 HTTPでトリガーされる関数に Azure Active Directory, Facebook, Google, Twitter, などのOAuthによる保護が可能 通信はHTTPSによって暗号化される。 簡素なAPIゲートウェイの機能を持ちOpenWhixkのアクションのマッピングが可能。
データセンター Lambdaは東京をはじめとする主要リージョンで利用可能。 東日本、西日本を含むAzureの主要リージョンからサービスが提供されている。 2017年2月の時点でアルファ版のためリージョンなどは未定で東京のデータセンターは利用できない。 Bluemixは米国、イギリス、シドニーのデータセンターからの提供。または自社ローカルでの配備も可能。


実績、エコシステム、価格など

実績に関して、現時点においては先行するAWS Lambdaが他を圧倒するといえる。エコシステムに関しては現時点で評価するのは時期尚早であろう。価格に関しても、現時点で高い安いといった評価がしにくい状況であるが、各社ともにかなり使いでのある無料枠を用意しており、サーバーレス に興味があるアーリーアダプターが簡単に評価できる。

AWS Lambda Azure
Functsions
Google Cloud
Functions
IBM Bluemix
OpenWhisk
実績・シェア 日経新聞の電子版、Gunosyのニュースパス、GPSトラッキングプラットフォーム「Trackrr.io、Seattle Timesの画像リサイズ処理、LocalyticsのS3, Kinesisとの組み合わせ、Zillowのモバイルのトラッキングなど Accuweather、Plexureなど 2017年2月の時点でアルファ版のため明らかでない。 Santander Group、LogitBot、Altoros、Nepenteなどが採用
エコシステム AWSのパートナー各社がLambdaやAPI Gatewayのインテグレーションサービスを提供 Azureのパートナー各社がインテグレーションサービスを提供 2017年2月の時点でアルファ版のため明らかでない。 OpenWhiskはオープンソースとして公開されており、エコシステムの拡大が期待される。SiteSpiritなどが対応表明している。
価格 リクエスト回数の料金とコンピューティング時間の料金の合算で課金。1 か月に 1,000,000 件の無料リクエストおよび 400,000 GB-秒のコンピューティング時間が無料利用枠。それ以降は0.0000002 USD/リクエスト。 リソースの使用量と実行回数に基づいて課金される。月間無料使用分として、月あたり 100 万回のリクエストと、400,000 GB 秒のリソース使用量が含まれる。以降は¥0.001632/GB 秒(実行時間)と100 万実行回数あたり ¥20.41の合算。 2017年2月の時点でアルファ版のため明らかでない。 ギガバイト秒 (GB-s) で測定されるリソース使用量に基づく料金体系。無料枠には、1 カ月に 400,000 GB 秒のコンピュート時間が含まれ、それ以降は、実行 GB 秒当たり $0.000017。256MB のメモリーで、1 回当たり 500 ミリ秒、1 カ月に 500 万回の実行で$3.83。