サーバーレスとは
サーバーレスとは、開発者が、コードの構築および実行を、各サーバーの管理や使用されていないクラウド・インフラストラクチャーへの支払いを行う必要なく実行できるクラウド・アプリケーションの開発および実行モデルのことです。
黒と青の抽象的なイメージ
サーバーレスとは

サーバーレスとは、開発者が、コードの構築および実行を、サーバーやバックエンド・インフラストラクチャーのプロビジョニングおよび管理を行う必要なく実行できる、クラウド・コンピューティング・アプリケーションの開発および実行モデルのことです。

サーバーレスを利用することで、開発者は自身が作成できる最高のフロントエンド・アプリケーション・コードとビジネス・ロジックの作成にのみ集中することができます。 開発者が行わなければならないことは、アプリケーション・コードを作成し、クラウド・サービス・プロバイダーが管理するコンテナにデプロイすることだけです。 クラウド・プロバイダーが、コードの実行に必要なクラウド・インフラストラクチャーをプロビジョニングし、必要に応じてオンデマンドのインフラストラクチャーを拡大・縮小して、残りの作業を処理します。 クラウド・プロバイダーはまた、オペレーティング・システムの更新とパッチ適用、セキュリティー管理、容量計画の策定、システムのモニタリングなど、日常的なインフラストラクチャーの管理と保守のすべてに責任を持ちます。

また、サーバーレスでは開発者が使用していない容量の料金を支払う必要がないことも重要です。 クラウド・プロバイダーは、コードの実行時にオンデマンドで必要なコンピューティング・リソースをスピンアップしてプロビジョンし、実行の停止時にそれらのリソースを再度スピンダウン(「ゼロへのスケーリング」と呼ばれます)します。 請求は、コードの実行が開始されたときに始まり、実行の停止時に終わります。料金は通常、必要な実行時間とリソースに基づきます。

「サーバーがない」という意味ではない、サーバーレス

その名前にもかかわらず、サーバーレス・コンピューティングにはほぼ確実にサーバーが存在します。 「サーバーレス」とは、開発者によるこれらのサーバーの使用体験を説明するものです。いずれの方法でもこれらのサーバーを認識あるいは管理したり、これらのサーバーとやり取りしたりすることのない開発者たちにとって、これらのサーバーは不可視です。

現在、大手クラウド・サービス・プロバイダーはすべて、サーバーレス・プラットフォームを提供しており、これにはAmazon Web Services(AWS Lambda)、Microsoft Azure(Azure Functions)、Google Cloud(Google Cloud Functions)、IBM Cloud(IBM Cloud Code Engine)が含まれます。  マイクロサービス と コンテナ は、サーバーレス・コンピューティングとともに、通常 クラウドネイティブ ・アプリケーション開発の中核にあると考えられる、テクノロジーの3本柱を形成しています。

単なるFaaS以上のサーバーレス

Function as a Service、つまりFaaSは、開発者が、コードの実行に必要なインフラストラクチャーを規定したり管理したりすることなく、特定のイベントあるいは要求に対応して、コードまたはコンテナを実行できるようにするクラウド・コンピューティング・サービスです。

FaaSはサーバーレスの中心にある計算モデルであり、これらの2つの用語はしばしば同じ意味で使用されます。 しかし、サーバーレスはFaaSよりも広い意味を持ちます。 サーバーレスは、特定のイベントまたは要求に対応でき、使用しなくなったときにゼロにスケーリングできる、サービスのスタック全体を指し、そのプロビジョニング、管理、請求はクラウド・プロバイダーが行い、開発者にとっては不可視です。 FaaSに加え、サーバーレスのサービスには、以下が含まれます。

  • サーバーレス・データベースとストレージ:データベース(SQLおよび NoSQL)とストレージ(特に オブジェクト・ストレージ)はデータ層の基盤です。 これらのテクノロジーに対するサーバーレス・アプローチでは、容量、接続、クエリーの制限が定義された「インスタンス」のプロビジョニングから離れ、インフラストラクチャーと料金面の双方の需要に応じて線形にスケーリングするモデルに移行する必要があります。

  • イベントのストリーミングとメッセージング:サーバーレス・アーキテクチャーは、イベント・ドリブンのストリーム処理ワークロード、特にオープンソースの Apache Kafka イベント・ストリーミング・プラットフォームに非常に適しています。

  • API Gateway:API Gatewayは、Webアクションのプロキシーとして機能し、HTTPメソッド・ルーティング、クライアントIDとクライアント・シークレット、速度制限、CORS、API使用法の表示、応答ログの表示、 API 共有ポリシーを提供します。

