サーバーレスとは

URL をコピー

サーバーレスは、開発者がサーバーを管理する必要なくアプリケーションを構築および実行できるようにするクラウドネイティブ開発モデルです。「サーバーレス」とは、サーバーが存在しないという意味ではありません。サーバーは抽象化されており、アプリケーション開発から切り離されています。サーバー・インフラストラクチャプロビジョニング、保守、スケーリングといった定型作業はクラウドプロバイダーが行います。

サーバーレスでは、開発者はコードをコンテナにパッケージ化してデプロイします。デプロイされると、サーバーレス・アプリケーションは需要に対応し、必要に応じて自動的にスケールアップやスケールダウンを行います。パブリッククラウドプロバイダーのサーバーレスサービスは、通常、イベント駆動型実行モデルを使用してオンデマンドで測定されます。そのため、サーバーレス機能がアイドル状態である間は、費用がかかりません。

Red Hat OpenShift Serverless の詳細

サーバーレス・コンピューティングとサーバーレス・アーキテクチャは同じ意味で使われることがよくありますが、概念は異なります。サーバーレス・コンピューティングはアプリケーション開発モデルを指し、サーバーレス・アーキテクチャはアプリケーションの設計手法を指します。 

サーバーレス・コンピューティング 

サーバーレス・コンピューティングは、クラウドプロバイダーがクラウド・インフラストラクチャとアプリケーションのスケーリングの両方の管理を担うという点で、他のクラウド・コンピューティング・モデルとは異なります。アプリケーションはサーバーのプロビジョニングと保守を行わず、クラウドプロバイダーが提供する、自動的に管理されるコンピューティング・リソース上で実行されます。サーバーレス・コンピューティングはイベント駆動型で、自動的にスケーリングし、通常は従量課金制の価格モデルで提供されます。サーバーレス・アプリケーションは、呼び出されたときにオンデマンドで自動的に起動するコンテナにデプロイされます。

標準の IaaS (Infrastructure-as-a-Service) クラウド・コンピューティング・モデルでは、ユーザーは容量を単位で事前に購入します。つまり、パブリッククラウドプロバイダーに、アプリケーションを実行するために常時稼働しているサーバーコンポーネントの料金を支払います。需要が高いときにサーバーの容量をスケールアップし、その容量が不要になった場合にスケールダウンするのはユーザー側の作業です。アプリケーションの実行に必要なクラウド・インフラストラクチャは、アプリケーションが使用されていないときでもアクティブです。

サーバーレス・コンピューティングの種類

サーバーレス・コンピューティングはいくつかのカテゴリに分類できます。

  • Function-as-a-Service (FaaS):FaaS は、短期間のコンテナでイベント駆動型の機能を実行します。サーバーインスタンスを管理する必要はなく、トリガーされた場合にのみ実行されます。
  • Backend-as-a-Service (BaaS):BaaS は、認証、データベース、メッセージング、ストレージを処理するフルマネージド型のバックエンドサービスを提供します。モバイルアプリケーションや Web アプリケーションでよく使用されます。
  • サーバーレス・データベース:サーバーレス・データベースは自動的にスケーリングします。インフラストラクチャの管理は必要ありません。
  • サーバーレスコンテナ:サーバーレスコンテナは手動によるプロビジョニングが不要で、動的にスケーリングします。
  • サーバーレス・エッジコンピューティング:サーバーレス・エッジコンピューティングは、ユーザーの近くでコードを実行し、レイテンシーを短縮します。

サーバーレス・アーキテクチャ

サーバーレス・アーキテクチャは、必要な場合にのみアプリケーションを起動する設計手法を指します。イベントがトリガーされてアプリケーションのコードが実行されると、パブリッククラウドプロバイダーはそのコードにリソースを割り当てます。コードの実行が完了すれば、ユーザーの料金の支払いは生じません。また、サーバーレスにより、開発者はアプリケーションのスケーリングやサーバーのプロビジョニングに関連するタスクから解放されます。オペレーティングシステムとファイルシステムの管理セキュリティパッチ、ロードバランシング、容量管理などの定型作業は、すべてクラウドサービスプロバイダーにオフロードされます。サーバーレス・アプリケーション全体を構築することも、サーバーレスと従来のマイクロサービス・コンポーネントを組み合わせてアプリケーションを構成することもできます。

