ホーム

Topics

サーバーレス

サーバーレス・コンピューティングとは
IBMのサーバーレス・ソリューションの詳細はこちら 登録してクラウドの最新情報を受け取る
コンピューターのモニター、サーバー、雲、ドットの絵文字のコラージュの図

公開日:2024年6月10日
寄稿者:Stephanie Susnjara、Ian Smalley

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

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

サーバーレスとは、「サーバーを使わない」という意味ではありません。誤解を招きやすい名前ですが、サーバーレス・コンピューティングのサーバーは、クラウド・サービス・プロバイダー(CSP)によって管理されます。「サーバーレス」とは、開発者がそれらのサーバーとやり取りをするエクスペリエンスを表しています。開発者はサーバーを確認、管理、または操作する必要がありません。

開発者は、サーバーレス・コンピューティングを使用して、最高のフロントエンド・アプリケーション・コードとビジネス・ロジックの構築に集中できます。必要なのは、アプリケーション・コードを作成し、CSPが管理するコンテナにデプロイすることだけです。

コードの実行に必要なクラウド・インフラストラクチャーのプロビジョニングや、必要に応じたオンデマンドでのインフラストラクチャーのスケールアップおよびダウンなど、その他の作業はクラウド・プロバイダーが担当するほか、オペレーティング・システムの更新プログラムやパッチの適用、セキュリティー管理、キャパシティー・プランニング、システム監視など、多岐にわたる日常的なインフラストラクチャーの管理・保守も行います。

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

infrastructure as a service(IaaS)platform as a service(PaaS)Function as a service(FaaS)Software as a service(SaaS)とともに、サーバーレスは主要なクラウド・サービスとなっています。SkyQuest Technologyのレポートによると、世界のサーバーレス・アーキテクチャー市場規模は2022年に80億1000万米ドルとなると評価され、2023年の98.4億米ドルから2031年までに508.6億米ドルに成長すると見込まれています。1現在、大手クラウド・サービス・プロバイダーはすべて、Amazon Web Services(AWS Lambda)、Microsoft Azure(Azure Functions)、Google Cloud(Google Cloud Functions)、IBM Cloud(IBM Cloud Code Engine)などのサーバーレス・プラットフォームを提供しています。

サーバーレス・コンピューティング、マイクロサービスコンテナは、クラウドネイティブ・アプリケーション開発の中核となる3つのテクノロジーです。

サーバーレスとサーバーレス・スタックの詳細な説明については、こちらの動画をご覧ください (6:37)。

ハイブリッドクラウドの価値を最大限に実現

貴社のシステムを接続して統合し、AI用のインフラストラクチャーを準備します。

関連コンテンツ 登録してアプリのモダナイゼーションに関するガイドを受け取る
サーバーレスの起源

サーバーレスは、Googleが、Googleが管理するデータセンターでWebアプリケーションを開発およびホストするためのプラットフォームであるGoogle App Engine(GAE)をリリースした2008年に始まりました。GAEを使用することで、ソフトウェア開発者は、Googleが処理するパッチ適用や負荷分散などのサーバー管理タスクを気にすることなく、Googleのクラウド上でソフトウェアを開発して起動できるようになります。

「サーバーレス」という言葉が初めて登場したのは、クラウド・コンピューティングの専門家であるKen Fromm氏が2012年に発表した技術記事です。2 2014年、Amazonは、初のサーバーレス・プラットフォームであるAWS Lambdaを発表しました。ラムダ計算やプログラミングの機能にちなんで名付けられたFaaSモデルであるAWS Lambdaは、サーバー管理を必要とせずにイベントに応じてコードを実行できるようにすることで、サーバーレス・コンピューティング・フレームワークがマス・マーケットにアピールし、ソフトウェア開発者の間で迅速に採用されるようになりました。2016年、Microsoft Azure FunctionsとGoogle Cloud Functionsは、サーバーレス・プラットフォームを発表しました。

今日のサーバーレス・プラットフォーム市場におけるその他の主要なサービスには、IBM Cloud Code Engine、Oracle Cloud Infrastructure(OCI)Functions、Cloudflare Workers、Alibaba Function Computeなどがあります。

サーバーレスのエコシステム
サーバーレスとFaaS

