検索

日本語

日本語

ログイン

ログイン/登録

Web サイト

クラウドネイティブ・アプリケーション

サーバーレスとは

サーバーレスとは、アプリケーション開発者がサーバーのプロビジョニングやアプリケーションのスケーリングの管理を行う必要がない、クラウドコンピューティング・モデルです。このモデルでは、定型作業がクラウドプロバイダーによって取り除かれているので、従来のモデルよりも開発者がコードをプロダクションに移行するスピードがはるかに高速になります。

つまり、サーバーレスによって開発者はコードに専念でき、インフラストラクチャのことはほぼ忘れることができます。このようにサーバーの仕様によって開発者が影響を受けないので、「サーバーレス」と呼ばれています。もちろん、サーバーが消滅するわけではなく、クラウドプロバイダーがサーバーを管理します。

もう少し具体的に言うと、クラウドプロバイダー (Amazon や Google など) が物理サーバーを実行し、ユーザー (このページの読者など) に代わってリソースを動的に割り当てます。すると、ユーザーはコードを直ちにプロダクションにデプロイできます。これはパブリッククラウドの Infrastructure-as-a-Service (IaaS) 製品と同じだと思われるかもしれません。サーバーレスの主な違いは、プロバイダーから課金されるのは、ユーザーがコードの実行に必要としたコンピュートリソースの分だけであることです。

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

標準的な IaaS モデルでは、ユーザーはあらかじめ一定単位の容量を購入します。つまり、アプリケーションを実行するための「常時稼働」のサーバーコンポーネントを購入しています。サーバーレスモデルでは、そうではありません。実行するアプリケーションコードがイベントによってトリガーされると、クラウドプロバイダーがこのコードにリソースを動的に割り当てます。ユーザーが支払う対象は、コードが実行を終了するまでに使用した分です。コストや効率性における明白なメリットに加えて、サーバーレスによって、アプリケーションのスケーリングやサーバーのプロビジョニングに伴う定型作業や単純作業から開発者が解放されるという利点もあります。

サーバーレス・コンピューティングには、主に 2 つの方法があります。第一の方法は Backend-as-a-Service (BaaS) を介するもので、多岐にわたるサードパーティのサービスとアプリケーションでアプリケーションが構成されている場合に使われます。第二の方法は Function-as-a-Service (FaaS) を使うもので、この場合、開発者がサーバーサイドのカスタムロジックを作成しますが、クラウドプロバイダーがすべてを管理するコンテナで実行されます。また、これらの手法でサーバーレス・アプリケーション全体を構築することも、サーバーレスと従来のマイクロサービス・コンポーネントを組み合わせてアプリケーションを構成することもできます。

Backend-as-a-Service (BaaS)

Backend-as-a-Service (BaaS) は Mobile Backend-as-a-Service (MBaaS) とも呼ばれており、主にサードパーティのアプリケーションとサービスを利用するサーバーレス・コンピューティングの手法です。たとえば、クラウドプロバイダーが認証サービス、暗号の強化、クラウドでアクセスできるデータベース、信頼性の高い使用状況データを提供する場合に使用されます。このようなバックエンドサービスは通常、クラウドプロバイダーがセットアップしたアプリケーション・プログラミング・インタフェース (API) への呼び出しでアクセスできます。このため、インハウスで機能を開発しなくて済むので、システムへの統合がシンプルになります。

Function-as-a-Service (FaaS)

Function-as-a-Service (FaaS) では、サーバーサイドのロジックを開発者が作成するので、BaaS よりも制御レベルが高くなります。そのうえ、作成された後はクラウドプロバイダーが管理するコンテナにデプロイされ、サーバーレスの主要な利点を活用できます。これらのコンテナには以下のような特長があります。

  • ステートレスデータ統合がシンプルになります。
  • 一時的:実行される期間はきわめて短時間です。
  • イベント駆動型:必要なときに自動的に実行できます。
  • クラウドプロバイダーによる完全管理: 「常時稼働」のアプリケーションとサーバーではなく、必要な分だけ購入できます。

サーバーレスの長所と短所

まず何よりも、サーバーレスによって開発者の生産性が向上し、運用コストを削減できます。プロビジョニングとサーバー管理の定型作業の負担が軽減されるので、開発者は自分のアプリケーション業務に集中する時間を増やせます。このメリットは、アプリケーション・コンポーネント全体をインハウスで開発するのではなく、サードパーティから BaaS を介して統合する場合にも有効です。サーバーレスモデルでは運用コストが削減されます。固有のサーバーを常時実行して管理するのではなく、必要に応じてクラウドベースのコンピュート時間単位で料金を支払うからです。

しかし、固有のサーバーを実行せず、固有のサーバーサイド・ロジックを制御しないことで、欠点も生じます。IT スタックのこのような側面の制御を他に委ねると、ベンダーロックインに陥るおそれがあります。クラウドプロバイダーがコンポーネントの連携方法について厳密な制約を設けている場合には、ユーザー固有のシステムの柔軟性やカスタマイズの度合いに影響を及ぼします。プロバイダーを変更しようとしても、新しいベンダーの仕様に準拠することになり、システムをアップグレードするコストが生じる可能性があります。

サーバーレス・コンピューティングを支える Kubernetes 基盤

クラウド・コンピューティング

コンテナと Kubernetes のプラットフォームにより、クラウドネイティブ・アプリケーションのデプロイを迅速化します。

クラウド・コンピューティング

クラウドネイティブ・アプリケーションの開発に適したアプリケーション・ランタイムとフレームワークを提供します。

サーバーレスについてさらに詳しく知る