IBMのAshher Syedが、以下の動画で、サーバーレスとサーバーレス・スタックについて詳しく説明します(6:37)。

サーバーレスをPaaS、コンテナ、VMと比較

サーバーレス、 Platform as a Service(PaaS)、コンテナ、 仮想マシン(VM) はすべて、クラウド・アプリケーション開発と計算のエコシステムにおいて重要な役割を果たしているため、主要な特性についてサーバーレスとサーバーレス以外で容易に比較できます。

  • プロビジョニングの時間:サーバーレスではミリ秒単位で測定されるのに対し、その他のモデルでは分単位から時間単位で測定されます。

     

  • 管理の負担:サーバーレスには管理の負担は存在しません。PaaSでは管理の負担は軽く、コンテナでは中程度、VMでは負担が重くなります。

     

  • 保守:サーバーレス・アーキテクチャーはプロバイダーがすべてを管理します。 これはPaaSにも当てはまりますが、コンテナとVMには、オペレーティング・システム、コンテナ・イメージ、接続などの更新/管理を含む、かなりの量の保守作業が必要です。

     

  • スケーリング:ゼロへの自動スケーリングを含む自動スケーリングは、サーバーレスですぐに利用可能な固有の機能です。 他のモデルでは自動スケーリングですが時間のかかるスケーリングが提供されています。自動スケーリングのルールを慎重に調整する必要があり、ゼロへのスケーリングが行われません。

     

  • 容量計画の策定:サーバーレスでは必要ありません。 他のモデルでは、いくつかの自動拡張性の組み合わせと容量計画の策定が必要です。

     

  • ステートレス性:サーバーレスに特有の性質で、拡張性が問題になることは決してありません。状態は外部のサービスまたはリソースで保持されます。 PaaS、コンテナ、VMでは、HTTPを活用し、長時間オープン・ソケットまたは接続を維持し、各呼び出しの間にメモリーの状態を保存できます。

     

  • 高可用性(HA)と 災害復旧(DR):両方の機能がサーバーレスに特有のもので、追加の作業と追加のコストは不要です。 他のモデルでは、追加のコストと管理作業が必要です。 VMとコンテナの場合は両方とも、インフラストラクチャーが自動的に再起動する場合があります。

  • リソース使用率:使用していない容量などが存在しないため、サーバーレスは完全に効率的です。こうした容量は要求があったときにのみ、呼び出されます。 他のすべてのモデルでは、少なくともある程度の使用していない容量が存在します。

     

  • 請求単位の綿密さと節約:サーバーレスは100ミリ秒単位で測定されます。 PaaS、コンテナ、VMは通常、時間単位または分単位で測定されます。

サーバーレス、Kubernetes、Knative

Kubernetes は、コンテナのデプロイメント、管理、スケーリングを自動化する、オープンソースのコンテナ・オーケストレーション・プラットフォームです。 Kubernetesの自動化により、コンテナ・ベース・アプリケーションの開発が劇的に簡素化されます。

サーバーレス・アプリケーションは多くの場合、コンテナにデプロイされます。 しかし、Kubernetesは、単独では、Kubernetesを特定のクラウド・プロバイダーのサーバーレス・プラットフォームと統合する特殊なソフトウェアが無い限りは、サーバーレス・アプリケーションを実行できません。