サーバーレスは、単なるFunction as a Service(Faas)ではありません。FaaSとは、開発者がコードの実行に必要なインフラストラクチャーを指定または管理することなく、特定のイベントやリクエストに応じてコードやコンテナを実行するためのクラウド・コンピューティング・サービスです。

FaaSはサーバーレスの中心となるコンピューティング・モデルで、この2つの用語が同意義で使用されることも少なくありませんが、FaaSと比較すると、サーバーレスとは、特定のイベントやリクエストに応じてし、使用されなくなったらゼロにスケーリングできるサービスのスタック全体を指します。プロビジョニング、管理、料金はクラウド・プロバイダーによって処理されるため、開発者はこれらを意識する必要がありません。

FaaS に加えて、これらのサービスには、データベースとストレージ、アプリケーション・プログラミング・インターフェース(API)Gateway、イベント駆動型アーキテクチャーが含まれます。

サーバーレス・データベースとストレージ

データベース(SQLおよびNoSQL)とストレージ(特にオブジェクト・ストレージ)は、データ・レイヤーの基盤です。これらのテクノロジーに対するサーバーレス・アプローチには、キャパシティー、接続、クエリー制限が定義された「インスタンス」のプロビジョニングから、インフラストラクチャーと料金体系の両方が需要に応じて拡張するモデルへの移行が含まれます。

APIゲートウェイ

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

サーバーレスおよびイベント駆動型アーキテクチャー

サーバーレス・アーキテクチャは、イベント駆動型およびストリーム処理型のワークロードに適しています。特に、オープンソースのApache Kafkaイベント・ストリーミング・プラットフォームに適しています。

自動化されたサーバーレス機能はステートレスであり、個々のイベントを処理するように設計されています。これらの機能は、イベントの公開、キャプチャ、処理、および保存を中心に構築されたソフトウェア設計モデルであるイベント駆動型アーキテクチャー(EDA)の重要な要素になっています。EDAフレームワークでは、イベント・プロデューサー(マイクロサービス、API、IoTデバイスなど)がイベント・コンシューマーにリアルタイムのイベント通知を送信し、特定の処理ルーチンをアクティブ化します。たとえば、Netflixが新しいオリジナル・シリーズをリリースすると、複数のEDAサービスがリリース通知を待機し、その通知を受けて、一連のアップデートがトリガーされてユーザーに通知されます。ユーザー向けのWebアプリケーションやモバイル・アプリケーション(Uber、DoorDash、Instacartなど)をベースにしている他の多くの企業は、イベント駆動型アーキテクチャーを使用しています。

サーバーレスとPaaS、コンテナ、仮想マシンの比較

サーバーレス、Platform as a Service(PaaS)、コンテナ、仮想マシン(VM)はすべて、クラウド・アプリケーション開発とコンピューティング・エコシステムにおいて重要な役割を果たすため、いくつかの重要な側面において、サーバーレスが他のサーバーレスとどのように異なるかを比較すると役立ちます。

  • プロビジョニング時間:サーバーレスではミリ秒で測定できますが、他のモデルでは、数分から数時間かかります。
  • 管理負担:サーバーレスでは管理する必要がありませんが、PaaS、コンテナ、VMではそれぞれ軽度から中度、重度までの管理作業が連続的に発生します。
  • メンテナンス:サーバーレス・アーキテクチャーでは、CSPにより完全に管理されます。PaaSについても同様ですが、コンテナとVMの場合は、オペレーティング・システム、コンテナ・イメージ、接続などの更新/管理を含む、大規模なメンテナンスが必要になります。
  • スケーリング:サーバーレスに固有のAuto-Scaling(ゼロへのAuto-Scalingを含む)は瞬時に行われます。他のモデルでもAuto-Scalingは可能ですが、Auto-Scalingルールを慎重に設定する必要があり、ゼロへのスケーリングはできません。
  • キャパシティー・プランニング:サーバーレスでは必要ありません。他のモデルでは、自動拡張性とキャパシティー計画の両方が必要になります。
  • ステートレス:これはサーバーレスに固有のもので、拡張性が問題になることはありません。状態を外部サービスまたはリソースで保持します。PaaSやコンテナ、およびVMはHTTPを活用し、ソケットを開いたまま、または接続したまま長期間維持し、呼び出しの間に状態をメモリーで保持します。
  • 高可用性(HA)および災害復旧(DR):サーバーレスは、追加の労力やコストをかけずに、高可用性と災害復旧の両方を提供します。その他のモデルでは、追加のコストと管理作業が必要になります。VMとコンテナにより、インフラストラクチャーは自動的に再起動します。
  • リソース使用率:サーバーレスでは使用していないキャパシティーは存在せず、リクエストに応じてのみ呼び出されることから、100%効率的です。他のすべてのモデルは、少なくともある程度のアイドル容量を備えています。
  • 課金とコスト削減:サーバーレス・モデルでは100ミリ秒単位で測定されます。PaaS、コンテナ、VMでは通常、時間単位または分単位で測定されます。