マイクロサービス・コンポーネントを使用するサーバーレス・アーキテクチャは、サーバーレス・マイクロサービスと呼ばれます。サーバーレス・マイクロサービスでは、サーバーレス・アーキテクチャが開発者のコード作成を可能にし、マイクロサービスがアプリケーションをより小さく管理しやすいコンポーネントに分割します。この組み合わせにより、開発とデプロイが迅速になります。 

Red Hat のリソース

メリット

  • サーバー管理タスクの負荷軽減:サーバーのプロビジョニング、保守、スケーリングを行う必要がないため、開発者はアプリケーションに集中する時間を増やすことができます。
  • コスト効率:従量課金制では、実際に機能を実行した時間に対してのみ料金が発生するため、アイドル状態のリソースにかかるコストが削減されます。
  • 開発とデプロイの迅速化:インフラストラクチャの管理とデプロイが減り、セットアップが最小限で済むため、開発者の生産性が向上します。
  • 自動スケーリング:機能とサービスは需要に応じて自動的にスケールアップまたはスケールダウンされます。
  • 組み込みのセキュリティ:セキュリティの更新とパッチはプロバイダーが管理するため、サーバーの構成ミスに関連するリスクが軽減します。

デメリット

  • アーキテクチャの複雑さ:複数の機能が非同期で対話するため、イベント駆動型のワークフローは複雑になる可能性があります。
  • インタラクションの制約:クラウドプロバイダーは、コンポーネントの使用方法に制限を課す場合があり、これによって柔軟性が低下する可能性があります。
  • ベンダーロックイン:サーバーレスサービスがクラウドプロバイダーのエコシステムと緊密に統合されている場合、移行が困難になる可能性があります。

サーバーレスのユースケース

サーバーレス・アーキテクチャは、即座に開始できる非同期のステートレス・アプリケーションに最適です。予測できない需要の急増がまれに見られるユースケースに適しています。

着信するイメージファイルのバッチ処理のようなタスクを考えてみてください。頻度は低いかもしれませんが、大量のイメージが一度に着信する場合にも対応できるようにしておく必要があります。あるいは、データベースに着信する変更を監視し、その変更を品質基準と照らし合わせたり、それらを自動変換したりするなどの一連の機能を適用するようなタスクです。

サーバーレス・アプリケーションは、着信データストリーム、チャットボット、スケジュールされたタスク、ビジネスロジックなどに関連するユースケースにも適しています。

その他の一般的なサーバーレスのユースケースとしては、バックエンド API (アプリケーション・プログラミング・インタフェース) とウェブアプリケーション、ビジネスプロセスの自動化、サーバーレスウェブサイト、複数のシステム間の統合などがあります。

サーバーレスモデルでは、クラウドプロバイダーが物理サーバーを実行し、ユーザーに代わってリソースを割り当てます。すると、ユーザーはコードをただちに本番環境にデプロイできます。

FaaS は、イベント駆動型機能に重点を置いた、より一般的なサーバーレスモデルであり、開発者はクラウドサービスプロバイダーが完全に管理するコンテナにデプロイされる、カスタムのサーバー側ロジックを記述できます。これらのコンテナの特長は以下のとおりです。 

  • ステートレスデータ統合がシンプルになります。
  • 一時的:実行される期間はきわめて短時間です。
  • イベント駆動型:必要なときに自動的に実行されます。
  • フルマネージド:使用した分だけ料金が発生します。

FaaS では、開発者はより高度な制御ができるようになり、 API (API ゲートウェイを介してクラウドプロバイダーが管理する) を介して機能を呼び出すことができます。

主要なクラウドプロバイダーは、AWS Lambda、Azure Functions、Google Cloud、IBM Cloud Functions などの FaaS ソリューションを提供しています。Red Hat® OpenShift® Serverless (Knative をベースとする) などのオープンソース・プラットフォームを使用して、独自の FaaS 環境を実行している企業もあります。

FaaS は、そのバックエンドサービスに相当する BaaS とは対照的です。BaaS では、開発者は通常 API を介して認証、暗号化、データベースなどのサードパーティサービスにアクセスできます。BaaS はバックエンドタスクを単純化しますが、カスタム・アプリケーション・ロジックの制御は低下します。

FaaS の詳細

Kubernetes はコンテナ化されたアプリケーションを管理するための一般的なプラットフォームですが、サーバーレス・ワークロードをネイティブにサポートしていません。Knative は、サーバーレス・アプリケーションを Kubernetes でデプロイ、実行、管理するために必要なコンポーネントを追加するオープンソース・プロジェクトです。

