架构之美

架构的完美性

《团队之美》这本书里面有对 Mike Cohn 的一段采访,他提到:
“一个应用中所有的代码不一定要处于同样的质量水平”。
“不是每件事都要做到第一流,在大多数情况下,我们根本没机会做到第一流”。
架构之美_第1张图片
软件架构设计其实更加类似于大自然“设计”一个生物,通过演化让生物适应环境,逐步变得更加强大。

就如下图的技术发展趋势图一样,世界上其实不存在完美的架构。多数情况下,架构是一种妥协,一种特定时期和场景下平衡的产物

架构的抽象性

如果一个技术已经存在3年,比如现在很火的前端技术React和Vue等,那么预估这个技术大致还有3年的生命期,再久就不确定了;

如果一个架构或设计原则已经存在15年,例如面向对象设计的SOLID原则,可以预期它还有15年甚至更久的生命期。原则是比具体技术

更抽象,更接近事物本质,也更经得起时间考验的东西。这些原则沉淀在架构师的脑海中,最终内化成他的mindset,以潜意识方式影响和指导他的架构和设计工作。

今天和大家介绍实战派的开发架构大师Robert C.Martin以及他的力作

  1. 敏捷软件开发:原则模式与实践 –- 第13届软件开发震撼大奖获奖作品;在这本书,Robert 大叔提出了开创先河的面向对象设计的SOLID 五大原则。
    架构之美_第2张图片
  2. 代码整洁之道 –- 细节之中自有天地,整洁成就卓越代码。在这本书,Robert 提出一种观念:代码质量与其整洁度成正比。
    干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。
    架构之美_第3张图片
  3. 架构整洁之道 –- 人的意愿是无穷的,而实际行动却处处受限。人的欲望是无止境的,行为却不得不遵从现实的限制。by 威廉·莎士比亚。
    在这本书,Robert 提出一种观念:所谓的架构,就是用最小的人力成本来满足构建和维护系统需求
    架构之美_第4张图片

架构的著名定律

计算机虽然历史不长,但是在高速发展的历程中,产生了很多著名定律。除了大家耳熟能详的摩尔定律外,今天我们再聊聊和架构相关的两个著名定律。

分别是并发编程的阿姆达尔定律和微服务的康威定律

  1. 阿姆达尔定律(Amdahl’s Law)
    阿姆达尔定律的模型阐释了我们现实生产中串行资源争用时候的现象。如下图模型,一个系统中,不可避免有一些资源必须串行访问,这限制了我们的加速比,即使我们增加了并发数(横轴),但取得效果并不理想,难以获得线性扩展能力(图中直线)。
    架构之美_第5张图片
    这个定律的最佳工程实践,大家可以参看 《并发编程实战》的 第11章 性能与可伸缩性
    架构之美_第6张图片
  2. 微服务的康威定律(Conway‘s Low)
    康威定律的核心就如下一句话:
    Organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations. - Melvin Conway(1967)
    设计系统的组织,其产生的架构设计等价于组织间的沟通结构。
    组织的沟通和系统设计之间的紧密联系,在很多别的领域有类似的阐述。对于复杂的系统,聊设计就离不开聊人与人的沟通,解决好人与人的沟通问题,才能有一个好的系统设计。
    相信几乎每个程序员都读过的《人月神话》,里面许多观点都和这句话有异曲同工之妙。
    架构之美_第7张图片

你可能感兴趣的:(架构)