Serverless 2025 - Lambda Managed InstancesとDurable Functionsの革新

2026.01.12

サーバーレス市場の現在地

グローバルサーバーレスコンピューティング市場は2025年に**$28.02B**に達し、2034年には$92.22Bに成長すると予測されています(CAGR 14.15%)。

AWS re:Invent 2025 の革新

Lambda Managed Instances

AWS Lambdaの最大のアップデート。EC2のコントロールサーバーレスの簡便さを両立。

# Lambda Managed Instancesの設定
import boto3

lambda_client = boto3.client('lambda')

response = lambda_client.create_function(
    FunctionName='high-performance-function',
    Runtime='python3.12',
    Handler='handler.main',
    Code={'S3Bucket': 'my-bucket', 'S3Key': 'code.zip'},

    # Managed Instancesの設定
    ComputeConfig={
        'Type': 'ManagedInstance',
        'InstanceType': 'c6i.xlarge',
        'MinInstances': 2,  # 常時起動でコールドスタート排除
        'MaxInstances': 10
    }
)

特徴:

  • コールドスタートの排除
  • マルチコンカレンシー(1環境で複数リクエスト処理)
  • 特殊なコンピュートオプションへのアクセス
  • 定常ワークロードのコスト最適化

Lambda料金体系比較(2025年)

項目従来のLambdaManaged Instances
リクエスト料金$0.20/100万リクエスト$0.20/100万リクエスト
コンピュートGB-秒単価EC2料金 + 15%プレミアム
コールドスタートありなし(常時稼働)
マルチコンカレンシーなし(1リクエスト/環境)あり
最適ユースケーススパイク負荷定常的なトラフィック
# コスト比較シミュレーション
def compare_costs(requests_per_month: int, avg_duration_ms: int):
    """
    Lambda vs Managed Instancesのコスト比較
    """
    # 従来のLambda(1024MB)
    lambda_compute = (requests_per_month * avg_duration_ms / 1000) * 0.0000166667
    lambda_requests = requests_per_month * 0.0000002
    traditional_cost = lambda_compute + lambda_requests

    # Managed Instances(c6i.large相当)
    # 月額約$62 + 15% = ~$71 + リクエスト料金
    managed_base = 71  # 月額固定費
    managed_requests = requests_per_month * 0.0000002
    managed_cost = managed_base + managed_requests

    return {
        "traditional_lambda": traditional_cost,
        "managed_instances": managed_cost,
        "break_even_requests": 71 / 0.0000166667  # 約426万リクエスト/月
    }

# 例:月1000万リクエスト、平均100ms
result = compare_costs(10_000_000, 100)
# Managed Instancesの方が約40%安い

Lambda Durable Functions

実行の一時停止と再開が可能に。アイドル時間の課金なし。

# Durable Functionsの例
from aws_lambda_durable import workflow, activity

@workflow
async def order_processing(order_id: str):
    # ステップ1: 在庫確認
    inventory = await activity.check_inventory(order_id)

    # ステップ2: 支払い処理(外部APIを待機)
    # この間、関数は一時停止し課金されない
    payment = await activity.process_payment(
        order_id,
        timeout_hours=24
    )

    # ステップ3: 発送処理
    shipping = await activity.ship_order(order_id)

    return {
        "order_id": order_id,
        "status": "completed"
    }

メリット:

  • 長時間ワークフローのネイティブサポート
  • 外部オーケストレーション不要
  • コスト効率の大幅改善

主要ユースケース

Web/モバイルバックエンド

# API Gateway + Lambda
import json

def handler(event, context):
    path = event['path']
    method = event['httpMethod']

    if method == 'GET' and path == '/users':
        users = get_users()
        return {
            'statusCode': 200,
            'headers': {'Content-Type': 'application/json'},
            'body': json.dumps(users)
        }

    return {'statusCode': 404, 'body': 'Not Found'}

リアルタイムデータ処理

# S3イベント駆動処理
def process_upload(event, context):
    for record in event['Records']:
        bucket = record['s3']['bucket']['name']
        key = record['s3']['object']['key']

        # アップロードされたファイルを処理
        process_file(bucket, key)

        # 結果を別バケットに保存
        save_result(f"processed-{key}")