Knative は、Red Hat OpenShift などの Kubernetes プラットフォームにコードをデプロイできるようにすることで、サーバーレス環境を実現します。Knative を使用すると、コードはコンテナイメージとしてパッケージ化され、システムは需要に応じてインスタンスを自動的に起動および停止します。

Knative には 3 つの主要なコンポーネントがあります。

  • Build:ソースコードをコンテナに変換します。
  • Serving:リクエスト駆動型のニーズに基づいてコンテナを自動的にデプロイおよびスケーリングします。
  • Eventing:アプリケーション、クラウドサービスSaaS (Software-as-a-Service) システム、Apache Kafka のストリームなど、さまざまなソースからのイベントを管理して機能をトリガーします。

従来のサーバーレス・ソリューションとは異なり、Knative はモノリシックなアプリケーションからマイクロサービスや小さな機能に至るまで、幅広いワークロードをサポートします。オンプレミス環境を含む、あらゆる Kubernetes 対応プラットフォーム上で実行できます。

Knative のメリットには主に次のようなものがあります。

  • マイクロサービスおよびサーバーレス・ワークロードをサポート:Kubernetes 内にイベント駆動型のステートレスな機能をデプロイできます。また、サーバーインスタンスの手動保守が不要で、動的にスケーリングし、長期間稼働するマイクロサービスをデプロイすることもできます。
  • コストとリソース使用の最適化:Pod が常に動作している従来のマイクロサービスとは異なり、Knative はゼロへのスケーリングをサポートします。つまり、リクエストが受信されない場合はリソースの割り当てを解除し、コストを削減します。
  • 標準化された API と柔軟性:Knative は Kubernetes ネイティブのパターンに従っており、複数のクラウドプロバイダー間で機能します。

Knative はサーバーレス・コンピューティングの能力を Kubernetes にもたらし、サーバーレス・ワークロードのデプロイと管理を単純化します。

Knative でサーバーレス・アーキテクチャを構築

Red Hat OpenShift Serverless を使用すると、サーバーレス・アプリケーションの構築とデプロイが迅速になり、インフラストラクチャの細部の管理を心配する必要もありません。エンタープライズレベルのサーバーレス・プラットフォームを提供し、ハイブリッドおよびマルチクラウド環境全体に可搬性と一貫性をもたらします。

OpenShift Serverless により、開発者は Kubernetes の一連のカスタムリソース定義 (CRD) と関連するコントローラーを使用して、ソース中心のクラウドネイティブ・アプリケーションを作成できます。また、運用チームの作業は単純化されます。OpenShift Serverless は Red Hat OpenShift へのインストールが容易であることに加え、他の Red Hat 製品でもテスト済みであり、受賞歴のあるサポートの利用が可能だからです。

OpenShift Serverless は、アプリケーションを Red Hat OpenShift Service Mesh やクラスタモニタリングなどの他の Red Hat OpenShift Container Platform サービスと統合することで、サーバーレス・アプリケーションの開発とデプロイのための完全なソリューションを提供します。開発者は、単一のプラットフォームを使用してマイクロサービス、レガシー、およびサーバーレス・アプリケーションのホスティングができるというメリットを得られます。アプリケーションは、どこでも実行できる Linux® コンテナとしてパッケージ化されます。 

OpenShift Serverless 機能を作成

ハブ

Red Hat 公式ブログ

Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。

すべての Red Hat 製品のトライアル

Red Hat の無料トライアルは、Red Hat 製品をハンズオンでお試しいただける無料体験版です。認定の取得に向けた準備をしたり、製品が組織に適しているかどうかを評価したりするのに役立ちます。

関連情報

アプリケーションの移行とは

アプリケーションの移行とは、アプリケーションをある環境から別の環境へと移すことでワークロードを改善できるプロセスのことです。

SDK (ソフトウェア開発キット) とは | Red Hat

SDK はソフトウェア開発キット (Software Development Kit) の略称で、プラグラムや API、開発ドキュメント等を含む、アプリケーション開発に必要なツール一式を指します。

IDE (統合開発環境) とは?をわかりやすく解説 | Red Hat

IDE (統合開発環境) とは、アプリケーション開発に必要な機能 (エディター、コンパイラー、デバッガー等) を 1 つの GUI で使えるようにまとめたプログラミング環境です。

アプリケーションの開発と提供リソース

関連記事