サーバーレス コンピューティングは、使用量に応じてマシンリソースを割り当てるクラウド コンピューティング実行モデルです。サーバーレス モデルでは、デベロッパーはサーバーを管理する必要なくアプリケーションを構築して実行できます。料金は使用した実際のリソース量に対してのみ発生します。代わりに、クラウド サービス プロバイダが、アプリケーション コードを実行するクラウド インフラストラクチャのプロビジョニング、管理、スケーリングを行います。
サーバーレス コンピューティングは、その名前とは異なり、サーバーを排除するものではなく、日常的なインフラストラクチャ タスクを抽象化することで、アプリケーション開発を合理化するものです。つまり、アプリケーションを実行する基盤となるマシンをユーザーが確認、構成、管理、スケーリングすることはありません。基本的には、サーバー自体ではなく、サーバーのサービスに対して料金を支払います。
開発の観点から見ると、サーバーはまったく存在しないかのように見えます。デベロッパーはコードを記述して本番環境にデプロイするだけで、残りの処理はクラウド プロバイダが担当します。
アプリケーションの構築に関しては通常、デベロッパーはコードをデプロイするために、処理とストレージのためのリソースの定義、パッチ適用、ロード バランシングなど、多くのサーバー管理タスクを実行する必要があります。こうした余分な項目はすべて、長いプロビジョニング時間と、運用上のオーバーヘッドの増加をもたらし、最終的に開発チームの作業効率低下を招きます。
サーバーレス コンピューティングは、デベロッパーに目に見えない「サーバーレス」のエクスペリエンスを提供し、サーバーやアプリケーションの実行に必要なものを考える必要性を排除します。サービス プロバイダがバックグラウンドですべての作業を行い、コードを実行し、要件を満たすためのリソースを確保します。アイドル状態の容量に対して料金が請求されることはありません。
サーバーレスは、家に水道を引くようなものと考えてください。自分の井戸を掘り、水質をテストし、家に水道を引くために必要なすべての外部配管を設置して維持することができます。または、都市のメインの水道に接続することもできます。水道の蛇口を回すだけで、必要なときに必要な量の水が供給され、市は実際に消費した水量に対して毎月の請求書を送付します。
同様に、クラウド プロバイダはサーバーレス アプリの実行に必要なインフラストラクチャ リソースとランタイム環境を自動的にスピンアップし、実行が完了すると自動的にゼロにスケールダウンします。通常、実行時間中のリソースに応じて課金されます。ただし、これはサービスやベンダーによって異なる場合があります。
でも、他のタイプのクラウド コンピューティングでは、従量課金制でオンデマンドのリソースが提供されるのではないですか?Infrastructure as a Service(IaaS)やPlatform as a Service(PaaS)などのクラウド サービス モデルでも、コンピューティング リソースへのオンデマンド アクセスが提供されるのは事実です。
ただし、割り当てられたクラウド インフラストラクチャは、使用していない場合でもアクティブなままです。また、ユーザーの需要に応じてサーバーの容量を拡張したり、アプリケーションをスケールアップまたはスケールダウンするように構成したりすることも、お客様の責任となります。
一方、サーバーレス アーキテクチャはイベント ドリブンです。このモデルでは、イベントによってコードの実行がトリガーされた場合にのみ、プロバイダからリソースが提供されます。また、リクエストに応じて即座に自動的にスケーリングされます。
主な定義:
サーバーレス
PaaS
コンテナ
VM
通常、サーバーレス クラウド コンピューティングには、Functions as a Service(FaaS)と Backend as a Service(BaaS)という 2 種類のサービスがあります。
開発の分野では、「サーバーレス」という用語は通常、FaaS サービスを指すために使用されます。ただし、FaaS は技術的にはサーバーレス テクノロジーのサブセットであることに注意してください。サーバーレス コンピューティングとは、サーバーの管理、構成、スケーリング、課金など、エンドユーザーから抽象化されるあらゆる種類のサービスを指します。これには、データベース、ストレージ、イベント ストリーミング、メッセージング、API ゲートウェイなどが含まれます。
サーバーレス コンピューティングの一般的な例と新たな例をいくつかご紹介します。
デベロッパーの生産性の向上
サーバーレスを活用するデベロッパーは、インフラストラクチャのプロビジョニング、管理、スケーリングについて心配することなく、コードの記述とビジネス ロジックの最適化に集中できます。
すぐに使える拡張性
サーバーレス アーキテクチャは本質的にスケールアップまたはスケールダウンします。ルールの微調整が必要な他のタイプのクラウド コンピューティングの自動スケーリングとは異なり、サーバーレスの自動スケーリングは瞬時に実行され、ゼロまでスケールダウンできます。
柔軟な価格設定
サーバーレス料金モデルは、多くの場合、実際の使用量と関数の実行にかかる時間に基づいて課金されます。また、アイドル状態の容量には課金されないため、独自サーバーの運用と管理に関連する運用コストを削減できます。
より高速な導入
サーバーレス コンピューティングは、統合、テスト、デリバリー、デプロイにおけるインフラストラクチャ定義の摩擦を減らします。DevOps チームの負担を軽減し、コードの記述や本番環境へのデプロイに集中できるようにします。
任意の言語を使用
サーバーレス環境はあらゆる言語やフレームワークをサポートしているため、Go、Python、Java、Node.js、.NET など、使い慣れた言語やフレームワークで開発を行うことができます。
サーバーレス コンピューティングの大きなデメリットの一つは、まだ比較的新しいテクノロジーであるということです。そのため、現時点では、考えられるすべてのユースケースに対応できるわけではありません。
また、サーバーレス コンピューティングが進化し続けるにつれて、現存する弱点の一部が時間とともに解決されることも明らかです。特に、サーバーレスのオープンソース実装や、さまざまなプラットフォームや環境でソリューションを移植できるようにクラウド サービスをよりオープンにする方法については、すでに多くの取り組みが行われています。