なぜサーバーレスが注目されているのか?

ゼロから学ぶサーバーレスアーキテクチャ(FaaS)入門

2020年3月17日

今、ITインフラ分野で最も注目されているテクノロジーの1つが、「サーバーレス(FaaS)」です。ガートナーが提言する重要なインフラ技術のトレンド・トップ10では、サーバーレスが真っ先に挙げられています。(※1)

WebやITサービスのビジネスに関わる人であれば、この新たなパラダイムの意味をよく理解しておきたいところですが、サーバーレスという言葉を聞いてピンと来る人は、まだ少ないかもしれません。インフラ技術の世界では広がりつつあるアーキテクチャーではあるものの、一般の方にはまだ理解されにくいテクノロジーです。

この記事では、MMMが今までに蓄積してきた知見をもとに、サーバーレスが注目されている理由、メリットや事例、AWSでのサーバーレスの活用方法、またサーバーレスの1形態であるFaaS(Function as a Service)など、サーバーレスの入門記事として多角的な解説をしたいと思います。

なぜサーバーレス(FaaS)が登場したのか?

Web検索をすれば入門的な記事がたくさん出てくる通り、サーバーレス(FaaS)という言葉の定義を一言で言えば、「サーバーの管理を必要としない仕組み(アーキテクチャー)」となります。

誤解を招きやすい点ですが、サーバーの管理が要らないと言っても、サーバーを使わないわけではありません。アプリケーションは必ず、物理的なサーバーの上で稼働します。サーバーレスの意味は、サーバーは裏で動いているものの、利用者には隠され、見えない存在になるということです。

それでは、なぜこのようなサーバーレスの仕組みが登場し、あっという間に開発現場で取り入れられたのでしょうか?

それは、多くのエンジニアにとって、ややこしいサーバーの管理から解放されることが長年の悲願だったからです。サービスを開発するエンジニアが本来やりたいこと・やるべきことは、サービスそのもの(アプリケーション)の開発であり、サーバーの管理には時間を割きたくありません。AWSなどによる実用的なサーバーレスのプラットフォーム(FaaS)の登場は、エンジニアの悲願が叶った瞬間でした。

また、サーバーレスのメリットは、イベント駆動という点です。サーバーレスでは従来の常時稼働するサーバーは存在せず、何らかのイベントが発生したときに初めて機能が実行されます。イベントとは、例えば、Webぺージやアプリでボタンが押される、ファイルがアップロードされる、データベースにデータが追加される、APIが呼び出される、といった事例です。イベントが発生していないときは機能は実行されず、サーバーがリクエストを待ちながらずっと稼働するようなこともありません。利用者が行うことは機能の開発と、それを駆動させるトリガーを設定することだけで、あとは全てプラットフォームに任せることができます。このようなメリットを指して、FaaS(Function as a Service)と表現されることもあります。

ITインフラの進化の最先端

ところで、ITインフラの進化の歴史を振り返ってみると、ITインフラは「仮想化(抽象化)」のメリットを積み重ねて進化してきたと言えます。仮想化(抽象化)とは、コンピュータのリソース(サーバー、OS、ネットワーク、ストレージなど)の物理的な構成を利用者から見えなくして、よりシンプルで使い勝手の良いサービスを動作させたり、リソース利用の効率化を図るためのテクノロジーを指します。

かつて、コンピュータはたった1台で物理的に独立して動いていました(A)が、やがて1台のサーバーを複数のサーバーが動いているように機能させる、仮想マシン(バーチャルマシン)が発達(B)。さらに、コンテナによってアプリケーションのプラットフォームが仮想化されました(C)。最終的に、「機能」が動くプラットフォームまでを仮想化することで生まれた画期的な仕組みが、サーバーレスアーキテクチャです(D)。

ITインフラの進化の歴史

サーバーレスは、仮想化(抽象化)のメリットを追及してきたITインフラ進化の王道であり、その最先端を走っている形になります。

サーバーレスは、仮想化(抽象化)のメリットを追及してきたITインフラ進化の王道であり、その最先端を走っている形になります。

サーバーレス(FaaS)をリードする「AWS Lambda」

サーバーレスはコンセプトとしては新しいものではなく、昔から提唱されてきたアーキテクチャです。ここ数年で積極的に活用される事例が増え始めたのは、大手クラウドサービス企業がサーバーレス(FaaS)のプラットフォームを非常に使いやすい形で提供開始し、採用する企業やエンジニアにとって多くのメリットが生まれてきたためです。

