高级架构师
架构设计与分析工具,用于做出明智的技术决策。
目录
快速开始
# 从项目生成架构图
python scripts/architecture_diagram_generator.py ./my-project --format mermaid
# 分析依赖关系问题
python scripts/dependency_analyzer.py ./my-project --output json
# 获取架构评估
python scripts/project_architect.py ./my-project --verbose
工具概览
1. 架构图生成器
从项目结构生成多种格式的架构图。
解决: “我需要为文档或团队讨论可视化我的系统架构”
输入: 项目目录路径 输出: 图表代码(Mermaid、PlantUML或ASCII)
支持的图表类型:
component- 显示模块及其关系layer- 显示架构层(表示层、业务层、数据层)deployment- 显示部署拓扑
用法:
# Mermaid格式(默认)
python scripts/architecture_diagram_generator.py ./project --format mermaid --type component
# PlantUML格式
python scripts/architecture_diagram_generator.py ./project --format plantuml --type layer
# ASCII格式(终端友好)
python scripts/architecture_diagram_generator.py ./project --format ascii
# 保存到文件
python scripts/architecture_diagram_generator.py ./project -o architecture.md
示例输出(Mermaid):
graph TD
A[API 网关] --> B[认证服务]
A --> C[用户服务]
B --> D[(PostgreSQL)]
C --> D
2. 依赖关系分析器
分析项目依赖关系,查找耦合、循环依赖和过时的包。
解决: “我需要了解我的依赖树并识别潜在问题”
输入: 项目目录路径 输出: 分析报告(JSON或人类可读)
分析:
- 依赖树(直接和间接)
- 模块间的循环依赖
- 耦合分数(0-100)
- 过时的包
支持的包管理器:
- npm/yarn(
package.json) - Python(
requirements.txt、pyproject.toml) - Go(
go.mod) - Rust(
Cargo.toml)
用法:
# 人类可读报告
python scripts/dependency_analyzer.py ./project
# JSON输出用于CI/CD集成
python scripts/dependency_analyzer.py ./project --output json
# 仅检查循环依赖
python scripts/dependency_analyzer.py ./project --check circular
# 详细模式带建议
python scripts/dependency_analyzer.py ./project --verbose
示例输出:
依赖关系分析报告
==========================
总依赖数:47(32直接,15间接)
耦合分数:72/100(中等)
发现的问题:
- 循环:auth → user → permissions → auth
- 过时:lodash 4.17.15 → 4.17.21(安全)
建议:
1. 提取共享接口以打破循环依赖
2. 更新lodash以修复CVE-2020-8203
3. 项目架构师
分析项目结构,检测架构模式、代码异味和改进机会。
解决: “我想了解当前架构并识别改进领域”
输入: 项目目录路径 输出: 架构评估报告
检测:
- 架构模式(MVC、分层、六边形、微服务指标)
- 代码组织问题(神类、混合关注点)
- 层违规
- 缺少架构组件
用法:
# 全面评估
python scripts/project_architect.py ./project
# 详细带详细建议
python scripts/project_architect.py ./project --verbose
# JSON输出
python scripts/project_architect.py ./project --output json
# 检查特定方面
python scripts/project_architect.py ./project --check layers
示例输出:
架构评估
=======================
检测到的模式:分层架构(置信度:85%)
结构分析:
✓ controllers/ - 检测到表示层
✓ services/ - 检测到业务逻辑层
✓ repositories/ - 检测到数据访问层
⚠ models/ - 混合领域和DTOs
问题:
- 大文件:UserService.ts(1,847行)- 考虑拆分
- 混合关注点:PaymentController包含业务逻辑
建议:
1. 将UserService拆分为专注的服务
2. 将业务逻辑从控制器移动到服务
3. 将领域模型与DTOs分开
决策工作流程
数据库选择工作流程
在为新项目选择数据库或迁移现有数据时使用。
步骤1:确定数据特征
| 特征 | 指向SQL | 指向NoSQL |
|---|---|---|
| 结构化关系 | ✓ | |
| 需要ACID事务 | ✓ | |
| 灵活/演变中的模式 | ✓ | |
| 文档导向数据 | ✓ | |
| 时间序列数据 | ✓(专门) |
步骤2:评估规模需求
- <1M记录,单一区域 → PostgreSQL或MySQL
- 1M-100M记录,读重 → PostgreSQL带只读副本
-
100M记录,全球分布 → CockroachDB、Spanner或DynamoDB
- 高写入吞吐量(>10K/sec) → Cassandra或ScyllaDB
步骤3:检查一致性需求
- 需要强一致性 → SQL或CockroachDB
- 可接受最终一致性 → DynamoDB、Cassandra、MongoDB
步骤4:记录决策 创建ADR(架构决策记录),包括:
- 背景和需求
- 考虑的选项
- 决策和理由
- 接受的权衡
快速参考:
PostgreSQL → 大多数应用程序的默认选择
MongoDB → 文档存储,灵活的模式
Redis → 缓存、会话、实时功能
DynamoDB → 无服务器、自动扩展、AWS原生
TimescaleDB → 带SQL接口的时间序列数据
架构模式选择工作流程
在设计新系统或重构现有架构时使用。
步骤1:评估团队和项目规模
| 团队规模 | 推荐的起点 |
|---|---|
| 1-3开发人员 | 模块化单体 |
| 4-10开发人员 | 模块化单体或面向服务 |
| 10+开发人员 | 考虑微服务 |
步骤2:评估部署需求
- 可接受单一部署单元 → 单体
- 需要独立扩展 → 微服务
- 混合(一些服务需要不同扩展) → 混合
步骤3:考虑数据边界
- 可接受共享数据库 → 单体或模块化单体
- 需要严格数据隔离 → 微服务与独立数据库
- 事件驱动通信适合 → 事件源/CQRS
步骤4:将模式与需求匹配
| 需求 | 推荐的模式 |
|---|---|
| 快速MVP开发 | 模块化单体 |
| 独立团队部署 | 微服务 |
| 复杂领域逻辑 | 领域驱动设计 |
| 高读写比差异 | CQRS |
| 需要审计跟踪 | 事件源 |
| 第三方集成 | 六边形/端口与适配器 |
查看references/architecture_patterns.md了解详细的模式描述。
单体与微服务决策
选择单体时:
- [ ] 团队小(<10开发人员)
- [ ] 领域边界不明确
- [ ] 快速迭代是优先
- [ ] 必须最小化操作复杂性
- [ ] 可接受共享数据库
选择微服务时:
- [ ] 团队可以端到端拥有服务
- [ ] 独立部署至关重要
- [ ] 每个组件有不同的扩展需求
- [ ] 需要技术多样性
- [ ] 领域边界被很好地理解
混合方法: 从模块化单体开始。仅在以下情况下提取服务:
- 一个模块具有显著不同的扩展需求
- 一个团队需要独立部署
- 技术限制需要分离
参考文档
加载这些文件以获取详细信息:
| 文件 | 包含 | 加载时用户询问 |
|---|---|---|
references/architecture_patterns.md |
9种架构模式,包括权衡、代码示例和使用时机 | “哪种模式?”, “微服务与单体”, “事件驱动”, “CQRS” |
references/system_design_workflows.md |
6个系统设计任务的分步工作流程 | “如何设计?”, “容量规划”, “API设计”, “迁移” |
references/tech_decision_guide.md |
技术选择的决策矩阵 | “选择哪种数据库?”, “选择哪种框架?”, “选择哪种云?”, “选择哪种缓存?” |
技术栈覆盖
语言: TypeScript、JavaScript、Python、Go、Swift、Kotlin、Rust 前端: React、Next.js、Vue、Angular、React Native、Flutter 后端: Node.js、Express、FastAPI、Go、GraphQL、REST 数据库: PostgreSQL、MySQL、MongoDB、Redis、DynamoDB、Cassandra 基础设施: Docker、Kubernetes、Terraform、AWS、GCP、Azure CI/CD: GitHub Actions、GitLab CI、CircleCI、Jenkins
常用命令
# 架构可视化
python scripts/architecture_diagram_generator.py . --format mermaid
python scripts/architecture_diagram_generator.py . --format plantuml
python scripts/architecture_diagram_generator.py . --format ascii
# 依赖关系分析
python scripts/dependency_analyzer.py . --verbose
python scripts/dependency_analyzer.py . --check circular
python scripts/dependency_analyzer.py . --output json
# 架构评估
python scripts/project_architect.py . --verbose
python scripts/project_architect.py . --check layers
python scripts/project_architect.py . --output json
获取帮助
- 运行任何脚本时使用
--help获取使用信息 - 检查参考文档以获取详细的模式和工作流程
- 使用
--verbose标志获取详细解释和建议