メインコンテンツへスキップ

サーバーレスとは?AWS Lambdaを中心に理解する

·
TIL AWS Lambda サーバーレス
目次

今日学んだこと
#

サーバーレスの概念、登場した背景、AWS Lambdaの特徴と制約について学びました。

学習内容
#

サーバーレスとは
#

サーバーレス(Serverless)とは、開発者がサーバーの管理やプロビジョニングを意識せずにアプリケーションを構築・実行できるクラウドコンピューティングの実行モデルです。

「サーバーがない」という意味ではなく、サーバーの存在を意識しなくてよいという意味です。クラウドプロバイダーがインフラの管理を担当し、開発者はコードに集中できます。

┌────────────────────────────────────────────────────────┐
│  従来のサーバー運用                                      │
│  ┌──────────┐   開発者が管理                            │
│  │  サーバー  │ ← OS・ミドルウェア・スケーリング・障害対応 │
│  └──────────┘                                          │
├────────────────────────────────────────────────────────┤
│  サーバーレス                                            │
│  ┌──────────┐   クラウドが管理                          │
│  │  関数     │ ← 開発者はコードのみに集中               │
│  └──────────┘                                          │
└────────────────────────────────────────────────────────┘

サーバーレスが成立した背景
#

サーバーレスは、クラウドサービスの段階的な進化の延長線上にあります。

サービスモデル正式名称管理範囲具体例
IaaSInfrastructure as a Service仮想マシンAWS EC2
PaaSPlatform as a Serviceアプリ実行環境Elastic Beanstalk
FaaSFunction as a Service関数単位の実行AWS Lambda
SaaSSoftware as a ServiceアプリケーションGmail, Slack

クラウド普及による変化:

  1. 従量課金制の浸透:使った分だけ支払う仕組みが一般化
  2. 仮想化技術の成熟:コンテナ技術やマイクロサービスの発展
  3. ペットと家畜より「家畜」モデルの定着:サーバーを使い捨て可能なリソースとして扱う設計思想(Design for Failure)
  4. イベント駆動型アーキテクチャ:特定のイベントに応じて処理を実行する設計パターンの普及

代表的なサーバーレスサービス
#

プロバイダーサービス名
AWSLambda
Google CloudCloud Functions
Microsoft AzureAzure Functions

AWS Lambdaの特徴
#

AWS Lambdaは、AWSが提供するサーバーレスコンピューティングサービスです。イベント駆動型で、特定のトリガーに応じてコードを実行します。

# Lambda関数の基本構造
import json

def lambda_handler(event, context):
    # eventからトリガー情報を取得
    # contextから実行環境情報を取得
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

イベント駆動型とは?

Webのように「リクエストを受け取ったら」ではなく、「何かイベントを受け取ったら」という考え方です。テストボタンのクリック、S3へのファイルアップロード、API Gatewayからのリクエストなど、様々なイベントがトリガーとなります。

AWS Lambdaの制約
#

項目制限値
最大実行時間15分(900秒)
メモリ割り当て128MB 〜 10,240MB
デプロイパッケージサイズ50MB(zip)/ 250MB(解凍後)
一時ストレージ(/tmp)512MB 〜 10,240MB
同時実行数(デフォルト)1,000(リージョンあたり)

制約から考えるユースケース:

  • 向いている:短時間で完了する処理、イベント駆動の処理、マイクロサービス
  • 向いていない:15分以上かかる長時間処理、常時稼働が必要なサービス

サーバーレスのユースケース
#

  1. APIバックエンド:API Gateway + Lambda で RESTful API を構築
  2. データ処理:S3へのファイルアップロードをトリガーに画像変換・データ加工
  3. イベント通知:特定イベント発生時にSlackやメールへ通知
  4. バッチ処理:定期的なデータ集計・レポート生成
  5. IoTデータ処理:センサーデータのリアルタイム処理

他サービスとの連携例:

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│ API Gateway │ ──→ │   Lambda    │ ──→ │  DynamoDB   │
└─────────────┘     └─────────────┘     └─────────────┘
   HTTPリクエスト      ビジネスロジック      データ保存

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│     S3      │ ──→ │   Lambda    │ ──→ │     SNS     │
└─────────────┘     └─────────────┘     └─────────────┘
 ファイルアップロード   サムネイル生成       通知送信

まとめ
#

観点ポイント
定義サーバー管理不要でコードに集中できる実行モデル
背景クラウドの普及、従量課金制、イベント駆動型の定着
代表例AWS Lambda(FaaS)
メリットコスト効率、自動スケーリング、開発速度向上
制約実行時間15分、メモリ・パッケージサイズ制限
  • サーバーレスは「銀の弾丸」ではなく、ユースケースに応じて従来型サーバー(EC2等)と使い分けることが重要
  • 短時間のイベント駆動処理には最適だが、長時間処理や常時稼働が必要な場合は他の選択肢を検討する

参考
#