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

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

2019年11月15日

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

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

この記事では、MMMが今までに蓄積してきた知見をもとに、サーバーレスとはどんなテクノロジーであり、なぜ注目されているのかについて、多角的に解説したいと思います。

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

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

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

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

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

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

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

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

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

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

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

サーバーレスはコンセプトとしては新しいものではなく、昔から提唱されてきたアーキテクチャです。ここ数年で積極的に活用され始めたのは、大手クラウドサービス企業がサーバーレスのプラットフォームを非常に使いやすい形で提供開始したためです。

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

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

AWS Lambdaの利用ケース

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

リアルタイムファイル処理

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

データ連携基盤

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

IoTバックエンド

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

モバイルバックエンド

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

高性能なウェブアプリケーション

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

ユースケースの詳細は、こちらのぺージで確認できます。

大手企業も取り入れる「AWS Lambda」

従来、保守的だと思われてきた大手企業や金融機関も、AWS Lambdaを積極的に導入し始めています。

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

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

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

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

知っておきたい「クラウド」の基本」では、クラウドの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)だけを利用者が開発し、それ以外のサービスはすべてクラウドサービス企業が責任を持つ形態を指します。BaaSとは、認証機能や通知機能、データベースなど、多数のサービスで共通して利用されるバックエンド機能をまとめて提供し、利用者によるサーバー管理が不要になるというものです。

FaaSもBaaSも、サーバーレスアーキテクチャの1つの形態であり、ほぼ同じ意味で言及されることも多い言葉です。

サーバーレスアーキテクチャのメリット

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

インフラ運用の簡素化

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

コンピューティングリソースの最適化

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

真の従量課金制

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

スケーラビリティ(拡張性)の向上

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

マイクロサービスの実現

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

ビジネス・アジリティ(俊敏性)の向上

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

前述でも触れた通り、ITインフラの歴史は仮想化(抽象化)などを推し進めることにより、このような方向へ発展してきましたが、それを極限まで追及したのがサーバーレスアーキテクチャーだと言えます。サーバーレスが注目されている理由は、このような背景を持つテクノロジーが急速に世の中に普及し、ITサービスを変革し始めているためです。

サーバーレスのデメリット

逆に、サーバーレスを導入することで生じるデメリットをまとめると以下のようになります。

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

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

レイテンシー問題

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

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

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

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

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

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

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

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

サービスの監視

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

プロセスの監視

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

リソースの監視

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

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

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

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

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

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

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

MMMの取り組み

今まで解説してきた通り、サーバーレスは、ITインフラを変革し、社会をより良くするための重要なテクノロジーだと考えられます。

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

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

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 ※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営業日内にご回答いたします。