Serverless 实战:什么时候用?怎么用?

5 阅读2分钟

Serverless 实战:什么时候用?怎么用?

Serverless 让开发者专注业务代码,无需管理服务器。本文详解 Serverless 应用场景和实战技巧。


一、什么是 Serverless?

1.1 传统架构 vs Serverless

传统架构:
开发 → 买服务器 → 部署 → 运维(扩容、监控、安全)

Serverless:
开发 → 上传代码 → 自动运行 → 按调用付费

1.2 核心特点

特点说明
无服务器管理免运维
自动扩缩容按需伸缩
按调用付费用多少付多少
事件驱动触发执行

二、适用场景

✅ 适合 Serverless

  • API 网关后端
  • 定时任务
  • 文件处理
  • 数据处理流水线
  • 聊天机器人
  • IoT 数据处理

❌ 不适合 Serverless

  • 长时间运行任务 (>15分钟)
  • 需要常驻内存的服务
  • 低延迟要求极高 (<100ms)
  • 大规模计算密集型

三、主流平台

平台特点
AWS Lambda功能最全面
阿里云函数计算国内首选
腾讯云 SCF生态完善
Vercel/Netlify前端友好

四、实战示例

4.1 函数计算快速开始

# index.py
import json

def handler(event, context):
    """
    阿里云函数计算入口
    """
    evt = json.loads(event)
    name = evt.get('name', 'World')
    
    return {
        'statusCode': 200,
        'headers': {'Content-Type': 'application/json'},
        'body': json.dumps({'message': f'Hello, {name}!'})
    }

4.2 Spring Cloud Function

@SpringBootApplication
public class FunctionApplication {
    
    @Bean
    public Function<Order, String> processOrder() {
        return order -> {
            // 处理订单逻辑
            return "Processed: " + order.getId();
        };
    }
}

五、最佳实践

注意事项:
  - 冷启动优化: 保持实例预热
  - 状态管理: 使用外部存储(redis/s3)
  - 超时设置: 合理设置超时时间
  - 日志集中: 日志输出到统一平台
  - 权限最小化: 遵循最小权限原则

六、成本对比

场景传统服务器Serverless节省
低频API¥500/月¥50/月90%
定时任务¥200/月¥10/月95%
突发流量需预留自动扩容无浪费

七、冷启动优化

// 1. 使用 GraalVM 原生镜像
// 启动时间从 3s → 0.5s

// 2. 预留实例
ProvisionedConcurrencyConfig:
  ProvisionedConcurrentExecutions: 10

// 3. 精简依赖
// 移除不需要的依赖,减小包体积

八、总结

何时使用

  • 事件驱动场景
  • 流量波动大
  • 快速验证想法
  • 减少运维成本

避坑指南

  • 注意冷启动
  • 避免长任务
  • 状态外置
  • 监控告警