Files
danyang-match/docs/decisions/ADR-001-technology-stack.md
T

1.8 KiB

ADR-001: 技术栈决策

状态: 已批准
日期: 2026-08-28
决策者: Codex(依据项目总指令)


背景

项目需要一个稳定、成熟、易维护的技术栈来支撑 V1.0 开发,同时满足国内运营环境和长期可维护性要求。


决策

Backend

采用 Java 21 + Spring Boot 3.x。

理由:

  • 事务管理能力强,对 Match 并发、活动名额等核心场景友好
  • Spring Security 提供成熟的权限框架
  • 国内团队普遍熟悉,便于长期维护
  • 模块化单体架构天然支持
  • MyBatis-Plus 或 Spring Data JPA 均可,V1 优先使用 MyBatis-Plus(国内生态更成熟)

Database

采用 PostgreSQL。

理由:

  • 成熟稳定,事务能力强
  • JSONB 支持良好,适合混合结构化/半结构化数据
  • 索引能力成熟,适合匹配查询优化
  • 开源无授权成本
  • 与 Spring Boot 集成完善

Cache

采用 Redis。

用途:Session、Token 辅助、限流、推荐缓存、未读计数、分布式锁。

Miniapp

采用 微信原生小程序 + TypeScript。

理由:

  • 无需引入跨端框架增加维护成本
  • 官方支持完善
  • 与微信登录/订阅消息生态无缝对接

Admin Web

采用 Vue 3 + TypeScript + Vite + Pinia + Element Plus。

理由:

  • 国内团队生态成熟
  • Element Plus 组件库丰富,适合后台管理系统
  • Vite 构建快,开发体验好

Deployment

采用 Docker + Docker Compose + Nginx。

暂不引入 K8s / Kafka / Elasticsearch 等复杂基础设施。


后果

  • 团队需要熟悉 Java 21 / Spring Boot 3.x 生态
  • PostgreSQL 需要运维支持(备份、监控)
  • Redis 需要运维支持(持久化配置、内存管理)
  • 后期如有扩展需求,可从单体拆分为服务(Messaging → Match → Notification → Analytics 优先拆分)