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

  • BaaSの定義と目的 (モバイル/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代替)
  • 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ジョブ
  • ストラングラー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

  • 利点
    • インフラ管理コストの削減
    • スケーラビリティと弾力性
    • コスト効率 (従量課金)
    • 開発サイクルの高速化
    • ビジネスロジックへの集中
  • 欠点・課題
    • ベンダーロックインのリスク
    • コールドスタートによるレイテンシ
    • 実行時間とリソースの制限
    • ローカルでのテストとデバッグの複雑さ
    • 状態管理の難しさ
    • 監視とトレーシングの複雑さ (分散システム)
    • ツールの未成熟さ (過去の話になりつつある)

10. サーバーレスの将来とトレンド MOC

  • コンテナ技術との融合 (Cloud Run, Fargateなど)
  • エッジコンピューティングとサーバーレス (Lambda@Edge, Cloudflare Workers)
  • WebAssembly (Wasm) とサーバーレス (WASI)
  • ステートフルサーバーレスの進化 (Durable Functionsなど)
  • サーバーレスデータベースの普及 (Aurora Serverless, DynamoDB, Firestore)
  • AIOpsによるサーバーレス運用の自動化
  • サーバーレスがもたらすアーキテクチャと思考の変化