阶段一:生存期(0 → PMF)
目标:活下来、快上线、控成本、少踩坑
一、阶段特征
团队规模:2–10 人
资金状况:极度敏感
架构诉求:
少服务
少依赖
少运维
核心问题:能不能跑稳,而不是跑优雅
二、技术选型建议(明确)
主力语言:Go
Java:原则上不进入主战场
推荐使用 Go 的模块
API Gateway
用户 / 权限
订单 / 核心交易(非复杂结算)
实时接口 / Webhook
高并发 I/O 服务
明确不做的事
不上复杂 ORM
不搞“领域建模洁癖”
不引入重量级中间件
三、架构形态
[ Client ] | [ Go API Service ] | [ MySQL / Redis ]
单体 or 轻服务化
强接口、弱内部结构
避免“未来架构”
四、为什么此阶段 Go 完胜
| 维度 | Go | Java |
|---|---|---|
| 服务器成本 | 极低 | 高 |
| 运维复杂度 | 极低 | 高 |
| 启动速度 | 毫秒 | 秒级 |
| 人力要求 | 普通工程师 | 需要 JVM 能力 |
一句话:这个阶段用 Java,是提前支付未来成本。
阶段二:扩张期(PMF → 规模化)
目标:稳住增长,开始分层,逐步引入复杂度
一、阶段特征
团队规模:10–50 人
流量开始不稳定
客户开始提“复杂需求”
开始关注:
研发效率
代码可维护性
二、技术策略(关键转折点)
Go 不撤退,但不再“包打天下”
Java 开始“定点介入”
推荐语言分工
| 模块 | 语言 |
|---|---|
| 网关 / 边缘服务 | Go |
| 实时交易 / 高并发接口 | Go |
| 财务、结算、账务 | Java |
| 报表、批处理 | Java |
| 规则 / 工作流 | Java |
三、架构形态
[ Client ] | [ Go Gateway ] | ------------------------- | | | Go Core Java Finance Java Report
以 Go 扛流量
以 Java 扛复杂性
四、关键架构原则(非常重要)
语言不是分层依据,复杂度才是
Go 服务不引入 Java 式架构
Java 服务从一开始就“工程化”
分层
规范
测试
五、这一阶段最常见的失败
❌ 全面 Go 化,结果规则系统失控
❌ 全面 Java 化,服务器成本爆炸
❌ 频繁重构,推翻早期服务
阶段三:平台期(规模化 → 长期演进)
目标:组织可扩展、系统可演进、成本可预测
一、阶段特征
团队规模:50–200+
业务线多
租户复杂
开始关注:
领域边界
团队自治
长期维护成本
二、语言格局(稳定态)
Go = 基础设施语言
Java = 业务中枢语言
Go 的稳定角色
API Gateway
接入层
实时服务
Agent / Sidecar
高性能中间件
Java 的稳定角色
核心业务域
财务 / 账务
规则 / 工作流
数据建模复杂系统
三、架构形态
[ Client ] | [ Go Gateway ] | --------------------------------- | Go Edge | Java Domain | Data | ---------------------------------
明确 Bounded Context
语言服务边界稳定
不再大规模切换语言
四、此阶段为什么 Java 反而更合适
复杂业务的表达能力
大规模协作下的可维护性
完整的企业级生态
强约束降低组织熵增
三阶段决策速查表(给 CTO 用)
| 问题 | 选 Go | 选 Java |
|---|---|---|
| 现金流紧张? | ✅ | ❌ |
| 团队 < 10 人? | ✅ | ❌ |
| 规则复杂? | ❌ | ✅ |
| 并发 / I/O 密集? | ✅ | ❌ |
| 长期演进 / 复杂业务? | ⚠ | ✅ |
最后一段架构级结论
Go 不是 Java 的替代品,而是“延缓 Java 成本曲线的工具”。
Java 不是创业期的敌人,而是规模化后的必需品。
真正成熟的技术路线是:
用 Go 赢得时间,用 Java 赢得复杂性。