サーバーレスコンピューティング
Serverless Computing
サーバーレスコンピューティングは、プロバイダーがインフラストラクチャを管理するクラウド実行モデルであり、開発者はサーバーのプロビジョニングやスケーリングを行うことなく、アプリケーションの構築とデプロイが可能になります。
サーバーレスコンピューティングとは?
サーバーレスコンピューティングは、クラウドプロバイダー(AWS、Google Cloud、Azure、IBM Cloudなど)がアプリケーションコードの実行に必要なインフラストラクチャを自動的に管理するクラウド実行モデルです。このモデルにより、開発者はサーバーのプロビジョニング、運用、スケーリングを自ら行うことなく、アプリケーションを構築・デプロイできます。用語に反して、物理サーバーは常に関与していますが、「サーバーレス」とはサーバー管理の抽象化を指し、運用責任をベンダーに移行することを意味します。開発者はビジネスロジックの記述に専念し、基盤となるコンピューティング、ネットワーキング、スケーリング、パッチ適用、フォールトトレランスはプロバイダーが処理します。
サーバーレスコンピューティングは、アプリケーションの構築とデプロイ方法における根本的な変革を表し、インフラストラクチャ管理から純粋なコード実行へと移行します。このパラダイムにより、迅速な開発、自動スケーリング、従量課金制の価格設定が可能になり、現代のクラウドネイティブアプリケーションに最適です。
例え: サーバーレスコンピューティングは、水道や電気のようなユーティリティの使用に例えることができます。ユーザーとして、蛇口をひねったりスイッチを入れたりするだけで、必要な分だけを消費し、それに応じて支払い、基盤となるインフラストラクチャについて心配する必要はありません。
主要な特性
インフラストラクチャの抽象化: 開発者はコンピューティングリソースと直接やり取りすることはありません。クラウドプロバイダーがすべてのサーバーライフサイクル管理とスケーリングを処理します。
イベント駆動型実行: コードは、イベント(HTTPリクエスト、ファイルアップロード、データベース変更、スケジュールされたタスク)によってトリガーされる関数としてデプロイされます。
従量課金制の価格設定: 課金は実行メトリクス(リクエスト数、実行時間、消費リソース)のみに基づいており、アイドル状態や未使用の容量に対する料金は発生しません。
短命でステートレスな関数: サーバーレス関数は通常、短時間でアトミックな実行向けに設計されています。状態はデータベースやオブジェクトストレージなど、外部に保存されます。
迅速なデプロイ: デプロイはクラウドへのコードアップロードを伴い、更新にはコードの置き換えと再デプロイのみが必要です。
自動スケーリング: 手動介入や設定なしで、ゼロから数百万のリクエストまで瞬時にスケールします。
サーバーレスの仕組み
サーバーレスアーキテクチャはイベント駆動型モデルで動作します。関数(個別のステートレスなロジック単位)は、外部または内部のトリガーに応答して呼び出されます。サーバーレス関数のライフサイクルは通常、次のステップに従います。
1. トリガー: HTTPリクエスト、ファイルアップロード、メッセージキューの更新、スケジュールされたタイマーなどのイベントが、関数の実行を開始します。
2. プロビジョニング: プロバイダーは、ミリ秒単位で必要なコンピューティングリソース(CPU、メモリ、ネットワーキング)を割り当てます。多くの場合、内部でコンテナ化技術を使用しています。
3. 実行: 関数が実行され、イベントを処理し、結果を返します。実行環境は一時的なものです。
4. スケーリングと終了: プロバイダーは、複数のインスタンスを並行して実行することで、複数の同時イベントを処理するために瞬時にスケールできます。イベントがなくなると、リソースは解放され、環境は「ゼロにスケール」できます。
例:
ユーザーがクラウドストレージバケットに画像をアップロードします。アップロードイベントがサーバーレス関数をトリガーし、画像をリサイズして、異なるコンテキスト(サムネイル、プレビューなど)で使用するために、異なるバリアントをバケットに保存します。
サーバーレスと他のクラウドモデルの比較
| 属性 | サーバーレス | PaaS | コンテナ | VM |
|---|---|---|---|---|
| 管理負担 | 最小限 | 中程度 | 中〜高 | 高 |
| コストモデル | 従量課金 | インスタンス課金 | コンテナ課金 | VM課金 |
| メンテナンス | なし | 低 | 中程度 | 高 |
| スケーラビリティ | 自動、即時 | 手動/自動 | 手動/自動 | 手動/自動 |
| ステートレス性 | 通常ステートレス | ステートフル/ステートレス | ステートフル/ステートレス | ステートフル/ステートレス |
| プロビジョニング時間 | ミリ秒 | 分 | 分 | 分〜時間 |
| アイドルコスト | $0 | 発生 | 発生 | 発生 |
サーバーレスは、ほぼすべてのインフラストラクチャ管理を抽象化し、需要に応じてシームレスにスケールし、実際の使用量のみに課金します。
PaaSは、一部の運用オーバーヘッドを削減しますが、通常は手動スケーリングが必要で、アイドル時でも実行インスタンスのコストが発生します。
コンテナは、移植性と柔軟性を提供しますが、オーケストレーション、スケーリング、ライフサイクル管理が必要です。
VMは、完全な制御を提供しますが、管理責任とスケーリングをユーザーに課します。
サーバーレスアーキテクチャの種類
Function as a Service (FaaS)
FaaSにより、開発者はイベントに応答して実行される個別の関数またはコードスニペットをデプロイできます。プラットフォームは、これらの関数のオーケストレーション、スケーリング、ライフサイクルを処理します。
主要な特性:
- イベント駆動型
- ステートレス
- 短時間の実行
- 自動スケーリング
例: AWS Lambda、Google Cloud Functions、Azure Functions、IBM Cloud Code Engine
Backend as a Service (BaaS)
BaaSは、データベース、認証、メッセージング、ストレージなどのマネージドバックエンドサービスをAPI経由で提供し、カスタムバックエンドコードやインフラストラクチャの必要性を排除します。
例: Firebase、AWS Amplify、Auth0
その他のサーバーレス形態
サーバーレスデータベース: データベース容量を自動的にスケール(例:Amazon Aurora Serverless)
サーバーレスコンテナ: サーバー管理なしでコンテナを実行(例:AWS Fargate、Google Cloud Run)
サーバーレスエッジコンピューティング: エンドユーザーに近い場所で関数を実行し、低レイテンシを実現(Cloudflare Workers)
サーバーレスイベントストリーミング: マネージドイベントパイプライン(Azure Event Grid、AWS EventBridge)
サーバーレスコンピューティングの利点
コスト効率
課金は実際のコンピューティング消費に厳密に基づいており、アイドル容量や事前プロビジョニングされたインフラストラクチャのコストは発生しません。これは、変動するワークロードに特にコスト効率的です。
運用効率
クラウドプロバイダーがサーバーのプロビジョニング、パッチ適用、更新、スケーリングを処理するため、開発者はインフラストラクチャ管理から解放され、デプロイサイクルが加速されます。
自動かつ無限のスケーラビリティ
サーバーレス関数は、予測不可能または変動するワークロードに対応するためにシームレスにスケールし、需要の急増に関係なくアプリケーションの応答性を確保します。
開発速度の向上
開発者はビジネスロジックと機能開発に集中でき、市場投入までの時間が短縮され、製品品質が向上します。
バックエンドコードの簡素化
サーバーレスアーキテクチャは、モジュール式のマイクロサービス指向設計を促進し、保守性を向上させ、迅速な反復をサポートします。
統合されたエコシステム
主要なクラウドプロバイダーは、サーバーレスプラットフォームとネイティブに連携する統合サービス(データベース、AI/機械学習、メッセージングなど)を提供しています。
デメリットと制限事項
コールドスタートレイテンシ
関数は、非アクティブ期間後に呼び出されると、「コールドスタート」として知られる追加の起動レイテンシが発生する可能性があります。これは、レイテンシに敏感なアプリケーションのユーザーエクスペリエンスに影響を与える可能性があります。
ベンダーロックイン
独自のAPI、設定、ランタイムが移植可能でない場合があるため、クラウドプロバイダー間でサーバーレスワークロードを移行することは複雑になる可能性があります。
制御の制限
開発者は、従来のモデルと比較して、ランタイム環境、ネットワーキング、セキュリティ制御に対する可視性とカスタマイズオプションが少なくなります。
適合性の制約
ほとんどのプラットフォームが実行時間制限を課し、外部状態管理を必要とするため、サーバーレスは長時間実行またはステートフルなアプリケーションにはあまり適していません。
デバッグと監視の複雑さ
インフラストラクチャの抽象化により、詳細なトラブルシューティング、ログ集約、システムトレーシングが妨げられる可能性があります。
長時間実行プロセスの潜在的な高コスト
コンピューティング集約的で長時間のタスクの場合、サーバーレスの価格設定は、予約済みまたは専用インフラストラクチャのコストを超える可能性があります。
セキュリティ上の考慮事項
各関数は潜在的な攻撃エントリポイントになる可能性があり、適切に保護されていない場合、攻撃対象領域が増加します。
一般的なユースケース
APIバックエンド
サーバーレス関数をエンドポイントとして使用して、スケーラブルなAPIを構築します。Coca-Cola FreestyleはモバイルアプリバックエンドにAWS Lambdaを使用しています。
リアルタイムデータ処理と分析
IoT、ユーザーアクティビティ、ログからのストリーミングデータを処理して、即座にインサイトを得ます。GenentechはAWS Lambdaを使用して臨床データを迅速に分析しています。
バッチ処理
大量のETL、データバックアップ、レポート作成ジョブを実行します。Liberty Mutualは、サーバーレスワークフローを使用して1億件のグローバル金融取引を処理しています。
ビジネスプロセス自動化
ワークフロー、データパイプライン、システム統合を自動化します。Taco Bellは、サーバーレスを使用してパートナーにリアルタイムのメニューデータを配信しています。
画像と動画の処理
アップロード時に画像サムネイルを自動生成したり、動画ストリームを最適化したり、ファイル形式を変換したりします。
AI推論とアプリケーション
リアルタイム推論、チャットボット、レコメンデーションエンジン用のスケーラブルなAIエンドポイントをホストします。Google Cloud Runは、サーバーレスとAIモデルデプロイを統合しています。
IoTとイベント駆動型アプリ
予測不可能なデバイスイベントやセンサーデータに応答します。
DevOpsとCI/CD自動化
サーバーレストリガーを使用して、ビルド、テスト、デプロイパイプラインを自動化します。
サードパーティ統合とスケジュールされたタスク
SaaSツール間でデータを同期したり、スケジュールされたレポートを生成したり、専用インフラストラクチャなしで定期的なジョブを実行したりします。
セキュリティと運用
責任共有モデル
クラウドプロバイダーの責任: インフラストラクチャ、仮想化、OSパッチ適用、マネージドバックエンドサービスのセキュリティを確保します。
顧客の責任: アプリケーションコードのセキュリティ確保、IDとアクセスの管理(IAMポリシー)、入力の検証、APIエンドポイントの保護を行います。
サーバーレスアプリケーションのセキュリティ確保のベストプラクティス
最小権限の原則: 関数とサービスに最小限の権限を割り当てます。
入力検証: インジェクションやその他の攻撃を防ぐために、すべての受信データをサニタイズおよび検証します。
監視とログ記録: 統合ツール(AWS CloudWatch、Google Cloud Monitoring、IBM Log Analysis)を使用して、リアルタイム監視、異常検出、トラブルシューティングを行います。
APIセキュリティ: 認証、認可、レート制限(API Gatewayなど)でエンドポイントを保護します。
依存関係管理: 脆弱性を減らすために、サードパーティパッケージを定期的に更新および監査します。
ネットワーク制御: 利用可能な場合は、VPC統合またはファイアウォールルールを使用して、関数のネットワークアクセスを制限します。
はじめに
サーバーレスサービスを試す
- AWS Lambda
- Google Cloud Functions
- IBM Cloud Code Engine
- Azure Functions
- Red Hat OpenShift Serverless
チュートリアルとハンズオンラボ
- IBM Cloud Code Engine “Hello World”
- AWS Serverless Getting Started
- Google Cloud Run Quickstart
今日から最初のサーバーレスアプリケーションの構築を始めましょう
無料のAWSアカウントにサインアップするか、Google Cloudクレジットを取得するか、IBM Cloudの無料ティアを試してください。
参考文献
- AWS: What is Serverless Computing?
- Google Cloud: What is Serverless Computing?
- Red Hat: What is Serverless?
- IBM: What is Serverless Computing?
- Alpacked: Full Guide to Serverless
- TechTarget: Top Benefits and Disadvantages
- Okta: Serverless Computing
- YouTube: Serverless Essentials by Google Cloud
- Red Hat: What is FaaS?
- Firebase
- AWS Lambda
- Google Cloud Functions
- Azure Functions
- IBM Cloud Code Engine
- AWS Amplify
- Auth0
- Amazon Aurora Serverless
- AWS Fargate
- Google Cloud Run
- Cloudflare Workers
- Azure Event Grid
- AWS EventBridge
- Knative: Serverless on Kubernetes
- Red Hat OpenShift Serverless
関連用語
スポットインスタンス
スポットインスタンスは、AWS、Azure、GCPが提供する割引価格のクラウドコンピューティングリソースで、バッチ処理、分析、機械学習トレーニングなどの耐障害性ワークロードに最適です。...
SaaS(Software as a Service)
インターネット経由でサブスクリプション形式で提供されるソフトウェアで、インストールやメンテナンスが不要です。ユーザーは任意のデバイスからいつでも最新バージョンにアクセスできます。...