ホーム
Topics
サーバーレス
公開日: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などがあります。
サーバーレスは、単なるFunction as a Service(Faas)ではありません。FaaSとは、開発者がコードの実行に必要なインフラストラクチャーを指定または管理することなく、特定のイベントやリクエストに応じてコードやコンテナを実行するためのクラウド・コンピューティング・サービスです。
FaaSはサーバーレスの中心となるコンピューティング・モデルで、この2つの用語が同意義で使用されることも少なくありませんが、FaaSと比較すると、サーバーレスとは、特定のイベントやリクエストに応じてし、使用されなくなったらゼロにスケーリングできるサービスのスタック全体を指します。プロビジョニング、管理、料金はクラウド・プロバイダーによって処理されるため、開発者はこれらを意識する必要がありません。
FaaS に加えて、これらのサービスには、データベースとストレージ、アプリケーション・プログラミング・インターフェース(API)Gateway、イベント駆動型アーキテクチャーが含まれます。
データベース(SQLおよびNoSQL)とストレージ(特にオブジェクト・ストレージ)は、データ・レイヤーの基盤です。これらのテクノロジーに対するサーバーレス・アプローチには、キャパシティー、接続、クエリー制限が定義された「インスタンス」のプロビジョニングから、インフラストラクチャーと料金体系の両方が需要に応じて拡張するモデルへの移行が含まれます。
API Gatewayは、Webアプリケーション・アクションのプロキシーとして機能し、HTTPメソッド・ルーティング、クライアントIDとシークレット、レート制限、CORS、API 使用状況の表示、応答ログの表示、API共有ポリシーを提供します。
サーバーレス・アーキテクチャは、イベント駆動型およびストリーム処理型のワークロードに適しています。特に、オープンソースのApache Kafkaイベント・ストリーミング・プラットフォームに適しています。
自動化されたサーバーレス機能はステートレスであり、個々のイベントを処理するように設計されています。これらの機能は、イベントの公開、キャプチャ、処理、および保存を中心に構築されたソフトウェア設計モデルであるイベント駆動型アーキテクチャー(EDA)の重要な要素になっています。EDAフレームワークでは、イベント・プロデューサー(マイクロサービス、API、IoTデバイスなど)がイベント・コンシューマーにリアルタイムのイベント通知を送信し、特定の処理ルーチンをアクティブ化します。たとえば、Netflixが新しいオリジナル・シリーズをリリースすると、複数のEDAサービスがリリース通知を待機し、その通知を受けて、一連のアップデートがトリガーされてユーザーに通知されます。ユーザー向けのWebアプリケーションやモバイル・アプリケーション(Uber、DoorDash、Instacartなど)をベースにしている他の多くの企業は、イベント駆動型アーキテクチャーを使用しています。
サーバーレス、Platform as a Service(PaaS)、コンテナ、仮想マシン(VM)はすべて、クラウド・アプリケーション開発とコンピューティング・エコシステムにおいて重要な役割を果たすため、いくつかの重要な側面において、サーバーレスが他のサーバーレスとどのように異なるかを比較すると役立ちます。
Kubernetesは、コンテナのデプロイメント、管理、スケーリングを自動的に行うオープンソースのコンテナ・オーケストレーション・プラットフォームです。この自動化は、コンテナ化されたアプリケーション開発を大幅に簡素化します。
サーバーレス・アプリケーションは多くの場合、コンテナにデプロイされます。ただし、Kubernetesを特定のクラウド・プロバイダーのサーバーレス・プラットフォームと統合する専用ソフトウェアを使用して、Kubernetesをサーバーレス・アプリケーションとして独立して実行することはできません。
Knativeは、サーバーレス・フレームワークを提供するKubernetesのオープンソースの拡張機能です。これにより、コンテナがサーバーレス機能やその他のアプリケーション・コード(マイクロサービスなど)を中心に構築されているかどうかにかかわらず、Kubernetesを実行するクラウド・プラットフォーム上でサーバーレス・ワークロードとしてコンテナを実行できます。 Knativeは、コードを抽象化し、ネットワーク・ルーティングやイベントベースのトリガーを処理するだけではなく、サーバーレスの実行を自動スケーリングします。
開発者がKnativeを意識することはありません。開発者がKubernetesを使用して通常どおりコンテナを構築するだけで、残りの作業はKnativeが行い、コンテナをサーバーレス・ワークロードとして実行するからです。
サーバーレス・コンピューティングは、個人の開発者や企業の開発チームに、次のような技術上およびビジネス上の多くのメリットをもたらします。
サーバーレスには多くの利点がありますが、いくつかの欠点を考慮することが重要です。
CSPは、サーバーレス・アプリケーションを管理するためのセキュリティー対策を行っていますが、責任共有モデルに従って、クライアントにもアプリケーションコードとデータを保護する責任があります。サーバーレスのクラウド・ベースのセキュリティー対策には、セキュリティー情報およびイベント管理(SIEM)、IDおよびアクセス管理(IAM)、脅威の検出と対応などの自動化されたセキュリティポリシーとソリューションが含まれます。
DevSecOpsプラクティスに従うことで、開発チームはサーバーレス・テクノロジーを保護できます。DevSecOpsは、Development(開発)、Security(セキュリティー)、Operations(運用)の略で、初期設計から統合、テスト、提供、デプロイメントに至るまで、ソフトウェア開発ライフサイクルのあらゆる段階でセキュリティーとセキュリティープラクティスの統合を自動化するアプリケーション開発プラクティスです。
従来のオンプレミス・データセンター環境とは異なり、サーバーレス・コンピューティング・モデルは、組織がIT運用におけるエネルギー消費を削減し、二酸化炭素の排出量を削減するのに役立ちます。
さらに、サーバーレス・モデルでは、必要なリソースのみに対して支払い、必要なリソースのみを使用することで、リソースの効率化を通じて排出量を最適化することができます。これにより、アイドル状態のプロセスまたは過剰なプロセスでのエネルギーの無駄を減らすことができます。
サーバーレス・アーキテクチャーは、その独自の特徴とメリットにより、マイクロサービス、モバイル・バックエンド、データおよびイベント・ストリーム処理を伴うユースケースに最適です。
現在、サーバーレスが最もよく使用されているユースケースは、マイクロサービス・アーキテクチャーのサポートです。マイクロサービス・モデルは、単一のジョブを実行し、APIを使用して相互に通信する小規模なサービスの作成に焦点を当てています。マイクロサービスは、PaaSまたはコンテナのいずれかを使用して構築および運用する必要がある一方で、サーバーレスは、小規模コード、固有の自動スケーリング、迅速なプロビジョニング、使用していないキャパシティーに対して課金されない料金体系といったメリットから、シェアを広げています。
サーバーレス・プラットフォーム内のあらゆるアクション(または機能)を、Webクライアントが使用できるHTTPエンドポイントに変えることができます。Webに対して有効になっている場合、これらのアクションはWebアクションと呼ばれます。Webアクションを作成したら、追加のセキュリティー、OAuth3のサポート、レート制限、カスタム・ドメイン・サポートを提供するAPI Gatewayを備えたフル機能のAPIに組み立てることができます。
Open LibertyInstantOn4は、サーバーレスアプリケーションの迅速な立ち上げをサポートする斬新なアプローチを採用しています。InstantOnを使用することで、アプリケーションの構築中に実行中のJavaアプリケーション・プロセスのチェック・ポイントを取得し、実稼働環境でそのチェック・ポイントを復元できます。復元は高速(100ミリ秒台前半)で行われるため、サーバーレスに最適です。InstantOnは、既存のアプリケーションのチェック・ポイントであるため、復元後の動作は同一で、優れたスループット・パフォーマンスを確保できます。このプロセスにより、組織は新しいクラウドネイティブ・アプリケーションにサーバーレスを採用できるようになり、既存の企業にサーバーレスを導入する機会が得られます。
サーバーレスは、データ・エンリッチメント、変換、検証、クレンジングなどのタスクを中心に構造化テキストや音声、画像、動画データを処理するのに最適です。また、PDF処理、音声の正規化、画像処理(回転、シャープ化、ノイズ・リダクション、サムネイル生成)、光学式文字認識(OCR)、動画のトランスコーディングにも使用できます。
各データが独立しており並行で処理が行えるようなタスクは、サーバーレス・ランタイムのユースケースの好例で、並列化可能なタスクごとに1つのアクションの呼び出しが行われます。サンプル・タスクには、データの検索と処理(特に、クラウド・オブジェクト・ストレージ)、MapReduce操作、Webスクレイピング、ビジネス・プロセスの自動化、ハイパーパラメータ調整、モンテカルロ・シミュレーション、ゲノム処理に至るすべてが含まれます。
マネージドApache KafkaをFaaSおよびデータベースまたはストレージと組み合わせることで、データ・パイプラインとストリーミング・アプリケーションをリアルタイムで構築するための強力な基盤が提供されます。これらのアーキテクチャーは、IoTセンサー・データ、アプリケーション・ログ・データ、金融市場データ、ビジネス・データ・ストリーム(他のデータ・ソースから)など、あらゆる種類のデータ・ストリームの取り込み処理(検証、クレンジング、エンリッチメント、変換)に最適です。
サーバーレス・コンピューティングは、オンプレミス、パブリッククラウド、プライベートクラウド、エッジ環境全体で変動するワークロードに対応するために必要なアジリティー、柔軟性、拡張性を提供することで、ハイブリッドクラウド戦略をサポートします。
サーバーレスは、顧客関係管理(CRM)、高性能コンピューティング(HPC)、ビッグデータ分析、ビジネス・プロセスの自動化、ビデオ・ストリーミング、ゲーム、遠隔医療、デジタル・コマース、チャットボットの構築など、今日の最も一般的な用途の多くをサポートしています。
このチュートリアルを通して、サーバーレス・コンピューティングのスキルを向上させることができます。
フルマネージド・コンテナのランタイムでコンテナ、アプリケーション・コード、バッチ・ジョブを行います。
デプロイメントであれ、新しいクラウドネイティブ・アプリケーションの構築であれ、既存アプリケーションのリファクタリングや再プラットフォーム化などであれ、Cloud Pak for Applications(CP4Apps)がすべてをカバーします。
あらゆるクラウドベンダーのオンプレミス、エッジコンピューティング、パブリッククラウド環境にわたって、アプリの一貫したデプロイと実行を実現しましょう。
オープンソースのApache CouchDBをベースにした、ハイパースケールかつレジリエントな、世界中で利用できるアプリ向けデータ層。
サーバーレス・アプリケーションとサービスの監視で、パフォーマンス、可用性とセキュリティーを最適化します。
(すべてのリンク先は、ibm.com外部にあります。)
1 Global Serverless Architecture Market Report, SkyQuest, March 2024
2 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