知识卡片
技术选型的四个理解误区
内容
[[技术架构是一种路线设计,核心是技术编排|技术架构]]设计中常见四种误判。误区一是认为技术实现的功能越多越好——拥有过多功能的技术产品往往会失去自身特长,在综合平衡下各方面都变得平庸;正确做法是选择能最好解决痛点需求的技术,而非盲目追求功能大而全。误区二是认为技术越新越先进越好——类比买东西:面对优质商品我们也会因为经济因素选择满足需求且价格适中的选项,技术选型同样应该考虑成本收益比,选择低成本且能满足需求的技术,而不是一味追求先进性(哪怕在选型过程中不容易直接感受到这份隐性成本开销)。误区三是以技术为主的思维模式——一旦掌握了Redis、Kafka、Spring Cloud这类技术,就从技术角度出发反过来找应用场景、不管场景是否合适都要用上;现实中常见的荒诞案例是用户数量只有个位数或几十人,却大量使用中间件和分布式框架,造成大量资源浪费;正确的出发点应该始终是需求本身,只有确实需要某项技术来满足需求时才该采用。误区四是过于依赖场景本身做技术选型决策——遇到热点数据场景就条件反射地想到用缓存,这个思路本身没错,但仅考虑场景是不够的:如果系统只有少数用户使用、或者运行环境本身已有足够的内存资源,那么选择分布式缓存就没有必要,一个轻量级本地缓存就能满足需求;技术选型必须综合权衡多个因素,而不能被单一因素(哪怕是看起来最直接相关的”场景”)主导决策。可迁移启发:评审一次技术选型决策时,可以依次追问这四个问题——这项技术是不是被选中只因为功能多、是不是只因为新、是不是团队本来就熟悉这项技术所以想用它、是不是仅仅因为场景对上了就直接拍板——只要其中一条成立而没有配合真实的成本收益分析,这次选型大概率是在给未来埋雷,而非真正意义上的技术编排。
结构图:
flowchart TB
M["四个技术选型误区"]
M --> M1["功能越多越好<br/>→反而丧失特长,趋于平庸"]
M --> M2["技术越新越先进越好<br/>→忽视成本收益比"]
M --> M3["以技术为主导思维<br/>→为用技术而找场景(如个位数用户上Spring Cloud)"]
M --> M4["过度依赖场景单一因素<br/>→忽视用户规模/现有资源等其他条件"]
参考来源
- 位置:《架构师启示录:知识模型、落地方法与思维模式》第7章《架构设计》之"7.3.3 技术架构的理解误区"(源文件:_epub-src/EPUB/xhtml/chapter11.xhtml)
- 结论依据:原文说明"拥有过多功能的技术产品可能会失去自身特长……在技术选型中也应该遵循相似的原则:需要考虑成本收益比……以至于造成大量的资源浪费……在技术选型中需要进行权衡和评估,不要局限于场景等单一因素", 直接支撑本卡关于技术选型四个理解误区的结构图。
- 原始内容:我们也经常遇到用户数量可能只有个位数或几十人,却大量使用中间件技术和分布式框架(比如Spring Cloud)的情况,以至于造成大量的资源浪费。