架构设计的 3 个原则

2023/2/6

# 合适原则

优秀的技术人员都有很强的技术情结,当他们做方案或者架构时,总想不断地挑战自己,想达到甚至优于业界领先水平是其中一个典型表现,因为这样才能够展现自己的优秀,才能在年终 KPI 绩效总结里面骄傲地写上“设计了 XX 方案,达到了和 Google 相同的技术水平”“XX 方案的性能测试结果大大优于阿里集团的 YY 方案”

但现实是,大部分这样想和这样做的架构,最后可能都以失败告终!我在互联网行业见过“亿级用户平台”的失败案例,2011 年的时候,某个几个人规模的业务团队,雄心勃勃的提出要做一个和腾讯 QQ(那时候微信还没起来)一拼高下的“亿级用户平台”,最后结果当然是不出所料的失败了

真正优秀的架构都是在企业当前人力、条件、业务等各种约束下设计出来的,能够合理地将资源整合在一起并发挥出最大功效,并且能够快速落地。这也是很多 BAT 出来的架构师到了小公司或者创业团队反而做不出成绩的原因,因为没有了大公司的平台、资源、积累,只是生搬硬套大公司的做法,失败的概率非常高

# 简单原则

架构设计时如果简单的方案和复杂的方案都可以满足需求,最好选择简单的方案

# 演化原则

如果没有把握 “软件架构需要根据业务发展不断变化” 这个本质,在做架构设计的时候就很容易陷入一个误区:试图一步到位设计一个软件架构,期望不管业务如何变化,架构都稳如磐石

为了实现这样的目标,要么照搬业界大公司公开发表的方案;要么投入庞大的资源和时间来做各种各样的预测、分析、设计。无论哪种做法,后果都很明显:投入巨大,落地遥遥无期。更让人沮丧的是,就算跌跌撞撞拼死拼活终于落地,却发现很多预测和分析都是不靠谱的

架构的演化过程:

  • 首先,设计出来的架构要满足当时的业务需要
  • 其次,架构要不断地在实际应用过程中迭代,保留优秀的设计,修复有缺陷的设计,改正错误的设计,去掉无用的设计,使得架构逐渐完善
  • 第三,当业务发生变化时,架构要扩展、重构,甚至重写;代码也许会重写,但有价值的经验、教训、逻辑、设计等(类似生物体内的基因)却可以在新架构中延续

# 参考

  1. 《从 0 开始学架构》 08