「サーバレス/Serverless」はデータベースやコンテナへも広がってきた
「サーバレスコンピューティング」や「サーバレスアーキテクチャ」といった言葉は、2014年にAWS Lambdaが発表され、その後広く普及したことで一気に注目を浴びるようになりました。
現在ではAWS Lambdaだけでなく、Microsoft AzureのAzure Functions、Google Cloud PlatformのGoogle Cloud Functions、IBM CloudのIBM Cloud Functionsなど、主要なクラウドサービスの多くでサーバレスコンピューティング環境が提供されています。
サーバがない、のではない。サーバ管理が不要ということ
AWS Lambdaに代表されるサーバレスコンピューティング環境は、一般にユーザーがあらかじめ用意しておいた関数を、イベントをトリガーとして実行することで何らかの処理を行うFunction as a Service的なアプリケーション実行環境を指しています。
その特長として、イベントドリブンなだけでなく、あらかじめサーバのインスタンスをプロビジョニングする必要なく実行でき、負荷に応じてインスタンス数がスケールするスケーラビリティを備えている、といったことが挙げられます。
すなわち、サーバインスタンスの管理や運用を意識する必要がないことが「サーバレス/Serverless」の特長といえます。
AWSが公開しているWebページ「サーバーレスコンピューティング(サーバー管理が不要なアプリケーション構築)|AWS」の「サーバーレスコンピューティングとは何ですか?」には、次のような説明があります。
サーバーレスコンピューティングにより、アプリケーションとサービスを構築して実行する際に、サーバーについて検討する必要がなくなります。サーバーレスアプリケーションでは、サーバーのプロビジョニング、スケーリング、および管理は必要ありません。
ただし本当に管理が不要かどうかについては議論が分かれるところかもしれません。ここでは、概念としてのサーバレスはそういうものだ、というところにとどめておきましょう。
データベースもサーバレスに
「プロビジョニングやスケーリング、管理が不要」といった特長を示す「サーバレス」という言葉は、いま、より幅広い分野で使われ始めています。
そのもっとも明示的な例が、AWSが2017年12月に発表し、今月正式版としてリリースした「Aurora Serverless」でしょう。
Aurora Serverlessは、決してAWS Lambdaで実行されるサーバレスアプリケーション専用のデータベースではありません。「Amazon Aurora」のサーバレス版です。
参考:AWS、利用時のみ自動起動し負荷に応じてインスタンスが増減するマネージドRDB「Aurora Serverless」、正式版に
Aurora Serverlessは、データベースサーバ(現時点ではMySQL)をマネージドサービスで提供します。通常のアプリケーションからAmazon Auroraと透過的に利用可能です。
そしてその名称に「サーバレス/Serverless」が含まれているように、Aurora Serverlessはデータベースサーバインスタンスのプロビジョニングは不要。クライアントからのアクセスをトリガーとして自動的にデータベースサーバのインスタンスが起動し、負荷に応じてインスタンスが動的に増減するというスケーラビリティを備えています。
つまり、従来のサーバレスコンピューティングが備えていたプロビジョニング不要でオートスケールという特長をきちんと備えているのです。
参考:AWS、利用時のみ自動起動し負荷に応じてインスタンスが増減するマネージドRDB「Aurora Serverless」、正式版に
実はデータベースの分野で「サーバレス」という用語を使っているのはAWSだけではありません。
オラクルが今月、Oracle Cloudでの自律型データベース「Oracle Autonomous Transaction Processing」の正式リリースを発表したとき、同社CTO兼会長 ラリー・エリソン氏は、その特長のひとつが「サーバレス」であると次のように説明しています。
「アプリケーションが動いていないとき、データベースに対して割り当てられるサーバはゼロだ。これをサーバレスクラウド、あるいはサーバレスシステムと呼んでいる。そしてシステムがビジーになってきたら、稼働中であっても割り当てるサーバを増やしていく」
AWS Lambdaの登場をきっかけに主要ベンダが次々と同様のサービス提供をはじめたように、「Aurora Serverless」に続いて、今後主要なクラウドベンダが、サーバレスの特長を備えたデータベースサービスを開始していくのではないでしょうか。
ちなみにこのあと、エリソン氏は「Amazonではこんなことはできない」と発言していましたが、Aurora Serverlessが登場したことで、次からはそう言えなくなってしまいましたね。
Googleはコンテナ実行環境をサーバレス化する
コンテナの領域でもサーバレスが登場しています。
Googleは、サーバレスでコンテナの実行環境を提供する「Serverless containers」を、7月にサンフランシスコで開催したイベント「Google Cloud Next '18」において発表しました。
参考:[速報]Google、コンテナ実行環境をサーバレスで提供する「Serverless containers」発表。Google Cloud Next '18 - Publickey
AWS Lambdaに代表されるこれまでのサーバレスコンピューティングは、プログラミング言語の実行系をサーバレスの実行環境で提供しているため、利用者がプログラミング言語を自由に選ぶことができませんでした。
Serverless containersは、文字通りコンテナの実行環境をそのサーバレス環境とするものです。コンテナとして実行できるものであれば何でも実行できるため、プログラミング言語に縛られることなくサーバレスなアプリケーションを開発し実行できるようになります。
さらにGoogle、Pivotal、IBM、SAP、Red Hatらが共同で開発しているオープンソースの「Knative」(ケイネイティブ)は、Kubernetes環境でコンテナベースのサーバレスアプリケーションを実現するためのコンポーネント群です。これを利用すれば、クラウド環境に依存せずにサーバレスなアプリケーションを実現できるようになるとされています。
これまで紹介してきたように、「サーバレス」という用語が示す「プロビジョニングやスケーリング、管理が不要」という特長は、データベースやコンテナなどの幅広い分野の実行環境へ広がりつつあります。
これまで「サーバレス」という用語は主にFaaS的なアプリケーション実行環境を連想させました。しかしこれからは、アプリケーションやミドルウェアの特長を示すより一般的な用語になっていくのではないでしょうか。
関連記事
サーバレスと従来のPaaSとの違いなどについて、マーチン・ファウラー氏の解説を紹介しています。
あわせて読みたい
コードを静的解析して脆弱性を検出する「SCALe」、米CERTがオープンソースで公開
≪前の記事
AWS、利用時のみ自動起動し負荷に応じてインスタンスが増減するマネージドRDB「Aurora Serverless」、正式版に