KnativeはKubernetes用のサーバーレス・フレームワークを提供します。 Knativeは、サーバーレス機能または他のアプリケーション・コード(例えば、マイクロサービス)のどちらを中心として構築されたかに関わらず、任意のコンテナを、Kubernetesを実行するあらゆるクラウド・プラットフォームでサーバーレス・ワークロードとして実行できるようにする、Kubernetesのオープンソースの拡張機能です。 Knativeは、コードを抽象化して、サーバーレス実行のためにネットワーク・ルーティング、イベント・トリガー、および自動スケーリングを処理することで機能します。

Knativeは開発者には認識されません。開発者は通常どおりKubernetesを使用してコンテナを構築するだけで、Knativeがそのコンテナをサーバーレス・ワークロードとして実行して、残りの作業を行います。

Knativeの詳細はこちら

サーバーレスのメリットとデメリット

メリット

上記に挙げたすべての理由から、サーバーレス・コンピューティングが、個々の開発者と企業の開発チームに多数の技術的メリットとビジネス上のメリットを提供できることは驚くことではありません。

開発者の生産性の向上: 前述のとおり、サーバーレスにより開発チームはインフラストラクチャーの管理ではなく、コードの作成に集中することができます。 開発者はフロントエンド・アプリケーションの機能性とビジネス・ロジックの変革と最適化のためにより多くの時間を使えるようになります。

実行分のみの支払い:支払い対象となる計測は要求の作成時に開始され、実行の完了時に終了します。 これに対し、 Infrastructure as a Service(IaaS) 計算モデルでは、顧客が、アプリケーションの実行に必要な物理サーバー、仮想マシン(VM)、その他リソースに対して、これらのリソースのプロビジョン時から明示的な使用終了時まで、支払いを行います。

任意の言語での開発: サーバーレスは、多言語環境であり、開発者が、自分が使いやすい任意の言語またはフレームワーク(Java、Python、JavaScript、node.jsなど)でコードを開発できるようにします。

合理化された開発/DevOpsサイクル: サーバーレスは、デプロイメントを簡素化し、より広い意味では DevOps を簡素化します。これは開発者が、作成されたコードの統合、テスト、デリバリー、実動へのデプロイに必要なインフラストラクチャーの定義に時間を費やす必要がないためです。

コスト効率の高いパフォーマンス: サーバーレス・コンピューティングは、特定のワークロード(過度の並列処理、ストリーム処理、特定のデータ処理のタスク)について、他の計算形式よりも、迅速な処理と高いコスト効率を実現できます。

使用率の可視性: サーバーレス・プラットフォームはシステム時間とユーザー時間についてほぼ完全な可視性を提供し、使用率の情報を体系的に集約できます。

開発とITの専門家たちは、サーバーレス・コンピューティングに特有のその他のメリットについても言及しています。 こちらの 対話式ツール(PDF、1.8 MB) を使用して、そのメリットについて詳しくご覧ください。

 

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

その固有の特性とメリットを組み合わせて考えると、サーバーレス・アーキテクチャーはマイクロサービス、モバイル・バックエンド、データおよびイベントのストリーム処理のユースケースに非常に適しています。

サーバーレスとマイクロサービス

今日の最も一般的なサーバーレスのユースケースは、マイクロサービス・アーキテクチャーのサポートです。 マイクロサービス・モデルは、単一のジョブを行い、APIを使用して互いにやり取りする小さなサービスの作成に重点を置いています。 マイクロサービスがPaaSまたはコンテナのいずれかを使用しても構築・動作できる一方で、サーバーレスは、小さなコード、固有の自動スケーリング、迅速なプロビジョニング、使用していない容量の料金が発生しない料金体系モデルなどの特性により、大きな勢いを得ています。

APIバックエンド

サーバーレス・プラットフォーム上の任意のアクション(または機能)を、Webクライアントが使用できるようにHTTPエンドポイントにすることができます。 Web用に使用可能になった場合、これらのアクションはWebアクションと呼ばれます。 Webアクションが使用できるようになったら、ユーザーは、セキュリティーの強化、OAuthサポート、速度制限、カスタム・ドメイン・サポートを提供するAPI Gatewayを使用して、それらをフル機能の API に組み込むことができます。