Amazon Web Services(AWS)は、2014年11月に「AWS Lambda(ラムダ)」というサーバーレス(FaaS)のサービスを開始しました。続いて、2016年3月にMicrosoftのAzure Functions、2017年3月にGoogle Cloud Functionsが一般向けに公開されました。

現時点で世界で最も利用されているのは、AWS Lambdaです。(※2)いち早く公開したため一日の長があり事例が豊富なことや、AWSが提供する他サービスとの連携が容易なことなど、多くのメリットが世界中の開発者に評価されています。

AWSを用いたサーバーレスアーキテクチャ(FaaS)利用ケース

サーバーレスアーキテクチャのメリットを活用できる領域は、広範囲に渡ります。特に真価を発揮できる利用ケースをご紹介します。

事例1:リアルタイムファイル処理

リアルタイムのファイル処理は、サーバーレスが得意な分野の代表例です。例えば、ユーザーがファイルをアップロードしたら、即時にサムネイルを作成してWebぺージに表示するといった処置に最適です。ファイルの検証や形式変換、インデックス作成などにも対応できます。

事例2:データ連携基盤

データベースに取り込んだデータに対して、検証、フィルタリング、ソート、変換などの処理を行い、データストアに格納。高度なデータ分析を行う環境を実現できます。

事例3:IoTバックエンド

センサーで取得したデータを受信し、クレンジング、集計、特異データの検出、後続処理への連携などを行うバックエンドを構築できます。

事例4:モバイルバックエンド

ユーザーがモバイル端末で行うアクションをトリガーとしてバックエンドへ連携し、プッシュ通知の送信などの処理を行うことができます。

事例5:高性能なウェブアプリケーション

サーバーレスと様々なサービスを組み合わせることで、スケーラビリティ(拡張性)や耐障害性に優れ、データのバックアップも確実に行う、高性能なウェブアプリケーションを構築できます。

利用ケースの詳細やその他の入門的な解説記事は、AWSのこちらのぺージで確認できます。

大手企業のAWSを活用したサーバーレス(FaaS)導入事例

従来、保守的だと思われてきた大手企業や金融機関も、サーバーレス(FaaS)のメリットに気付いて積極的に導入し始めており、多数の事例が公開されています。

例えば、日本経済新聞社は、日経電子版の紙面ビューアーの画像処理にAWS Lambdaを用いて、パフォーマンスの改善を図っています(※3)。三菱東京UFJ銀行は、残高照会などを行うサービスの開発に、AWS Lambdaを採用したことで話題になりました(※4)。また、ゲーム大手のスクウェア・エニックスは、同社の看板タイトル「ドラゴンクエストⅩ」で、AWS Lambdaの高いスケーラビリティというメリットを生かして、ゲーム内イベント時のスパイクの問題を解決しています(※5)。

世界を見ても、サーバーレスのメリットを生かした事例が多数あります。Netflix(ネットフリックス)がAWS Lambdaを使ってインフラを構築し、世界中のユーザーに動画を配信したり(※6)、お掃除ロボットを販売するiRobotが、インターネット接続型の「ルンバ(Roomba)」のプラットフォームの構築に、AWS Lambdaやその他のAWSサービスを使ったりしています(※7)。私たちが日常的に使うサービスの裏で、サーバーレスアーキテクチャ(FaaS)が活躍しています。

サーバーレスとクラウドサービス

続けて、サーバーレスの技術的な側面について触れます。

知っておきたい「クラウド」の基本」では、クラウドの3種のサービスモデルについて解説しました。サーバーレスは、このサービスモデルの考え方に当てはめると、PaaS(Platform as a Service)とSaaS(Software as a Service)の間に位置付けられます。

サーバーレスアーキテクチャの位置付け

コンピュータの階層はアプリケーション(ソフトウェア)、プラットフォーム(OS)、インフラストラクチャ(仮想サーバ)に分かれ、サーバーレスアーキテクチャはPasSとSaaSの中間に位置付けられる。

この図のとおり、アプリケーションの階層に関して、利用者とプラットフォーム側で役割分担するのがサーバーレスアーキテクチャーです。機能(コード)は利用者が担い、そのプラットフォームはクラウドサービス企業が担います。

FaaS(Function as a Service)とBaaS(Backend as a Service)

サーバーレスと同時によく使われるキーワードが、「FaaS(Function as a Service)」や「BaaS(Backend as a Service)」です。