サーバーレス、Kubernetes、Knative

Kubernetesは、コンテナのデプロイメント、管理、スケーリングを自動的に行うオープンソースのコンテナ・オーケストレーション・プラットフォームです。この自動化は、コンテナ化されたアプリケーション開発を大幅に簡素化します。

サーバーレス・アプリケーションは多くの場合、コンテナにデプロイされます。ただし、Kubernetesを特定のクラウド・プロバイダーのサーバーレス・プラットフォームと統合する専用ソフトウェアを使用して、Kubernetesをサーバーレス・アプリケーションとして独立して実行することはできません。

Knativeは、サーバーレス・フレームワークを提供するKubernetesのオープンソースの拡張機能です。これにより、コンテナがサーバーレス機能やその他のアプリケーション・コード(マイクロサービスなど)を中心に構築されているかどうかにかかわらず、Kubernetesを実行するクラウド・プラットフォーム上でサーバーレス・ワークロードとしてコンテナを実行できます。 Knativeは、コードを抽象化し、ネットワーク・ルーティングやイベントベースのトリガーを処理するだけではなく、サーバーレスの実行を自動スケーリングします。

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

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

サーバーレス・コンピューティングは、個人の開発者や企業の開発チームに、次のような技術上およびビジネス上の多くのメリットをもたらします。

  • 開発者の生産性の向上:上述のとおり、サーバーレス・モデルにより、開発チームはインフラストラクチャーの管理ではなく、コードの作成に集中でき、フロントエンド・アプリケーションの機能やビジネス・ロジックの革新と最適化に多くの時間を費やすことができます。
  • 実行ベースでの課金:使用量の測定は要求が送信された時点で開始され、実行が終了すると同時に終了します。これをIaaSコンピューティング・モデルと比較してください。IaaSコンピューティング・モデルでは、顧客は、物理サーバー、VM、およびアプリケーションの実行に必要なその他のリソースに対して、それらのリソースをプロビジョニングしたときから明示的にデコミッショニングするまで課金され続けます。
  • 希望の言語での開発:サーバーレスは多言語環境であるため、開発者は使い慣れた言語およびフレームワーク(Java、Python、JavaScript、node.js)でコードを作成できます。
  • 開発・DevOpsサイクルの最適化:サーバーレスはデプロイメントを簡素化し、開発者がコードビルドをテスト、配信、そして本番環境にデプロイするためのインフラストラクチャーの設定に時間を費やす必要がないため、より広い意味でDevOps業務が簡素化されます。
  • 費用対効果の高いパフォーマンス:特定のワークロード(各データが独立しており並行で処理が行えるようなタスク、ストリーム処理、その他の特定のデータ処理タスク)では、サーバーレス・コンピューティングは他の形式のコンピューティング・モデルよりも高速かつコスト効率が高くなる場合があります。
  • レイテンシーの削減:サーバーレス環境では、コードをエンドユーザーの近くで実行できるため、レイテンシーを短縮できます。
  • 使用状況の可視性:サーバーレス・プラットフォームでは、システムとユーザーの時間をほぼ完全に可視化し、使用状況情報を体系的に集約できます。
短所

