2017. 05. 25 Update !

イマ旬

New Serverless Architecture called FaaS

2014年にAmazonがLambdaをリリースし、当初のサーバレスアーキテクチャからは一線を画すパラダイムシフトを起こしました。
これらAmazonが変化させた新しいサーバレスアーキテクチャのメリット・デメリットを解説します。

本村 昭太郎
株式会社NTTデータ テレコム・ユーティリティ事業本部
第一テレコム事業部
主任 本村 昭太郎

イマ旬の注目キーワード
FaaS

FaaS(Function as a Service)

当初、サーバレスという言葉は、バックエンドアプリケーションを動かすためのサーバのセットアップと管理を、開発者が気にする必要がないことを意味していました。これらバックエンドに配置されるインフラストラクチャサービスをBaaS(Backend as a Service)やmBaaS(mobile Backend as a service)などと呼んでいました。

しかしながら、AmazonがリリースしたLambda※1は当初、世に存在していたサーバレスアーキテクチャとは異なり、クラウド上で動かすアプリケーションに新しいアーキテクチャを取り入れたのです。それは至ってシンプルで、特定のイベントに応じて実行されるアプリケーションコードを書くだけで、実行するサーバのプロビジョニングやスケールについてはクラウドベンダが行ってくれるというものです。ユーザはコード実行に利用したリソース分のみ金額を支払えば良いのです。

今ではこれらの新しいサーバレスアーキテクチャサービスをFaaS(Function as a service)と呼び、Google Cloud Functions※2、Microsoft Azure Functions※3等多くのクラウドベンダがサービス提供しています。

FaaSのメリット

サーバーレスアプリケーションを実装するメリットについては、サーバリソースを保持する必要が無いため『コストの大幅な削減』、イベントに応じた実行リソースを自動で拡張してくれるため『高いスケーラビリティ』、そして『インフラリソースの運用管理が不要』となると言われています※4。つまり、ビジネス価値を生みにくい部分をサーバレスサービス提供ベンダへオフロード可能なのです。

これらのメリットにより、FaaSを利用することでサーバサイドやインフラがわからないフロントエンジニアがキャパシティやセキュリティを考慮せずにシステムを実装することが可能となります。インフラエンジニアの私としては脅威のサービスと言わざるを得ません。

我々のチームでは5年も前からIaaSを利用し大規模なシステムを数多く実現してきました、そこではInfrastructure as Code※5を駆使して大規模なクラウドリソースを一元管理し、自動構築可能なクラウド管理ソリューションも作成しましたがFaaSやSaaSだけでシステム化できればそのようなものは不要の産物となってしまいます。

図1:FaaSの3つのメリット

図1:FaaSの3つのメリット

FaaSのデメリット

図2のような負荷特性をもつアプリケーションを動作させているとき、通常のIaaS利用の場合は一台分の費用がかかりますが、FaaS利用の場合は実行した時間と回数で課金されるため斜線部のコストカットが可能となります。
したがって、待機が多いシステムや負荷に緩急のあるシステムではFaaSを利用することで。TCOを半分以上も低減することが可能となります。

しかしながら、逆を言えば常にサーバ負荷が多いケースにおいてはこの限りではありません。また、FaaSには大きな落とし穴が多く潜んでいます。
例えば、FaaSは極小の単一アプリケーションに細分化する必要がありますが、この細分化に開発オーバヘッドがかかったり、インフラのリソース管理から開放されますが、その分多くのコードを管理する必要が発生したり、現時点でまだフレームワークが充実していないという点などが挙げられます。

図2:IaaSとFaaSコスト比較イメージ

図2:IaaSとFaaSコスト比較イメージ

FaaSの今後

FaaSはまだまだ未成熟であり、どのように使うか、使えるかなどServerlessConf(サーバレスアーキテクチャを用いたアプリケーションの構築における経験の共有を目的とした、コミュニティ主導でベンダーニュートラルな技術カンファレンス)やDevelopers Summit(技術者コミュニティとの連携から生まれた総合ITカンファレンス)※6など多くの場所で議論されております。これらの動向やServerless Framework(Serverless Inc.が作成しており、FaaSを利用したWeb、モバイル、IoT向けアプリケーションの構築を助けるオープンソースプロジェクト)※7の拡充なども注視しながら、FaaSの使い所を見極めることで、お客様に低コストでビジネススピードを加速させることのできる武器として提案することができるでしょう。

※2 Google Cloud Functions

https://cloud.google.com/functions/

※5 Infrastructure as Code(インフラストラクチャーの構築・運用をコード化するもの)

イマ旬記事
http://www.nttdata.com/jp/ja/insights/trend_keyword/2013053001.html

※4 FaaSの3つのメリット

出展 Serverless Anti-patterns
https://www.slideshare.net/keisuke69/serverless-antipatterns?from_action=save

※6 ServerlessConfやDevelopers Summit

・ServerlessConf
http://tokyo.serverlessconf.io/
・Developers Summit
http://event.shoeisha.jp/devsumi