213 lines
6.5 KiB
Markdown
213 lines
6.5 KiB
Markdown
|
|
# 技术栈推荐矩阵
|
|||
|
|
|
|||
|
|
基于黄金路径"主张性"原则,提供经过验证的技术选型推荐。
|
|||
|
|
|
|||
|
|
## 选型原则
|
|||
|
|
|
|||
|
|
1. **优先成熟稳定**:生产验证 > 技术新颖
|
|||
|
|
2. **生态系统完整**:工具链、社区、人才储备
|
|||
|
|
3. **认知负荷最小化**:学习曲线与团队匹配
|
|||
|
|
4. **长期可维护性**:活跃维护、向后兼容
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 应用架构模式选型
|
|||
|
|
|
|||
|
|
| 场景特征 | 推荐模式 | 理由 |
|
|||
|
|
|----------|----------|------|
|
|||
|
|
| 早期产品、团队<10人 | **模块化单体** | 快速迭代,避免分布式复杂性 |
|
|||
|
|
| 成熟产品、多团队并行 | **微服务** | 独立部署,团队自治 |
|
|||
|
|
| 事件驱动、高弹性需求 | **Serverless** | 按需扩展,成本优化 |
|
|||
|
|
| 遗留系统现代化 | **绞杀者模式** | 渐进式迁移,风险可控 |
|
|||
|
|
|
|||
|
|
### 架构决策树
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
项目类型?
|
|||
|
|
├── MVP/早期产品
|
|||
|
|
│ └── 推荐: 模块化单体 (Next.js/Rails/Django)
|
|||
|
|
├── 成长期产品
|
|||
|
|
│ ├── 需要独立扩展?
|
|||
|
|
│ │ ├── 是 → 微服务 (容器化)
|
|||
|
|
│ │ └── 否 → 继续单体,关注模块边界
|
|||
|
|
└── 成熟产品
|
|||
|
|
└── 按领域边界拆分微服务
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 后端技术栈
|
|||
|
|
|
|||
|
|
### Tier 1: 首选推荐
|
|||
|
|
|
|||
|
|
| 场景 | 推荐栈 | 理由 |
|
|||
|
|
|------|--------|------|
|
|||
|
|
| 通用Web服务 | **Go + Gin/Echo** | 高性能、部署简单、并发模型清晰 |
|
|||
|
|
| 快速开发 | **Python + FastAPI** | 开发效率、类型提示、异步支持 |
|
|||
|
|
| 企业级应用 | **Java 21+ + Spring Boot 3** | 生态成熟、人才充足、长期支持 |
|
|||
|
|
| 高并发/实时 | **Node.js + NestJS** | 事件驱动、TypeScript支持 |
|
|||
|
|
|
|||
|
|
### Tier 2: 特定场景
|
|||
|
|
|
|||
|
|
| 场景 | 推荐栈 | 适用条件 |
|
|||
|
|
|------|--------|----------|
|
|||
|
|
| 系统级性能 | **Rust + Axum** | 团队有Rust经验,性能敏感 |
|
|||
|
|
| .NET生态 | **C# + ASP.NET Core** | 现有.NET投资,Windows生态 |
|
|||
|
|
| 函数计算 | **TypeScript + AWS Lambda** | Serverless优先架构 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 前端技术栈
|
|||
|
|
|
|||
|
|
### 核心框架
|
|||
|
|
|
|||
|
|
| 场景 | 推荐栈 | 理由 |
|
|||
|
|
|------|--------|------|
|
|||
|
|
| 通用SPA | **React 18+ + TypeScript** | 生态最大、人才最多、灵活性高 |
|
|||
|
|
| 全栈一体 | **Next.js 14+ (App Router)** | SSR/SSG、API路由、优化内置 |
|
|||
|
|
| 渐进增强 | **Vue 3 + Nuxt 3** | 学习曲线平缓、官方全家桶 |
|
|||
|
|
| 高性能需求 | **Svelte + SvelteKit** | 编译时优化、bundle更小 |
|
|||
|
|
|
|||
|
|
### 样式方案
|
|||
|
|
|
|||
|
|
| 优先级 | 方案 | 适用场景 |
|
|||
|
|
|--------|------|----------|
|
|||
|
|
| 1 | **Tailwind CSS** | 通用首选,原子化、一致性好 |
|
|||
|
|
| 2 | **CSS Modules + Sass** | 需要传统CSS组织方式 |
|
|||
|
|
| 3 | **styled-components** | 动态样式需求、CSS-in-JS偏好 |
|
|||
|
|
|
|||
|
|
### 状态管理
|
|||
|
|
|
|||
|
|
| 复杂度 | 推荐方案 | 说明 |
|
|||
|
|
|--------|----------|------|
|
|||
|
|
| 简单 | React内置 (useState/useContext) | 避免过度工程 |
|
|||
|
|
| 中等 | **Zustand** | 轻量、直观、TypeScript友好 |
|
|||
|
|
| 复杂 | **Redux Toolkit + RTK Query** | 完整工具链、中间件生态 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 数据层
|
|||
|
|
|
|||
|
|
### 关系型数据库
|
|||
|
|
|
|||
|
|
| 场景 | 推荐 | 理由 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 通用OLTP | **PostgreSQL 16+** | 功能丰富、JSONB支持、扩展生态 |
|
|||
|
|
| 高并发读写 | **MySQL 8+ / PlanetScale** | 成熟稳定、分布式扩展方案 |
|
|||
|
|
| 嵌入式/边缘 | **SQLite** | 零配置、高可靠 |
|
|||
|
|
|
|||
|
|
### NoSQL数据库
|
|||
|
|
|
|||
|
|
| 场景 | 推荐 | 理由 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 文档存储 | **MongoDB Atlas** | 灵活Schema、托管服务成熟 |
|
|||
|
|
| 缓存 | **Redis 7+** | 数据结构丰富、集群支持 |
|
|||
|
|
| 搜索 | **Elasticsearch / OpenSearch** | 全文搜索、日志分析 |
|
|||
|
|
| 时序数据 | **TimescaleDB / InfluxDB** | 时序优化、压缩高效 |
|
|||
|
|
|
|||
|
|
### 消息队列
|
|||
|
|
|
|||
|
|
| 场景 | 推荐 | 理由 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 通用异步 | **Apache Kafka** | 高吞吐、持久化、生态丰富 |
|
|||
|
|
| 轻量级 | **Redis Streams** | 已有Redis、需求简单 |
|
|||
|
|
| 云原生 | **AWS SQS / GCP Pub/Sub** | 托管服务、免运维 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 基础设施
|
|||
|
|
|
|||
|
|
### 容器与编排
|
|||
|
|
|
|||
|
|
| 层级 | 推荐 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 容器运行时 | **Docker / containerd** | 行业标准 |
|
|||
|
|
| 编排平台 | **Kubernetes (托管)** | EKS/GKE/AKS优先,避免自建 |
|
|||
|
|
| 轻量替代 | **Docker Compose + Swarm** | 小规模、快速起步 |
|
|||
|
|
|
|||
|
|
### 基础设施即代码
|
|||
|
|
|
|||
|
|
| 场景 | 推荐 | 理由 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 多云/通用 | **Terraform** | 生态最大、状态管理成熟 |
|
|||
|
|
| AWS专用 | **AWS CDK (TypeScript)** | 类型安全、与AWS深度集成 |
|
|||
|
|
| Kubernetes | **Helm + Kustomize** | 模板化、环境差异管理 |
|
|||
|
|
|
|||
|
|
### GitOps工具
|
|||
|
|
|
|||
|
|
| 推荐 | 适用场景 |
|
|||
|
|
|------|----------|
|
|||
|
|
| **ArgoCD** | Kubernetes原生、UI友好、多集群 |
|
|||
|
|
| **Flux v2** | 轻量、GitOps Toolkit、可组合 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 开发者工具链
|
|||
|
|
|
|||
|
|
### CI/CD
|
|||
|
|
|
|||
|
|
| 场景 | 推荐 | 理由 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| GitHub生态 | **GitHub Actions** | 深度集成、市场丰富 |
|
|||
|
|
| 自托管 | **GitLab CI** | 完整DevOps平台 |
|
|||
|
|
| 企业级 | **Jenkins + BlueOcean** | 灵活可控、插件生态 |
|
|||
|
|
|
|||
|
|
### 可观测性
|
|||
|
|
|
|||
|
|
| 层面 | 推荐 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 统一采集 | **OpenTelemetry** | 厂商中立、标准化 |
|
|||
|
|
| 指标 | **Prometheus + Grafana** | 开源标准、告警成熟 |
|
|||
|
|
| 日志 | **Loki / Elasticsearch** | 与Grafana集成 / 功能丰富 |
|
|||
|
|
| 追踪 | **Jaeger / Tempo** | 分布式追踪、开源方案 |
|
|||
|
|
| 托管方案 | **Datadog / New Relic** | 一站式、减少运维负担 |
|
|||
|
|
|
|||
|
|
### 开发者门户
|
|||
|
|
|
|||
|
|
| 推荐 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| **Backstage** | Spotify开源、事实标准、插件生态 |
|
|||
|
|
| **Port** | SaaS方案、快速上手 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 安全工具链
|
|||
|
|
|
|||
|
|
| 阶段 | 工具 | 用途 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 代码扫描 | **Semgrep / SonarQube** | SAST静态分析 |
|
|||
|
|
| 依赖检查 | **Snyk / Dependabot** | SCA漏洞扫描 |
|
|||
|
|
| 容器安全 | **Trivy / Grype** | 镜像漏洞扫描 |
|
|||
|
|
| 密钥检测 | **GitLeaks / TruffleHog** | 防止密钥泄露 |
|
|||
|
|
| 密钥管理 | **HashiCorp Vault** | 集中式密钥管理 |
|
|||
|
|
| 策略引擎 | **OPA / Kyverno** | 策略即代码 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 技术选型决策模板
|
|||
|
|
|
|||
|
|
每项技术选型须记录:
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
## 技术选型: [名称]
|
|||
|
|
|
|||
|
|
### 背景
|
|||
|
|
[为什么需要做这个决策]
|
|||
|
|
|
|||
|
|
### 选项分析
|
|||
|
|
| 选项 | 优势 | 劣势 | 风险 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| A | | | |
|
|||
|
|
| B | | | |
|
|||
|
|
|
|||
|
|
### 决策
|
|||
|
|
选择 [X],理由:[简述核心理由]
|
|||
|
|
|
|||
|
|
### 后果
|
|||
|
|
- 正面:[预期收益]
|
|||
|
|
- 负面:[需要接受的权衡]
|
|||
|
|
|
|||
|
|
### 验证计划
|
|||
|
|
[如何验证决策正确性]
|
|||
|
|
```
|