サーバーレスとは

変化し続けるテクノロジーの世界では、キャッチアップするのが難しいこともあります。そんな中、よく耳にする言葉のひとつに「サーバーレス」というものあります。その意味とはそして、そのメリットは何なのでしょうか。

現在、何となくの理由でサーバーレス・プラットフォームを使用していない人は現場のわずか35%にすぎません。そして、テック・ビジネスの主要なプレーヤーがサーバーレス・テクノロジー使用しているため、今後もこの領域は拡大し続けることでしょう。

このガイドでは、サーバーレス・コンピューティングの仕組みやその利点など、サーバーレス・コンピューティングについて知っておくべきことを余すところなくご説明します。

ぜひ読み進めていただき、このコンピューティング・テクノロジーの持つパワーを体感してください。

サーバーレスの定義

サーバーレス・コンピューティングとは、簡単に言えば、サーバーを気にせずにコードを実行する方法です。

以前は、コードを実行しようとすると、物理的なサーバー(またはサーバーのクラスタ)をセットアップして保守する必要がありました。しかしサーバーを維持するには、すべてを稼働し続けるために高価なエンジニアを雇う必要があります。サーバーレス・コンピューティングでは、そのすべてがお客様に代わって行われます。そのため、お客様はコードをアップロードするだけで、インフラストラクチャについては考えなくて済むのです。

サーバーレス・コンピューティングの仕組み

サーバーレス・コンピューティングを実現する方法はいくつかありますが、最も一般的なのは「Functions as a Service(FaaS)」と呼ばれるものです。

オラクルのようなFaaSプラットフォームでコードを実行するには、まずファンクションを作成する必要があります。ファンクションとは、あるイベントに応答して実行される小さなコードのことです。たとえば、写真共有サイトを構築している場合、誰かが新しい写真をアップロードするたびに実行するファンクションがあるかもしれません。

ファンクションを作成したら、それをFaaSのプラットフォームにデプロイする必要があります。これは通常、コマンドラインまたはIDEプラグインを使用して行われます。プロセスがデプロイされると、実行する準備が整います。誰かがイベントをトリガーすると(たとえば、新しい写真をアップロードすると)、ファンクションが実行されるので、サーバーをセットアップして管理する必要がありません。

多くのさまざまなFaaSプラットフォームがあり、それぞれ独自の機能と価格オプションがあります。オラクルは、最も人気のあるプラットフォームの1つです。

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

サーバーレス・アーキテクチャの主なメリットの1つは、サーバーのことを考える必要がなくなることです。インフラストラクチャを管理する時間やリソースがない中小企業や、個人の開発者にとって、サーバーがないことは大きな安心材料になります。

もう一つの大きなメリットは、スケーラビリティです。従来のホスティングでは、トラフィックのピーク時を想定して計画を立て、負荷を処理するのに十分なサーバーを確保する必要がありました。サーバーレス・アーキテクチャでは、これらすべてに対応します。FaaSのプラットフォームは、必要に応じてファンクションのスケールアップまたはスケールダウンができるため、長期的に見て多くのコストを削減することができます。

サーバーレス・コンピューティングの最も魅力的な側面の1つは、その従量課金制の価格モデルです。従来のホスティングでは、使っても使わなくても、一定量のリソースを支払う必要がありました。しかしサーバーレス・アーキテクチャの場合、ファンクションが消費するリソースに対してのみ支払いが発生します。不規則なトラフィック・パターンや予測不可能なトラフィック・パターンを持つビジネスにおいては、大幅なコスト削減が可能になります。

Kubernetesコンテナとは

サーバーレス・コンテナは、FaaSのプラットフォームにデプロイされるコンテナです。このコンテナにより、コードとその依存関係を1つのユニットにパッケージ化し、ファンクションのデプロイと管理を容易にすることができます。

サーバーレス・コンテナには、従来のファンクションと比較していくつかのメリットがあります。まず、コード以外の依存関係(ライブラリやフレームワークなど)を処理に含めることができるようになります。コード以外の依存関係(Golangなど)は、コードのパッケージングをうまくサポートしていない言語を使用している場合に有用です。次に、サーバーレス・コンテナであれば、複雑なサーバーレス・ファクションの作成を容易にすることができます。複数の言語を使用したり、多数のプロセスを実行したりする必要がある場合、サーバーレス・コンテナを使用することで、より簡単に管理できるようになります。

サーバーレス・コンテナにはいくつかのメリットがあるものの、すべての状況に適しているわけではありません。まず、従来のファンクションよりもコストがかかる場合があります。プロセスそのものだけでなく、コンテナのランタイムにもコストがかかるからです。次に、サーバーレス・コンテナの場合、デバッグとトラブルシューティングがより難しくなる可能性があります。何か問題が発生した場合、何が起こったのかを突き止めるのがより困難になる可能性があります。