FaaSは、イベントが発生したときに起動させる機能(Function)だけを利用者が開発し、それ以外のサービスはすべてAWSなどのクラウドサービス企業が責任を持つ形態を指します。BaaSとは、認証機能や通知機能、データベースなど、多数のサービスで共通して利用されるバックエンド機能をまとめて提供し、利用者によるサーバー管理が不要になるというものです。

FaaSもBaaSのどちらもサーバーレスアーキテクチャのメリットを生かした1つの形態であり、特にFaaSに関してはほぼ同じ意味で言及されることが多い言葉です。

なお、FaaSもBaaSも、AWSなどの大手プラットフォームで実現することができます。

サーバーレス(FaaS)のメリット

ここまで、サーバーレスの基本的な事項を説明してきましたが、以上を踏まえたうえでサーバーレスアーキテクチャ(FaaS)を導入するメリットを整理すると、以下のようになります。

メリット1:インフラ運用の簡素化

利用者がサーバーの構築・運用を行う作業が不要になります。

メリット2:コンピューティングリソースの最適化

トリガーとなるイベントが発生したときだけコードが実行されるため、メモリやCPUなどのコンピューティングリソースを無駄遣いしません。

メリット3:真の従量課金制

常駐サーバーのコストがかかり続けるようなことはなく、コードが実行されたときの時間分だけ課金されます。

メリット4:スケーラビリティ(拡張性)の向上

システムの利用や負荷の増大に応じて、自動的に性能を拡張します。

メリット5:マイクロサービスの実現

粒度の小さいサービスを疎結合してアプリケーションを構成する、マイクロサービス向けのプラットフォームとしてサーバーレスを活用できます。

メリット6:ビジネス・アジリティ(俊敏性)の向上

サーバーレスや、関連するサービスを組み合わせることで、サービスの市場投入や製品の改善に必要な時間を短縮できます。

前述でも触れた通り、ITインフラは仮想化(抽象化)を推し進める歴史を歩んできましたが、その仮想化のメリットを極限まで追及したのがサーバーレスアーキテクチャー(FaaS)だと言えます。サーバーレスが注目されている理由は、このような背景を持つテクノロジーが、AWSなどの大手クラウド事業者の努力によって急速に世の中に普及し、ITサービスを変革し始めているためです。

サーバーレス(FaaS)のデメリット

逆に、サーバーレスアーキテクチャ(FaaS)を導入することで生じるデメリットをまとめると、以下のようになります。

実行時間や消費可能リソースの制約

現在提供されているサーバーレスのプラットフォームは実行時間や消費可能なリソースに制約があるため、例えば長時間のバッチ処理などには向いていません。

レイテンシー問題

ネットワークを介して処理が実行されるため、遅延が生じることがあります。

サーバーレスの特性上、レイテンシーの問題などは今後も考慮が必要とされるでしょう。サーバーレスは優れた仕組みであるものの、あらゆる状況に適応できる万能策ではありません。様々なプラットフォームのコンセプトや特性、運用の実務を理解して、適材適所で選択していくことが必要になります。

なお、サーバーレスのデメリットの1つとして、ベンダーロックインの問題もこれまで指摘されてきました。サーバーレスの技術仕様が標準化されていないため、クラウドサービス間の連携や、サービスの乗り換えが難しかったのです。

そのため、CNCF(Cloud Native Computing Foundation)というクラウドネイティブコンピューティングを推進する非営利団体が中心となり、技術仕様の標準化を進めてきました。2019年10月28日には、イベント通知の標準仕様である「CloudEvents 1.0」が公開され(※8)、既に多数の企業がこの仕様を実装したり、サポートすることを公表したりしています。このような動きが進むことで、ベンダーロックインの問題は今後解消に向かっていくと考えられます。

サーバーレス(FaaS)の「監視」が重要なテーマに

サーバーレスやAWSにより、開発者にとって理想的な世界が到来したかのような印象もありますが、必ずしもそうではありません。サーバーレスが発展したその裏側では、また新たなニーズや課題が生まれているからです。

サーバーレスにともなう大きな課題の1つは、「監視」です。今までもこれからも、ITインフラを監視し、正常にサービスを提供できているかチェックすることが必要ですが、この業務がサーバーレスの登場によって大きく変化すると考えられるためです。

従来のITインフラの監視は、以下から成り立っていました。

サービスの監視

サービスが正常に動作しているかのチェック

