「サーバレスとは何か」そして「サーバレスとPaaSの違い」とは。マーチン・ファウラー氏のブログに投稿された解説

2016年8月8日

サーバレスアーキテクチャは、クラウドに対応したアプリケーション開発においてホットな話題の1つと言えます。

その発端はAmazonクラウドがAWS Lambdaを発表したことですが、その後Googleが「Google Cloud Functions」を、IBMが「OpenWhisk」を、マイクロソフトが「Azure Functions」を相次いで発表し、主要なクラウドにおけるサーバレス環境が一気に整いつつあります。

Serverless Architectures

しかしサーバレスはAWS Lambdaなどの実装が先行したことなどから、明確な定義があいまいなまま普及が始まろうとしている面があります。

こうした状況を整理し、何がサーバレスなのか、PaaSと何が違うのか、といった解説が、マーチン・ファウラー氏のブログMartinFolwer.comに投稿された記事「Serverless Architectures」で行われています(記事の著者はMike Roberts氏)。

全文は非常に長く、例も含めて詳細に解説していますが、ここでは「サーバレスとは何か」「PaaSとサーバレスは何が違うのか」というポイントを引用して紹介しましょう。

サーバレスの定義

まずはサーバレスの定義について。記事ではサーバレスにはBaaS的なものとFaaS的なものの2種類があるとしています。

  1. Serverless was first used to describe applications that significantly or fully depend on 3rd party applications / services (‘in the cloud’) to manage server-side logic and state. These are typically ‘rich client’ applications (think single page web apps, or mobile apps) that use the vast ecosystem of cloud accessible databases (like Parse, Firebase), authentication services (Auth0, AWS Cognito), etc. These types of services have been previously described as ‘(Mobile) Backend as a Service’, and I’ll be using ‘BaaS’ as a shorthand in the rest of this article.

  2. サーバレスは当初、サードパーティの(クラウドの中の)アプリケーションやサービスにサーバサイドのロジックやステートの大部分もしくは全部の管理を依存するアプリケーションを表すのに使われた。典型的なものとして“リッチクライアント”アプリケーション(シングルページWebアプリやモバイルアプリなどを思い浮かべてほしい)で、クラウドでアクセス可能なデータベース(ParseやFirebaseなど)、認証サービス(Auth0、AWS Cognitなど)、などを利用するものがある。こうしたサービス群はかつて“(モバイル)バックエンドサービス”と呼ばれており、この記事では以後“BaaS”と書くことにする。

  3. Serverless can also mean applications where some amount of server-side logic is still written by the application developer but unlike traditional architectures is run in stateless compute containers that are event-triggered, ephemeral (may only last for one invocation), and fully managed by a 3rd party. (Thanks to ThoughtWorks for their definition in their most recent Tech Radar.) One way to think of this is ‘Functions as a service / FaaS’ . AWS Lambda is one of the most popular implementations of FaaS at present, but there are others. I’ll be using ‘FaaS’ as a shorthand for this meaning of Serverless throughout the rest of this article.

  4. サーバレスとはまた、いくつかのサーバサイドロジックがアプリケーションデベロッパーによって書かれるものの、伝統的なアーキテクチャとは異なり、イベントでトリガーがかかるステートレスなコンテナ上で実行される短命(おおむね一回の呼び出しごと)かつサードパーティによるフルマネージドなもの、という意味もある。
    (最新のTech Radarで定義したThoughtWorksによると)その1つは“Function as a service / FaaS”だと考えられる。現時点でAWS LambdaはFaaSのもっともポピュラーな実装だが、ほかにもある。この記事では以後、この意味でのサーバレスは“FaaS”と記述する。

現在サーバレスとして話題になっているのは、後者のFaaSですね。元記事でもFaaSを中心に解説が進んでいます。

PaaSとサーバレスとの違い

記事ではPaaSとサーバレスとの違いについても触れています。この違いをどう説明するのか、気になる方も多いのではないでしょうか。

Given that Serverless FaaS functions are very similar to 12-Factor applications, are they in fact just another form of ‘Platform as a Service’ (PaaS) like Heroku? For a brief answer I refer to Adrian Cockcroft

サーバレスFaaSの機能が12-Factorアプリケーションズ(訳注:12-Factor Appとは、クラウドに適合したモダンなアプリケーション開発のベストプラクティスを解説したもの)に近いものだとして、それはHerokuのようなPaaSのもう1つの形態なのだろうか? この問いには、次のAdrian Cockroftの答えを紹介したい。

(上記のツイート)もしそのPaaSが、0.5秒実行するインスタンスを20ミリ秒以下で効率的に起動できるのなら、それをサーバレスと呼ぶ。

In other words most PaaS applications are not geared towards bringing entire applications up and down for every request, whereas FaaS platforms do exactly this.

言い換えるのならば、多くのPaaSアプリケーションはリクエストごとにアプリケーション全体を起動し終了するような方向では作られていない。しかしFaaSプラットフォームはまさにそうなっているのだ。

OK, but so what, if I’m being a good 12-Factor App developer there’s still no difference to how I code? That’s true, but there is a big difference to how you operate your app. Since we're all good DevOps-savvy engineers we're thinking about operations as much as we are about development, right?

オーケー、それがどうしたというのだ。もしも私が12-Factor Appのデベロッパーとして優秀なら、コードの書き方に何の違いがあるというのだろう。それは正しくはあるが、しかしそれをどう運用するかという点では大きな違いもある。私たちが誰もが優れたDevOps向きのエンジニアであるのだから、開発しているときから運用のことも考えているはずだ。そうだね?

元記事ではこれ以外にもサーバレスの欠点、ベンダーロックインについて、サーバレスの将来などについても詳しく解説しています(同氏のWebサイトの記事は翻訳が許可されています)。

(もし「もっとこうした方が翻訳が分かりやすい」などありましたら、Twitterやコメントなどで教えてください)

あわせて読みたい

クラウド サーバレス PaaS




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本