では、サーバーレス・コンテナを使うべきなのでしょうか。それはお客様のニーズによって異なります。単純なファンクションを作るのであれば、従来のファンクションで問題ありません。しかし、複雑なアプリケーションを構築する場合や、コンテナの柔軟性が必要な場合は、サーバーレス・コンテナの方が良い選択と言えるかもしれません。

サーバーレス・コンピューティングとクラウド・コンピューティングの比較

第一世代のクラウド・コンピューティングでは、企業は社外のサーバースペースを借りることができ、サーバースペースとインフラストラクチャは、すべてベンダーが責任をもって管理していました。

しかし、ベンダーは顧客のトラフィックの急上昇を予測することができず、データ量の上限を超えると顧客に請求します。そのため、トラフィックの急上昇はすなわち、追加コストとなりうるのです。

トラフィックの急増による停止や課金のリスクを減らすために、ほとんどの企業は余裕のあるサーバースペースを購入します。しかし、このようなスペースはほとんどの場合において稼働していおらず、これもお客様にとっては追加コストが発生することになります。また、サーバーの世界では、多くの使用されていないキャパシティがあるということでもあります。

サーバーレス・コンピューティングは、実際の使用量に基づいてクライアントに課金することで、こうした問題を解決します。これは、定額制の水道料金から、使用した水の量に応じて課金される水道料金に切り替わるようなものです。従量課金制(pay-as-you-go)とも呼ばれます。

開発者にとっては、フロントエンドの開発に専念できることがメリットです。企業にとっては、コスト削減と効率化を図ることができます。さらに、自動的なスケーリングも容易になります。適切な条件下では、Win-Winのソリューションと言えるでしょう。

サーバーレス・コンピューティングのメリット

サーバーレス・コンピューティングのメリットについては、すでにいくつかお話ししました。特に中小企業にとっては、費用対効果の高いものと言えます。では、そのメリットをいくつか詳しく見ていきましょう。

サーバーが不要

サーバーレス・フレームワークの主なメリットの1つは、サーバーのことを考える必要がなくなることです。サーバーを考えなくて済むということは、インフラストラクチャを管理する時間やリソースがない中小企業や個人の開発者にとっては大きな安心材料になります。

自動的なスケーラビリティ

従来のホスティングでは、トラフィックのピーク時を想定して計画を立て、負荷を処理するのに十分なサーバーを確保する必要がありました。サーバーレス・アーキテクチャでは、これらすべてに対応します。FaaSのプラットフォームは、必要に応じてファンクションをスケールアップまたはスケールダウンします。

従量課金制 (Pay-as-you-go)

サーバーレス・コンピューティングの最も魅力的な点の1つは、その従量課金制の価格モデルでしょう。従来のホスティングでは、使っても使わなくても、一定量のリソースを支払う必要がありました。サーバーレス・アーキテクチャの場合、ファンクションが消費するリソースに対してのみ支払いが発生します。

柔軟性のある構成

サーバーレス・コンピューティングのもう一つのメリットは、その柔軟性です。従来のホスティングでは、プラットフォーム上で利用できるものが制限されていましたが、FaaSのプラットフォームでは、ファンクションの動作をより自由にコントロールすることができます。使用する言語、必要な依存関係、そして実行環境さえも選択することができます。

サーバーレスとPaaSとIaaSの比較

では、サーバーレス・アーキテクチャは他のタイプのホスティングとどう比較できるでしょうか。それぞれ、特有のメリットとデメリットがあります。

PaaS

PaaS(Platform as a Service)は、アプリケーションの開発とデプロイのためのプラットフォームを提供する、クラウド・コンピューティングのカテゴリです。PaaSのプラットフォームは通常、ランタイム環境やライブラリ、フレームワークなど、開発に必要なものをすべて提供します。


どれがお客様に適していると言えるのでしょうか。これは、お客様のニーズと開発経験によって異なります。初心者であれば、PaaSが最適な選択肢かもしれませんし、経験豊富な開発者の場合、IaaSの方がより適しているかもしれません。

サーバーレス・アーキテクチャは、この2つのオプションの中間に位置します。PaaSとIaaS のメリットの一部を提供し、PaaSよりも高い柔軟性が必要だが、すべての細部にわたって自社で管理はしたくないという企業にとって、良い選択となります。

サーバーレスの未来

サーバーレスの展望は、既存のプラットフォームの機能や能力の進化に伴い、常に変化しています。では、サーバーレス・コンピューティングの未来はどうなるのでしょうか。

専門家の中には、サーバーレスは最終的にPaaSやIaaSを抜いて、クラウド・サービスの好ましい選択肢になると予測する人もいます。また、サーバーレスがPaaSやIaaSのプラットフォームの標準機能になると考えている人もいます。また、サーバーレスは特定のユースケースのためのニッチなソリューションにとどまるという意見もあります。

しかし、1つだけ確かなことがあります。それは、サーバーレス・アプリケーションの未来は、非常に明るいということです。より多くの企業がこのクラウド・コンピューティングのアプローチのメリットを実感するにつれて、今後数年間でさらに多くの採用が見込まれることでしょう。