プロセスの監視

サービスの動作に必要なプロセスが稼働しているかのチェック

リソースの監視

CPU使用率やメモリ使用率などが適正な範囲に収まっているかのチェック

一方で、サーバーレスを導入すると、プロセスの管理はプラットフォーム側に任せる形となるため、プロセスの監視が不要となります。

また、従来リソースの監視は、リソースの使用状況をチェックし、上限をオーバーしたら手作業でサーバーを増強させるなどの対応が必要でしたが、サーバーレスはもともとスケーラビリティ(拡張性)が高いメリットがあるため、この業務は無くなります。逆に、前述のとおり、AWSなどの現行のサーバーレスのプラットフォームは実行時間や消費可能リソースに制約があるため、これらの上限を超えないように監視する必要があります。

また、スケーラビリティ(拡張性)に優れているということは、無限にスケールすることで、コストも無限に発生する可能性があるということです。そのため、現在のスケールの状況や、かかっているコストを監視する必要があります。ビジネス上の制約でコストが一定の上限を超えられないケースもありますが、そのような場合にはコストの上限を決めて、上限を超えそうになったら縮小運転をするような仕組みを準備しておくといった運用が考えられます。

1つの事例としては、AWSには、コストがあらかじめ設定しておいた一定額を上回ったときに、自動的に請求アラームを通知してくれる機能があります。そのアラームの作成・編集・削除などはAWS上で簡単にできるようになっているため、安全な運用を行う上で非常にメリットの大きい機能です。大手プラットフォームにおいてこのような機能が次々に投入されているため、うまく活用していくことも大切です。

サーバーレスとAWSが生み出す新たなエコシステム

前項では「監視」領域についてご紹介しましたが、他にも、セキュリティを確保する仕組み、サーバーレスと連携するAPI、デバッグやデプロイのツールなど、サーバーレスの導入にともなって様々な課題に取り組むことが必要になります。どれも重要なテーマであり、開発者にとって大きなビジネスチャンスであるとも言えます。

サーバーレスが世の中に広まるにつれ、今はまだ見えていない課題も発生するかもしれません。サーバーレスやAWSを中心として、インフラ技術の新たなエコシステムが生まれていくでしょう。

MMMのサーバーレス(FaaS)とAWS活用への取組み

今までサーバーレス入門記事として、AWSを活用したサーバーレスのメリットや事例などについて解説してきましたが、いかがでしたでしょうか。

MMMは、多くのお客様にサーバーレスのメリットを届けることができるよう、AWS Lambdaを使ったサーバーレスアーキテクチャの構築・運用に関して実績を積み、知見を高める努力を行っています。詳しくは以下のぺージで解説しています。

サーバーレスアーキテクチャ(AWS Lambda)

Dockerコンテナ基盤(AWS Fargate/Amazon ECS)

Datadogを活用した、サーバーレスの監視の最適化も行っています。

クラウド運用監視(Datadog)

また、AWS Lambdaを使ってBaaS機能を開発した事例を以下のぺージで紹介しています。併せてご覧ください。

クラウドサーバーレスアーキテクチャを活用してmBaaS(mobile Backend as a Service)機能を実現 | 事例紹介

MMMは、AWS Lambdaに関する高い知見や実績が評価され、2019年11月に、日本で2社目となる、AWS サービスデリバリープログラム(AWS Service Delivery Program)の「AWS Lambda」の認定を受けました。詳しくは以下のぺージで解説しています。

株式会社MMM AWSサービスデリバリーパートナー(AWS Lambdaパートナー)に認定

サーバーレスに関する疑問や相談のある方は、ぜひお気軽にお問い合わせください。

脚注
※1 Gartner Top 10 Trends Impacting Infrastructure & Operations for 2019
※2 Top 5 serverless platforms of 2018
※3 三菱東京UFJ銀行Voice Banking for Alexaβ版
※4 AWS 導入事例:株式会社 日本経済新聞社
※5 AWS 導入事例:株式会社スクウェア・エニックス
※6 Netflix & AWS Lambda Case Study
※7 iRobot の導入事例 - アマゾン ウェブ サービス
※8 Serverless Specification CloudEvents Reaches Version 1.0

お問い合わせ

見積もり依頼や詳しいご相談など、クラウド・AWSに関する困りごとをお気軽にご相談ください。
以下のお問い合わせ先から受け付けています。

お問合わせはこちら

※通常1営業日内にご回答いたします。