1. サーバーレス入門 MOC
- サーバーレスとは
- サーバーレスコンピューティングの定義 (サーバーの管理を開発者が意識する必要のないクラウド実行モデル)
[["サーバーレス"は"サーバーがない"という意味ではない]]- サーバーレスの核心的価値 (ビジネスロジックへの集中、インフラ管理からの解放)
- サーバーレスの主要なカテゴリ
- FaaS (Function as a Service) (イベント駆動のコード実行)
- BaaS (Backend as a Service) (認証、DBなどのバックエンド機能をAPIとして利用)
- なぜサーバーレスが注目されるか
- サーバーレスの基本原則
[[インフラの抽象化]][[イベント駆動アーキテクチャ]][[ステートレスなコンピューティング]][[自動スケーリングと弾力性]][[従量課金モデル]]
- サーバーレス vs. 他のアーキテクチャ
[[サーバーレス vs. コンテナ (Kubernetes)]][[サーバーレス vs. PaaS (Platform as a Service)]][[サーバーレス vs. 仮想マシン (IaaS)]]
- サーバーレスの学習ロードマップ (例)
2. Function-as-a-Service (FaaS) MOC
2.1. FaaSの基本概念 MOC
- FaaSの定義 (イベントに応じてコード(関数)を実行し、実行時間に対してのみ課金されるサービス)
- FaaSの構成要素
[[関数 (Function)]](実行されるコードの単位)[[イベントソース (Event Source) / トリガー (Trigger)]](関数を起動するきっかけ)[[実行コンテキスト (Execution Context)]]
- FaaSのライフサイクル
[[デプロイ (パッケージングとアップロード)]][[呼び出し (Invocation)]](同期呼び出し vs. 非同期呼び出し)[[スケーリング (自動スケールアウト/イン)]]
- コールドスタート (Cold Start) とウォームスタート (Warm Start)
[[コールドスタートの発生原因と影響 (レイテンシ)]][[コールドスタートの緩和策 (プロビジョニング済み同時実行、ウォームアップ戦略)]]
- FaaSの制限
[[実行時間制限]][[メモリサイズ制限]][[デプロイパッケージサイズ制限]]
2.2. AWS Lambda MOC
[[Lambdaの概要と特徴]]- Lambda関数の作成と設定
[[サポートされるランタイム (Node.js, Python, Java, Go, Ruby, .NETなど)]][[カスタムランタイム]][[メモリとタイムアウトの設定]][[環境変数とシークレット管理]][[デプロイパッケージ (.zip, コンテナイメージ)]]
- Lambdaのトリガー (イベントソース)
[[API Gateway (HTTPリクエスト)]][[S3 (オブジェクト作成/削除)]][[DynamoDB Streams]][[SQS (Simple Queue Service)]][[EventBridge (CloudWatch Events)]][[その他のAWSサービス]]
- IAMロールとLambdaの実行権限
- VPC内リソースへのアクセス
- Lambdaの同時実行数とスケーリング
[[プロビジョニング済み同時実行 (Provisioned Concurrency)]]
[[Lambda Layers]](ライブラリと依存関係の共有)[[Lambda Extensions]](モニタリングツールなどとの統合)- (オプション) Lambda@Edge (CloudFrontエッジでの実行)
2.3. Azure Functions MOC
[[Azure Functionsの概要と特徴]]- 関数アプリ (Function App) とホスティングプラン
[[従量課金プラン (Consumption Plan)]][[Premiumプラン, App Serviceプラン]]
- トリガーとバインディング
[[トリガー (HTTP, Timer, Queue, Blobなど)]][[入力バインディングと出力バインディング]]
[[function.jsonファイル]][[Durable Functions]](ステートフルなオーケストレーション)[[Azure Functionsのローカル開発とデバッグ]]
2.4. Google Cloud Functions MOC
[[Cloud Functionsの概要と特徴]]- 関数の世代 (1st gen vs. 2nd gen)
- トリガーの種類
[[HTTPトリガー]][[イベント駆動トリガー (Pub/Sub, Cloud Storage, Firestoreなど)]]
[[Cloud Functionsのセキュリティ (IAM)]][[Cloud Functionsと他のGCPサービスとの連携]]
2.5. FaaSプラットフォームの比較 (AWS vs. Azure vs. GCP)
[[ランタイムサポートの比較]][[設定可能なパラメータ (メモリ, タイムアウト) の比較]][[エコシステムとサービス統合の比較]][[料金体系の比較]][[開発者体験の比較]]
3. Backend-as-a-Service (BaaS) MOC
- Webアプリのバックエンド機能をAPIとして提供)
- BaaSが提供する一般的な機能
[[認証 (Authentication)]][[データベース (Database)]][[ファイルストレージ (File Storage)]][[プッシュ通知 (Push Notifications)]][[ホスティング (Hosting)]]
- 主要なBaaSプラットフォーム
- Firebase (Google) MOC
[[Firebase Authentication]][[Cloud Firestore / Realtime Database]][[Cloud Storage for Firebase]][[Cloud Functions for Firebase]]
- AWS Amplify MOC
- Supabase (オープンソースFirebase代替)
- Firebase (Google) MOC
- BaaSの利点と欠点 (開発速度向上 vs. ベンダーロックイン、柔軟性の制限)
4. サーバーレスアーキテクチャとデザインパターン MOC
- サーバーレスアーキテクチャの基本原則
[[ステートレスな関数の設計]][[イベント駆動]][[外部サービスによる状態管理]]
- 一般的なサーバーレスアーキテクチャパターン
- サーバーレスAPIバックエンド MOC
[[API Gateway + Lambda + DynamoDB]](AWSの例)
- イベント駆動データ処理パイプライン MOC
[[S3 -> Lambda -> SQS -> Lambda -> DynamoDB]](AWSの例)
- リアルタイムファイル処理 MOC (画像リサイズ、動画変換など)
- Webアプリケーションバックエンド MOC (認証、データアクセス)
- リアルタイムアプリケーションバックエンド MOC (チャット、IoT)
[[API Gateway WebSocket API + Lambda]]
- スケジュール実行タスク (サーバーレスCron) MOC
[[EventBridge (CloudWatch Events) + Lambda]]
- サーバーレスなETLジョブ
- サーバーレスAPIバックエンド MOC
- ストラングラーFIGパターン (Strangler Fig Pattern) とサーバーレス
- (オプション) サーバーレスマイクロサービス
- (オプション) イベントソーシングとCQRSのサーバーレス実装
5. サーバーレス開発とツール MOC
- サーバーレスフレームワーク MOC
[[Serverless Framework]](プロバイダー非依存)[[AWS SAM (Serverless Application Model)]][[AWS CDK (Cloud Development Kit)]](プログラミング言語によるIaC)
- ローカル開発とテスト
[[サーバーレスフレームワークのローカル実行機能]][[SAM CLI]][[コンテナ (Docker) を利用したLambda関数のローカルテスト]][[モックとスタブの活用]]
- CI/CD for Serverless
[[サーバーレスアプリケーションのデプロイ戦略]][[CI/CDパイプラインの構築 (GitHub Actions, GitLab CI, AWS CodePipelineなど)]][[Blue/Greenデプロイメントとカナリアリリース (Lambdaエイリアス, API Gatewayステージ)]]
- Infrastructure as Code (IaC) とサーバーレス (Terraform, SAM, Serverless Framework)
6. サーバーレスの運用と管理 MOC
- サーバーレスの監視 (Monitoring) MOC
- 主要なメトリクス (呼び出し回数, 実行時間, エラーレート, スロットリング数)
[[AWS CloudWatch Metrics]][[Azure Monitor]][[Google Cloud's operations suite (旧Stackdriver)]]
- サーバーレスのロギング (Logging) MOC
[[AWS CloudWatch Logs]][[構造化ロギングの重要性]][[ログ集約と分析]]
- サーバーレスのトレーシング (Tracing) MOC
[[分散トレーシングの必要性 (複数のサービス連携)]][[AWS X-Ray]][[Azure Application Insights]][[Google Cloud Trace]]
- サーバーレスのデバッグ MOC
[[ログからのデバッグ]][[トレースデータの分析]][[リモートデバッグとステップ実行 (一部プラットフォームでサポート)]]
- アラートと通知
- (オプション) サードパーティ監視ツール (Datadog, New Relic, Lumigoなど)
7. サーバーレスのパフォーマンスとコスト MOC
- パフォーマンスの考慮事項
- コールドスタートの分析と対策 (再掲・深掘り)
[[言語ランタイムの選択]](コンパイル言語 vs. インタプリタ言語)[[メモリ割り当てとCPUパフォーマンス]][[プロビジョニング済み同時実行]][[ウォームアッププラグイン/スクリプト]][[依存関係の最小化とパッケージサイズの削減]]
- タイムアウト設定の最適化
- メモリ設定の最適化
- コネクションプーリング (データベース、外部API)
- コールドスタートの分析と対策 (再掲・深掘り)
- コストモデルと最適化
- 従量課金の仕組み (リクエスト数 + 実行時間(GB秒))
- コストの見積もりと計算
- コスト削減戦略
[[適切なメモリサイズの選択]][[コードの効率化による実行時間短縮]][[アーキテクチャの見直し (例: SQSによるバッチ処理)]][[Savings Plans / コミットメント割引の利用]]
- コスト監視とアラート
8. サーバーレスセキュリティ MOC
- サーバーレスの攻撃対象領域 (イベントソース、関数、IAMロール、依存関係、バックエンドサービス)
- IAMによる最小権限の原則
[[各Lambda関数に専用のIAMロールを割り当てる]][[必要な権限のみを付与する]]
- イベントインジェクション攻撃とその対策
[[API Gateway, S3イベントなどからの入力値の厳格な検証]]
- 依存関係の脆弱性管理 (SCAツールの利用)
- シークレット管理 (Secrets Management)
[[AWS Secrets Manager, AWS Systems Manager Parameter Store, Azure Key Vault, Google Secret Manager]][[環境変数に直接シークレットを置かない]]
- ネットワークセキュリティ
[[VPC内での関数の実行とセキュリティグループ]][[API Gatewayの認証・認可機能 (APIキー, IAM, Cognito, Lambda Authorizer)]]
- ロギングと監視による脅威検知
- OWASP Serverless Top 10 (概要)
9. サーバーレスの利点と欠点 (まとめ) MOC
- 利点
[[インフラ管理コストの削減]][[スケーラビリティと弾力性]][[コスト効率 (従量課金)]][[開発サイクルの高速化]][[ビジネスロジックへの集中]]
- 欠点・課題
[[ベンダーロックインのリスク]][[コールドスタートによるレイテンシ]][[実行時間とリソースの制限]][[ローカルでのテストとデバッグの複雑さ]][[状態管理の難しさ]][[監視とトレーシングの複雑さ (分散システム)]][[ツールの未成熟さ (過去の話になりつつある)]]