关于 Python Backend Architecture Review
面向 Python 后端设计的架构评审技能,可按系统设计、安全、数据库、API、性能和部署等方面分析方案。适用于评审架构文档或系统描述,并提供分级发现与可执行建议。
主要功能
- 01覆盖系统设计与代码组织
- 02评估数据库与 API 设计
- 03检查安全、性能与可观测性
- 04审视部署、韧性及数据流
- 05按严重程度组织评审结果
适用场景
- 01评审 Python 后端架构文档
- 02分析微服务与数据库方案
- 03检查安全和扩展性设计
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rknall/ claude-skills --skill python-backend-architecture-review安装后在 Claude Code 中输入/python-backend-architecture-review确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
technology-recommendations.mdarchitecture-checklist.mdREADME.mdcommon-patterns.md详细介绍
Python 后端架构评审
此技能为 Python 后端应用提供全面的架构评审能力,涵盖从基础设施到代码组织的系统设计各个方面。
何时使用此技能
用户提出以下请求时,启用此技能:
- 评审后端架构设计文档
- 对 Python 应用的系统设计提供反馈
- 分析可扩展性模式和方法
- 评审后端架构的安全性
- 评估数据库设计
- 评估 API 设计
- 评审微服务架构
- 提供性能优化建议
- 评审云基础设施架构
- 分析代码组织和项目结构
评审框架
1. 初步分析
用户提供架构文档或描述其系统时,首先:
-
了解背景
- 询问以下方面的澄清问题:
- 预期规模(用户数、每秒请求数、数据量)
- 性能要求(延迟、吞吐量)
- 安全和合规要求
- 团队规模和专业能力
- 预算限制
- 时间安排预期
- 询问以下方面的澄清问题:
-
文档分析
- 如果提供了架构图或文档,则分析:
- 组件关系和边界
- 数据流模式
- 外部依赖项
- 技术栈选择
- 部署拓扑
- 如果提供了架构图或文档,则分析:
2. 全面评审范围
从以下维度评估架构:
A. 系统架构和设计模式
评估:
- 整体架构风格(单体、微服务、无服务器、混合)
- 服务边界和职责
- 通信模式(同步/异步、REST/GraphQL/gRPC)
- 事件驱动架构组件
- 适用情况下的 CQRS 和事件溯源模式
- 领域驱动设计原则
- 关注点分离
- 依赖管理
提供以下方面的反馈:
- 所选架构是否符合规模和复杂度
- 是否存在过度设计或设计不足的问题
- 是否缺少组件或服务
- 紧密耦合问题
- 单点故障
- 可扩展性瓶颈
Python 特定注意事项:
- 框架选择(FastAPI、Django、Flask 等)
- ASGI 与 WSGI 的考量
- async/await 模式及其用法
- Python 的 GIL 对架构决策的影响
- 多进程与多线程策略
B. 数据库架构
评估:
- 数据库类型选择(PostgreSQL、MySQL、MongoDB、Redis 等)
- 数据建模方法
- 规范化与反规范化策略
- 分片和分区计划
- 只读副本和复制策略
- 缓存层(Redis、Memcached)
- 数据库连接池
- 事务管理
- 数据一致性模型(强一致性、最终一致性)
提供以下方面的反馈:
- 模式设计质量
- 索引策略
- 查询优化模式
- 防止 N+1 查询
- 数据库迁移策略
- 备份和灾难恢复
- 适用情况下的多租户方案
- 数据保留和归档策略
Python 特定注意事项:
- ORM 选择(SQLAlchemy、Django ORM、Tortoise ORM 等)
- 原始 SQL 与 ORM 的权衡
- 异步数据库驱动(asyncpg、motor 等)
- 迁移工具(Alembic、Django migrations)
C. API 设计与通信
评估:
- API 设计模式(RESTful、GraphQL、gRPC)
- 端点结构与命名
- 请求/响应格式
- 版本控制策略
- 身份验证与授权
- 速率限制与节流
- API 文档方案
- 契约优先与代码优先设计
- 实时功能中的 WebSocket 用法
- 消息队列集成(RabbitMQ、Kafka、SQS)
提供以下方面的反馈:
- API 一致性与约定
- 错误处理与状态码
- 分页策略
- 筛选与搜索功能
- 幂等性保证
- 向后兼容方案
- 适用时的 GraphQL 模式设计
- 适用时的 gRPC 服务定义
Python 特定注意事项:
- FastAPI 自动生成 OpenAPI
- Pydantic 验证模型
- Django REST Framework 序列化器
- GraphQL 库(Strawberry、Graphene、Ariadne)
- gRPC-python 代码生成
D. 安全架构
评估:
- 身份验证机制(JWT、OAuth2、基于会话)
- 授权模型(RBAC、ABAC、基于策略)
- API 安全(速率限制、CORS、CSRF 防护)
- 数据加密(静态数据与传输中的数据)
- 密钥管理方案
- 网络安全(VPC、安全组、防火墙规则)
- 输入验证与清理
- SQL 注入防护
- XSS 和 CSRF 防护
- 依赖漏洞扫描
- 安全标头实现
提供以下方面的反馈:
- 身份验证/授权方面的缺口
- 敏感数据泄露风险
- 缺少安全控制
- 访问权限过于宽松
- 不安全的默认设置
- 缺少审计日志
- 缺少安全监控
Python 特定注意事项:
- 使用 python-jose、PyJWT 处理令牌
- 使用 bcrypt、argon2 进行密码哈希
- 环境变量管理(python-dotenv)
- 框架中的安全中间件
- SQLAlchemy 参数化查询
E. 可扩展性与性能
评估:
- 水平扩展与垂直扩展策略
- 负载均衡方案
- 自动扩缩容配置
- 缓存策略(应用、数据库、CDN)
- 长时间运行任务的异步处理
- 后台任务处理(Celery、RQ、Dramatiq)
- 基于队列的架构
- 数据库只读副本
- 连接池
- 资源优化
提供以下方面的反馈:
- 可扩展性瓶颈
- 缺少缓存层
- 低效的数据访问模式
- 应采用异步处理的同步操作
- 缺少队列基础设施
- 资源利用率低
- 缺少性能监控
Python 特定注意事项:
- ASGI 服务器选择(Uvicorn、Hypercorn)
- Gunicorn 工作进程配置
- Celery 工作进程配置
- 异步框架用法(asyncio 最佳实践)
- 性能分析工具(cProfile、py-spy)
- CPU 密集型任务的 GIL 应对方案
F. 可观测性与监控
评估:
- 日志策略与集中化
- 指标收集与聚合
- 分布式追踪实现
- 错误追踪与告警
- 健康检查端点
- 性能监控
- 业务指标跟踪
- 日志聚合工具(ELK、Loki、CloudWatch)
- APM 工具(DataDog、New Relic、Prometheus)
提供以下方面的反馈:
- 缺少可观测性组件
- 日志细节不足
- 缺少结构化日志
- 没有分布式追踪
- 缺少关键告警
- 没有性能基线
- 错误追踪不足
Python 特定注意事项:
- 结构化日志库(structlog、python-json-logger)
- OpenTelemetry Python SDK
- Sentry 集成
- StatsD/Prometheus 客户端库
- 异步代码中的上下文传播
G. 部署与基础设施
评估:
- 容器化策略(Docker)
- 编排方案(Kubernetes、ECS 等)
- CI/CD 流水线设计
- 环境管理(开发、预发布、生产)
- 基础设施即代码(Terraform、CloudFormation)
- 蓝绿或金丝雀部署策略
- 回滚流程
- 配置管理
- 部署中的密钥管理
提供反馈:
- 部署复杂度
- 缺少自动化
- 环境一致性不足
- 没有回滚策略
- 流水线中的测试不足
- 手动部署步骤
- 缺少基础设施版本控制
Python 特定注意事项:
- Docker 镜像优化(多阶段构建)
- 依赖管理(pip、Poetry、PDM)
- 容器中的虚拟环境处理
- Python 版本管理
- 编译型依赖(wheel 文件)
H. 代码组织与项目结构
评估:
- 项目目录结构
- 模块和包的组织方式
- 依赖注入模式
- 配置管理
- 环境变量的使用
- 测试策略与组织方式
- 代码复用模式
- 包/模块边界
提供反馈:
- 模块职责不明确
- 循环依赖
- 代码结构组织不佳
- 层间缺乏隔离
- 缺少配置抽象
- 硬编码值
- 测试覆盖不足
Python 特定注意事项:
- 包结构(src 布局与扁平布局)
__init__.py的组织方式- 导入模式与循环导入防范
- 类型提示与 mypy 配置
- Pydantic 设置管理
- pytest 组织方式与 fixtures
I. 数据流与状态管理
评估:
- 请求生命周期与数据流
- 状态管理方案
- 会话管理
- 缓存失效策略
- 事件驱动系统中的事件流
- 数据转换层
- 数据验证节点
提供反馈:
- 数据流不明确
- 状态同步问题
- 缺少验证层
- 数据转换不一致
- 缓存一致性问题
- 会话管理问题
J. 弹性与错误处理
评估:
- 重试机制与退避策略
- 熔断器模式
- 超时配置
- 优雅降级方案
- 错误处理的一致性
- 死信队列处理
- 舱壁模式
- 速率限制与节流
提供反馈:
- 缺少容错模式
- 级联故障风险
- 缺少超时设置
- 外部服务没有熔断器
- 错误处理不一致
- 缺少重试逻辑
- 没有优雅降级
Python 特定注意事项:
- 用于重试的 tenacity 库
- asyncio 超时处理
- 异常层次结构设计
- 用于资源清理的上下文管理器
3. 评审输出格式
按以下格式组织评审:
执行摘要
- 整体架构评估(1-3 段)
- 发现的主要优势
- 需要立即关注的关键问题
- 整体成熟度与就绪情况评估
详细发现
对于每个评审领域,提供:
[领域名称]
优势:
- 列出做得好的方面
问题:
- HIGH:必须解决的关键问题
- MEDIUM:应该解决的重要问题
- LOW:可改进但非必需的问题
建议:
- 具体、可执行的建议
- 可考虑的替代方案
- 应遵循的最佳实践
- Python 特定的库或工具建议
架构模式与最佳实践
针对其使用场景,建议经过验证的模式:
- 具体设计模式(Repository、Factory、Strategy 等)
- 集成模式
- Python 特定惯用法
- 框架特定最佳实践
技术栈评估
评审所选技术:
- 是否适合该使用场景
- 团队专业能力方面的考量
- 社区支持与成熟度
- 可考虑的替代方案
- Python 包生态系统建议
可扩展性路线图
如果架构需要扩展:
- 当前限制
- 扩展阶段和触发条件
- 迁移策略
- 不同规模下的成本预测
安全检查清单
提供具体的安全检查清单:
- 身份验证/授权事项
- 数据保护事项
- 网络安全事项
- 合规性考量(GDPR、HIPAA 等)
- Python 安全最佳实践
后续步骤与优先级
按以下顺序排列建议:
- 必须修复的事项(阻塞性问题)
- 应该修复的事项(对生产环境很重要)
- 可选改进的事项(优化项)
包括预估工作量和依赖项。
4. 交互式评审流程
开展评审时:
- 如果架构描述不完整,先提出澄清问题
- 询问约束条件(预算、时间线、团队规模)
- 了解领域和具体业务需求
- 如果未提供图表或文档,请索取
- 对于大型架构,分阶段提供反馈
- 主动提出深入探讨具体关注领域
- 建议示例实现或参考架构
- 针对建议的模式提供代码示例
5. 参考资源
适用时,请参考:
- 12-Factor App 原则
- Python 包推荐(awesome-python)
- 云服务提供商最佳实践(AWS Well-Architected 等)
- 安全框架(OWASP Top 10)
- 性能基准测试资源
- 开源参考实现
- Python 专属资源(PEP、Python 增强提案)
6. 工具与自动化建议
建议使用以下工具:
- 静态分析(Ruff、pylint、flake8、mypy)
- 安全扫描(Bandit、Safety、Snyk)
- 性能分析(cProfile、py-spy、scalene)
- 负载测试(Locust、Artillery)
- 监控(Prometheus、Grafana、DataDog)
- 文档(Sphinx、MkDocs)
- 依赖项管理(Poetry、PDM、pip-tools)
- 代码格式化(Black、Ruff)
沟通风格
提供评审意见时:
- 提出建设性且具体的建议
- 解释建议背后的“原因”
- 提供示例和代码片段
- 在指出问题的同时肯定良好实践
- 清楚地标明问题优先级
- 适用时提供多种解决方案
- 考虑团队的背景和约束条件
- 使用清晰、专业的语言
- 在有帮助时提供 Python 代码示例
- 参考 Python 文档和 PEP
可提出的示例问题
开始评审前,可以考虑询问:
- 预计系统规模如何(用户数、请求数、数据量)?
- 关键性能要求是什么?
- 是否有特定的合规或安全要求?
- 团队对 Python 后端开发的熟悉程度如何?
- 当前处于哪个开发阶段(设计、原型、生产)?
- 是否需要与任何现有系统集成?
- 基础设施预算是多少?
- 部署时间线是什么?
- 是否有技术偏好或约束?
- 初始版本最关键的功能是什么?
交付成果
评审结束时,应提供:
- 包含总体评估的执行摘要
- 涵盖所有评审领域的详细发现
- 按优先级排列的建议清单
- 安全检查清单
- 可扩展性路线图(如适用)
- 技术栈评估
- 后续步骤及工作量估算
- 可选:示例代码或架构图
- 可选:参考链接和资源
持续改进
完成初次评审后:
- 主动提出深入评审特定领域
- 提供实施建议的指导
- 协助解决具体技术难题
- 评审更新后的设计
- 回答后续问题
请记住:目标是帮助用户构建稳健、可扩展、安全且易于维护的 Python 后端系统,以满足其具体需求和约束条件。
评论
支持 Markdown