AI/MLワークフロー

# Bedrockとの統合
import boto3

bedrock = boto3.client('bedrock-runtime')

def ai_handler(event, context):
    prompt = event['prompt']

    response = bedrock.invoke_model(
        modelId='anthropic.claude-3-sonnet-20240229-v1:0',
        body=json.dumps({
            'anthropic_version': 'bedrock-2023-05-31',
            'max_tokens': 1024,
            'messages': [{'role': 'user', 'content': prompt}]
        })
    )

    return json.loads(response['body'].read())

サーバーレスアーキテクチャパターン

イベント駆動アーキテクチャ

graph LR
    A[API GW] --> B[Lambda]
    B --> C[SQS]
    C --> D[Lambda]
    D --> E[Lambda]
    E --> F[S3]

SAMテンプレート例

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Globals:
  Function:
    Timeout: 30
    Runtime: python3.12
    Architectures:
      - arm64  # Graviton2でコスト削減

Resources:
  ApiFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: src/
      Handler: app.handler
      MemorySize: 256
      Events:
        Api:
          Type: Api
          Properties:
            Path: /{proxy+}
            Method: ANY
      Policies:
        - DynamoDBCrudPolicy:
            TableName: !Ref DataTable

  DataTable:
    Type: AWS::DynamoDB::Table
    Properties:
      BillingMode: PAY_PER_REQUEST
      AttributeDefinitions:
        - AttributeName: pk
          AttributeType: S
      KeySchema:
        - AttributeName: pk
          KeyType: HASH

課題と対策

コールドスタート

# Provisioned Concurrencyで対策
# または Lambda Managed Instances

# ウォームアップ関数
def keep_warm(event, context):
    """
    CloudWatch Eventsで5分ごとに実行
    """
    if event.get('source') == 'aws.events':
        return {'statusCode': 200, 'body': 'Warm'}

    # 通常の処理
    return main_handler(event, context)

デバッグの複雑さ

# 構造化ログでデバッグ改善
import structlog

logger = structlog.get_logger()

def handler(event, context):
    logger.info(
        "function_invoked",
        request_id=context.aws_request_id,
        event_source=event.get('source')
    )

    try:
        result = process(event)
        logger.info("processing_complete", result=result)
        return result
    except Exception as e:
        logger.error("processing_failed", error=str(e))
        raise

ベンダーロックイン

# Serverless Framework(マルチクラウド対応)
service: my-service

provider:
  name: aws  # または azure, google
  runtime: python3.12

functions:
  api:
    handler: handler.main
    events:
      - http:
          path: /
          method: get

AIエージェントの課題

2025年の注目点として、AIエージェントとサーバーレスの相性問題が浮上。

AIエージェントの特性:
・ステップの連続実行
・過去のコンテキスト参照
・中間ファイルの作成
・複数ツールの呼び出し
・長時間の実行

→ ステートレスなFaaSとの不整合
→ 永続的なクラウドワークステーションへの移行

コスト最適化

# メモリとCPUの最適化
# Lambda Power Tuning を使用

optimizations = {
    "memory_size": 1024,  # パフォーマンスとコストのバランス
    "architecture": "arm64",  # 20%コスト削減
    "provisioned_concurrency": 5,  # 予測可能なトラフィック用
    "reserved_concurrency": 100,  # 過剰スケール防止
}

参考: AWS - Lambda Managed Instances

まとめ

2025年のサーバーレスは、Lambda Managed InstancesとDurable Functionsにより従来の制限を突破しています。コールドスタートの排除、長時間ワークフローのサポート、AIワークロードへの対応など、より幅広いユースケースに適用可能になりました。一方で、AIエージェントのような新しいワークロードパターンへの対応は今後の課題です。

この技術を体系的に学びたいですか?

未来学では東証プライム上場企業のITエンジニアが24時間サポート。月額24,800円から、退会金0円のオンラインIT塾です。

LINEで無料相談する
← 一覧に戻る