サーバーレスには多くの利点がありますが、いくつかの欠点を考慮することが重要です。

  • コントロールの軽減:サーバーレスでは、組織はサーバーの制御をサードパーティのCSPに委ねるため、ハードウェアや実行環境の管理を放棄することになります。
  • ベンダー・ロックイン:各サービス・プロバイダーは、他のベンダーと互換性のない独自のサーバーレス機能や特徴を提供しています。
  • 起動が遅い:「コールド・スタート」とも呼ばれる起動の遅さは、特にリアルタイムに要求される環境において、サーバーレス・アプリケーションのパフォーマンスと応答性に影響を与える可能性があります。
  • 複雑なテストとデバッグ:サーバーレス・コンピューティング・モデルでは、開発者がバックエンドのプロセスを可視化できないため、デバッグがより複雑になる可能性があります。
  • アプリケーションを長時間実行するとコストが高くなる:サーバーレス実行モデルは、コードを長時間実行するようには設計されていません。そのため、長時間実行されるプロセスは、従来の専用サーバーやVM環境よりもコストが高くなる可能性があります。
サーバーレスとセキュリティー

CSPは、サーバーレス・アプリケーションを管理するためのセキュリティー対策を行っていますが、責任共有モデルに従って、クライアントにもアプリケーションコードとデータを保護する責任があります。サーバーレスのクラウド・ベースのセキュリティー対策には、セキュリティー情報およびイベント管理(SIEM)、IDおよびアクセス管理(IAM)、脅威の検出と対応などの自動化されたセキュリティポリシーとソリューションが含まれます。

DevSecOpsプラクティスに従うことで、開発チームはサーバーレス・テクノロジーを保護できます。DevSecOpsは、Development(開発)、Security(セキュリティー)、Operations(運用)の略で、初期設計から統合、テスト、提供、デプロイメントに至るまで、ソフトウェア開発ライフサイクルのあらゆる段階でセキュリティーとセキュリティープラクティスの統合を自動化するアプリケーション開発プラクティスです。

サーバーレスとサステナビリティー

従来のオンプレミス・データセンター環境とは異なり、サーバーレス・コンピューティング・モデルは、組織がIT運用におけるエネルギー消費を削減し、二酸化炭素の排出量を削減するのに役立ちます。

さらに、サーバーレス・モデルでは、必要なリソースのみに対して支払い、必要なリソースのみを使用することで、リソースの効率化を通じて排出量を最適化することができます。これにより、アイドル状態のプロセスまたは過剰なプロセスでのエネルギーの無駄を減らすことができます。

サーバーレスの使用例

サーバーレス・アーキテクチャーは、その独自の特徴とメリットにより、マイクロサービス、モバイル・バックエンド、データおよびイベント・ストリーム処理を伴うユースケースに最適です。

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

現在、サーバーレスが最もよく使用されているユースケースは、マイクロサービス・アーキテクチャーのサポートです。マイクロサービス・モデルは、単一のジョブを実行し、APIを使用して相互に通信する小規模なサービスの作成に焦点を当てています。マイクロサービスは、PaaSまたはコンテナのいずれかを使用して構築および運用する必要がある一方で、サーバーレスは、小規模コード、固有の自動スケーリング、迅速なプロビジョニング、使用していないキャパシティーに対して課金されない料金体系といったメリットから、シェアを広げています。

APIバックエンド

サーバーレス・プラットフォーム内のあらゆるアクション(または機能)を、Webクライアントが使用できるHTTPエンドポイントに変えることができます。Webに対して有効になっている場合、これらのアクションはWebアクションと呼ばれます。Webアクションを作成したら、追加のセキュリティー、OAuth3のサポート、レート制限、カスタム・ドメイン・サポートを提供するAPI Gatewayを備えたフル機能のAPIに組み立てることができます。

Open Liberty InstantOn(CRIU)

Open LibertyInstantOn4は、サーバーレスアプリケーションの迅速な立ち上げをサポートする斬新なアプローチを採用しています。InstantOnを使用することで、アプリケーションの構築中に実行中のJavaアプリケーション・プロセスのチェック・ポイントを取得し、実稼働環境でそのチェック・ポイントを復元できます。復元は高速(100ミリ秒台前半)で行われるため、サーバーレスに最適です。InstantOnは、既存のアプリケーションのチェック・ポイントであるため、復元後の動作は同一で、優れたスループット・パフォーマンスを確保できます。このプロセスにより、組織は新しいクラウドネイティブ・アプリケーションにサーバーレスを採用できるようになり、既存の企業にサーバーレスを導入する機会が得られます。

データ処理

サーバーレスは、データ・エンリッチメント、変換、検証、クレンジングなどのタスクを中心に構造化テキストや音声、画像、動画データを処理するのに最適です。また、PDF処理、音声の正規化、画像処理(回転、シャープ化、ノイズ・リダクション、サムネイル生成)、光学式文字認識(OCR)、動画のトランスコーディングにも使用できます。

