📚 后端架构落地教程 #技术选型 #架构决策 #方法论

技术选型完整方法论:如何做 POC、如何评估取舍

选型不是列优缺点打分,而是把业务约束翻译成可验证的假设,用 POC 验证,再写 ADR 留痕。

✍️ diunilaomei 📅 2025-11-18 📝 约 1347 字 ⏱️ 约 3 分钟
📑 章节目录
字号

先把话说清楚:选型没有最优解

网上大量选型文章是「A vs B 优缺点清单」,看完了还是不知道选什么。原因是脱离业务约束的优缺点没有意义:MySQL 的「缺点」在没有写库压力的场景里根本不是缺点。

我的经验是三步走:翻译约束 → 提出可证伪的假设 → POC 验证。选型不是打分题,是假设检验题。

第一步:把业务约束翻译成选型标准

在打开任何技术对比之前,先回答这几个问题,并把答案写成可衡量的指标

  1. 规模约束:真实峰值 QPS 预估多少?数据量三年后多大?(拍脑袋要乘 2)
  2. 一致性约束:业务允许最终一致吗?钱、订单这类不允许。
  3. 成本约束:预算多少?包括人力成本——一个团队没接触过的技术栈,学习成本常常是隐性的最大成本。
  4. 运维约束:团队有几个人能值班?能不能接受 3 点起来修一个没人会的组件?
  5. 演进约束:这个选择锁定了什么?迁移成本多高?

踩坑记录:我早期做过一次「技术理想主义」的选型,给一个日活几千的产品上了当时最时髦的微服务 + 全套中间件,理由是「架构要先进」。结果是 5 个人的团队一半精力花在维护基础设施上。规模不到,先进架构就是负债。架构复杂度和业务复杂度不匹配,是反模式的第一条。

第二步:候选方案,收敛到 2–3 个

把约束翻译成「一票否决项」和「加分项」:

  • 一票否决:比如公司合规要求数据不出域 → 纯 SaaS 方案直接出局;团队没人会且招不到 → 冷门语言组件出局。
  • 加分项:性能、生态、文档、招人容易度、与现有技术栈的一致性。

先砍掉被一票否决的,剩下 2–3 个做 POC。不要 POC 太多方案,每多一个,验证成本翻倍。

第三步:POC 只验证「那个不确定的假设」

POC 最大的误区是把官方 demo 跑一遍就叫验证。POC 要验证的是你最不确定、错了代价最大的一件事

  • 选缓存:不确定的是「热点场景下命中率与穿透表现」→ 用真实流量回放压测。
  • 选消息队列:不确定的是「极端堆积下的吞吐与延迟」→ 造 10 倍峰值流量看积压。
  • 选向量库:不确定的是「召回质量」→ 用你自己业务的数据集测,而不是官方 toy dataset。

POC 必须提前写清楚通过标准。我见过太多 POC 跑了两周,结论却是「感觉还行」——没有通过标准,等于没验证。

踩坑记录:有一次选型做 POC,测出来延迟达标但成本超预算 3 倍,因为只测了性能没测成本。POC 的验收维度必须包含性能、成本、运维复杂度三项,只看一项等于盲人摸象。

第四步:把决策写下来(ADR)

选定之后,花 20 分钟写一份架构决策记录(ADR),包含:背景、候选方案、为什么选它、放弃了什么、如果数据变化什么条件下要推翻重选。

ADR 的价值在三个月后:新同学问「为什么不用 X?」时,你不用靠回忆解释,团队也不会反复争论同一个已经决策过的问题。

常见取舍速查(我自己的判断框架)

场景我的倾向为什么
数据量百万级以内PostgreSQL 单库事务、运维、招人都省心
只有 1–2 个服务单体 + 进程内缓存微服务是手段不是目的
读多写少、热点明显加缓存,先不加读写分离少一个数据源就少一种一致性噩梦
消息量小、要求不高先上简单 MQ 或 DB 队列别为「未来可能」预支复杂度
需要私有化 AI先算 token 成本账,再谈模型见 AI 工程教程系列

落地清单

  • 写出 5 条以上业务约束,并能量化为指标
  • 明确一票否决项,收敛候选到 2–3 个
  • POC 只验证 1 个核心假设,且含性能 / 成本 / 运维三维度
  • 提前写清 POC 通过标准
  • 决策后 20 分钟内写 ADR

延伸阅读:架构评审清单 · 技术方案文档模板 · 下一章《业务架构拆解》已经写好:去看

相关阅读

栏目全部 →