APIバックエンドの実地体験については、チュートリアル「サーバーレスWebアプリケーションとAPI」をお試しください。

データ処理

サーバーレスは、構造化テキスト、音声、画像、および動画のデータの作業、データのエンリッチメント、変換、検証、クレンジングなどの関連タスク、PDF処理、音声の正規化、画像処理(回転、鮮明化、ノイズ削減、サムネールの生成)、光学式文字認識(OCR)、動画のトランスコーディングに非常に適しています。 画像処理の詳細なユースケースについては、「SiteSpirit社が10%のコストで10倍以上の速度向上を実現した方法」(英語)を参照してください。

大規模な並列計算/「マップ」運用

あらゆる種類の過度の並列タスクは、サーバーレス・ランタイムの良いユースケースです。並列化可能な各タスクは最終的に1つのアクションの呼び出しになります。 サンプルのタスクには、データの検索と処理(具体的にはCloud Object Storage)、 MapReduce の運用とWebスクレイピングから、ビジネス・プロセスの自動化、ハイパーパラメーターの調整、モンテカルロ・シミュレーション、ゲノム処理までのすべてが含まれます。

詳しい例については、「サーバーレス・アーキテクチャーでモンテカルロ・シミュレーションをローカル・マシンと比較して160倍以上高速で実行した方法」(英語)を参照してください。

ストリーム処理のワークロード

FaaSによるマネージドのApache Kafkaとデータベース/ストレージを組み合わせることで、データ・パイプラインとストリーミング・アプリケーションのリアルタイムの構築のための強力な基盤が提供されます。 これらのアーキテクチャーは(検証、クレンジング、エンリッチメント、変換を目的とする)あらゆる種類のデータ・ストリームの取り込み作業に理想的です。これには、IoTセンサー・データ、アプリケーション・ログ・データ、金融市場データ、(他のデータ・ソースの)ビジネス・データ・ストリームが含まれます。

サーバーレス向けの一般的なアプリケーション

IBMの最近の調査において、ITの専門家たちが、カスタマー・リレーションシップ・マネジメント(CRM)、アナリティクスとビジネス・インテリジェンス、財務など、幅広いアプリケーションにわたるサーバーレスの使用を報告しています。

 

チュートリアル:サーバーレス・コンピューティング入門

次のチュートリアルを使用してサーバーレス・コンピューティングのスキルを強化できます。

ソリューション
IBM Cloud Code Engine

フルマネージド型のコンテナ・ランタイムでコンテナ、アプリケーション・コード、バッチ・ジョブを実行します。

IBM Cloud Code Engineの詳細はこちら
IBM Cloud Satellite

オンプレミス、エッジコンピューティング、あらゆるクラウド・ベンダーが提供するパブリッククラウドなどのすべての環境で、一貫してアプリケーションをデプロイ、実行します。

IBM Cloud Satelliteの詳細はこちら
IBM Cloudant

オープンソースのApache CouchDBに基づく、ハイパースケールかつレジリエントで、グローバルに使用可能なアプリケーションを実現するデータ層です。

IBM Cloudantの詳細はこちら
参考情報 2021年エンタープライズのサーバーレス

新しい調査により、サーバーレス・コンピューティングの現実のオポチュニティーと課題に関する洞察が明らかになりました。

IBM Cloud Code Engineの概要

このフルマネージドのサーバーレス・プラットフォームで、Webアプリケーション、マイクロサービス、バッチ・ジョブなど、コンテナ化されたすべてのワークロードを実行する以上の機能を提供します。

既存のクラウドの活用

IBM Cloud Code Engineと使用時のメリットについて詳しくご覧ください。

詳細情報はこちら

サーバーレス・コンピューティングは、クラウドでのアプリケーションの構築と運用において、よりシンプルでコスト効率の高い方法を提供します。 開発者が、Kubernetesのスキルを必要とせずにサーバーレス・アプリケーションとワークフローをデプロイできる、従量課金制サーバーレス・プラットフォームである、IBM Cloud Code Engineについて詳しくご覧ください。

IBM Cloud Code Engineの詳細はこちら