「仮想化」「コンテナ」の次に来るもの「サーバーレス」


サーバレスアーキテクチャは、2014年にAmazonがAWS「Lambad」を発表し、2016年にはいって、Googleの「Cloud Functions」やMicrosoftの「Azure Functions」もこの分野に参入し、注目を集めています。

サーバレスアーキテクチャは、サーバ仮想化やOSのコンテナ化に続くクラウドサービスの技術として注目されています。この、サーバレスアーキテクチャが、今までのクラウドサービスと、どのように違うのでしょうか。

「仮想」「コンテナ」「サーバレス」の違い

まずはじめに、サーバレスアーキテクチャがサーバ仮想化やOSのコンテナ化とどのように違うのかを説明します。

サーバ仮想化は、ハードウェアを含めた「サーバ」をソフトウェア上で再現する技術です。AWSのサービスで言うとEC2にあたる物であり、それがクラウド上にあったとしても物理サーバと同様に、サーバスペックの検討が必要な点で、物理サーバとの違いはありません。

OSのコンテナ化はOSを分離して複数区分に分けることによって独立したアプリケーションを実行する環境を提供します。ある意味ではOSをソフトウェアで再現した物と言えます。コンテナ化によって開発者の負担は大幅に減りました。しかし、環境について全く考えなくて良いかというと、そこまでは至っていません。ちなみにAWSにもコンテナサービスは存在しています。AWS ECSがそれにあたります。

では、サーバレスアーキテクチャとはどのような物でしょうか。それは、OSのことすら考える必要が無く、アプリケーションを実行するだけの基盤といえるものです。
サーバレスアーキテクチャでは、開発者はインフラについて考える必要がなくなり、アプリケーションの開発に集中できるというわけです。

もちろん、サーバレスアーキテクチャだからといってサーバが実在しないというわけではありません。サーバレスアーキテクチャの基盤部分の管理が全てクラウドサービス提供者の責任範囲になるために、開発者はサーバの運用やスケールについて検討する必要がなくなると言うことです。

サーバレスアーキテクチャ仕組みとメリットとは

サーバレスアーキテクチャの仕組み

サーバレスアーキテクチャの仕組みをAWS Lambdaで説明すると、開発者は、Lambdaに必要なコードを配置しておくだけで、APIリクエストなどの特定のアクションに対してLambdaが起動し、コードを実行てくれます。一般的に、このトリガーによるアプリ起動から終了を、20ミリ秒以下で実施する事のできるマイクロサービスをサーバレスアーキテクチャと呼びます。
AWS Lambdaは、AWSの各サービスをAPIによって繋ぐことによって、直接実行出来るようになっています。

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

サーバレスアーキテクチャのメリットの一つ目は、コストが安句なる可能性があることです。例えば、1日数回数時間おきにバックアップを実施するプログラムや、API呼び出しに対して対応を行うプログラムをEC2で実施しようとすると、バックアップ待ちの時間や、APIの呼び出しを待つ間ずっとサーバを起動していなければならず、その間課金され続けます。

それに対して、サーバレスアーキテクチャは、Lambdaに対する呼び出しをトリガーとしてアプリケーションを起動し、終了後すぐに停止します。この呼び出しから終了の時間に対して課金される仕組みになっています。

サーバレスアーキテクチャを使えば、実施頻度の少ないアプリケーションほど、EC2などの時間課金のサービスに対してコストのメリットが大きくなります。

次のメリットは、スケールについても開発者は考える必要が無いことです。
通常、アプリケーションの負荷の増加を見越してサーバなどのスペックを決定していました。ピークに合わせてサーバを調達するのでピーク以外は資源の無駄遣いと言えました。

しかし、Lambdaのようにマイクロ秒単位で起動終了するマイクロサービスでは、呼び出し回数に対して児童にスケールされます。そのために、開発者がサーバのスペックなどを検討する必要がなくなるわけです。

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

サーバレスアーキテクチャのデメリットの一つは、利用できる言語が限られていることです。LambdaではNode.js,Python,Javaが利用できます。
二つ目にJavaはクラスの読み込みに時間がかかることがあり、Node.jsに比べるとコストがかかるというデメリットもあります。加えて、マイクロサービスではない通常のサービスをサーバレスアーキテクチャに載せることに意味はありません。

すべてをサーバレスにするのは妥当ではない

このように、サーバレスアーキテクチャは、トリガーによって比較的簡単なコードを実行するマイクロサービスやナノサービスにおいて実力を発揮します。そういうわけで、今あるアプリケーションを全てサーバレスに移行きるわけではありません。

しかし、今後はサーバレスアーキテクチャをベースにした、マイクロサービスやナノサービスを利用し、サービス間、API間をつなぐことによって、あたらしいメンテナンス性が良くて柔軟なアプリケーションやサービスを構築することができるようになっていくと思われます。


関連記事一覧

we love develop
アプリやシステムの開発を通じて、お客様のビジネスを成長させることが私たちのビジネスです。お気軽にお問い合わせください。
 お問い合せ

お電話でのお問い合わせはこちらから
TEL:03-5297-2871

メールマガジンの登録

キャパでは誰かに話したくなるようなIT小ネタを、週に一回メルマガで配信しています。
ぜひ購読してみませんか?
 購読する

ホワイトペーパーの入手

ITブログ月間20万PV達成!自社オウンドメディアの運用ノウハウを無料公開しています。
 ダウンロード

記事カテゴリ記事カテゴリ

月別投稿記事

PAGE TOP