大規模な並列計算と「マップ」操作

各データが独立しており並行で処理が行えるようなタスクは、サーバーレス・ランタイムのユースケースの好例で、並列化可能なタスクごとに1つのアクションの呼び出しが行われます。サンプル・タスクには、データの検索と処理(特に、クラウド・オブジェクト・ストレージ)、MapReduce操作、Webスクレイピング、ビジネス・プロセスの自動化、ハイパーパラメータ調整、モンテカルロ・シミュレーション、ゲノム処理に至るすべてが含まれます。

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

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

AIとサーバーレス

サーバーレスは、人工知能(AI)機械学習(ML)のワークロードを実行するために必要な自動スケーラビリティーを提供し、最適なパフォーマンスを保証し、イノベーションを加速します。

ハイブリッドクラウドとサーバーレス

サーバーレス・コンピューティングは、オンプレミス、パブリッククラウドプライベートクラウドエッジ環境全体で変動するワークロードに対応するために必要なアジリティー、柔軟性、拡張性を提供することで、ハイブリッドクラウド戦略をサポートします。

サーバーレスの一般的な用途

サーバーレスは、顧客関係管理(CRM)高性能コンピューティング(HPC)ビッグデータ分析、ビジネス・プロセスの自動化、ビデオ・ストリーミング、ゲーム、遠隔医療、デジタル・コマース、チャットボットの構築など、今日の最も一般的な用途の多くをサポートしています。

チュートリアル:サーバーレスを試す

このチュートリアルを通して、サーバーレス・コンピューティングのスキルを向上させることができます。

  • IBM Cloud Code Engineを試す「Hello world」チュートリアルにアクセスして、IBM Cloud Code Engineアプリケーションの構築と展開がいかに簡単かをご確認ください。
  • Liberty InstantOn(CRIU)を体験するIBM WebSphere Libertyを活用してクラウド展開を最適化し、運用効率を向上させることで、組織に新たな価値をもたらしましょう。Liberty InstantOnは、妥協することなくサーバーレスのパフォーマンスを実現する方法です。
  • バッチ・ジョブの実行Code Engineコンソールを使ってバッチ・ジョブを実行する方法についてご紹介します。ジョブは実行可能なコードから1つ以上のインスタンスを実行します。HTTP要求を処理するアプリケーションとは異なり、ジョブは1回実行して終了します。
ソリューション
IBM Cloud Code Engine

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

IBM クラウド・コード・エンジンについて詳しく見る
IBM Cloud Pak for Applications

デプロイメントであれ、新しいクラウドネイティブ・アプリケーションの構築であれ、既存アプリケーションのリファクタリングや再プラットフォーム化などであれ、Cloud Pak for Applications(CP4Apps)がすべてをカバーします。

IBM Cloud Pak for Applicationsはこちら
IBM Cloud Satellite

あらゆるクラウドベンダーのオンプレミス、エッジコンピューティング、パブリッククラウド環境にわたって、アプリの一貫したデプロイと実行を実現しましょう。

IBM Cloud Satelliteはこちら
IBM Cloudant

オープンソースのApache CouchDBをベースにした、ハイパースケールかつレジリエントな、世界中で利用できるアプリ向けデータ層。

IBM クラウダントの詳細を見る
Instanaサーバーレス・モニタリング

サーバーレス・アプリケーションとサービスの監視で、パフォーマンス、可用性とセキュリティーを最適化します。

Instana サーバーレス・モニタリングの詳細はこちら
参考情報
エンタープライズにおけるサーバーレスのユースケース(2021年)

サーバーレス・コンピューティングが実際にもたらす機会と課題に関するインサイトをご覧ください。

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

クラウドをもう一度楽しみましょう

IBM Cloud Code Engineとそのメリットをご覧ください。

次のステップ

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

Cloud Code Engineの詳細はこちら
脚注

(すべてのリンク先は、ibm.com外部にあります。)

Global Serverless Architecture Market Report, SkyQuest, March 2024

Why The Future Of Software And Apps Is Serverless, ReadWrite, October 2012

3 About OAuth 2.0, OAuth

4 Faster startup for containerized applications with Open Liberty InstantOn, Open Liberty