将遗留单体迁移至 AWS Serverless

发布: (2025年12月10日 GMT+8 22:40)
3 min read
原文: Dev.to

Source: Dev.to

概览

本项目演示了如何使用 Strangler Fig Pattern 在 AWS 上将传统的单体应用迁移到无服务器架构,利用:

  • Terraform 进行基础设施即代码(IaC)
  • Python 编写业务逻辑

目标是展示如何从单体中剥离新功能并用无服务器组件替代——且不破坏现有系统。

架构

该方案包括以下主要组件:

  • 传统单体
  • 新无服务器组件

路由行为

路由描述
/products已迁移路由
/products/restock增强(混沌)路由

前置条件

部署前,请确保您拥有:

  • 一个符合免费套餐条件的 AWS 账户
  • 已安装并配置好的 AWS CLI(aws configure
  • Terraform v1.0 以上版本
  • 用于测试的 Postman 或 curl

项目结构

strangler-fig-aws-migration-demo/

部署说明

1️⃣ 初始化 Terraform

# Inside the infra-terraform directory
terraform init

2️⃣ 部署基础设施

terraform apply

在提示时输入 yes
部署大约需要 2 分钟,随后 EC2 实例安装依赖并启动传统服务器还需约 3 分钟。

3️⃣ 获取 API URL

Terraform 将输出类似以下的值:

api_url = "https://.execute-api.us-east-1.amazonaws.com"

复制该 URL 用于测试。

测试场景

场景端点描述
1/users传统路由
2/products已迁移路由
3/products/restock混沌路由(POST)

场景 3 的示例请求:

curl -X POST /products/restock

故障排查指南

问题原因
502 Bad GatewayAPI Gateway 无法访问 EC2 实例。
400 Bad Request负载版本不匹配。
500 Internal Server Error混沌测试的预期行为。
405 Method Not Allowed在仅支持 POST 的路由上使用了 GET。

如有需要,可重新运行请求:

curl -X POST /products/restock

清理(避免产生费用)

完成后,销毁所有资源:

terraform destroy
Back to Blog

相关文章

阅读更多 »