写点什么

康威定律如何解释微服务的合理性

作者:源字节1号
  • 2022 年 7 月 09 日
  • 本文字数:1007 字

    阅读完需:约 3 分钟

康威定律如何解释微服务的合理性

微服务这个概念很早就提出了, 真正火起来是在 2016 年左右,而康威定律(Conway's Law)就是微服务理论基础。



1、康威定律如何在半个世纪前就奠定了微服务架构的理论基础

(1)人与人的沟通是非常复杂的,一个人的沟通精力是有限的,所以当问题太复杂需要很多人解决的时候,我们需要做拆分组织来打成对沟通效率的管理

(2)组织内人与人的沟通方式决定了他们参与的系统设计,管理者可以通过不同的拆分方式带来不同的团队间沟通方式,从而影响系统设计

(3)如果子系统是内聚的,和外部的沟通边界是明确的,能降低沟通成本,对应的设计也会更加高效。

(4)复杂得系统需要通过容错弹性的方式持续优化,不要指望一个大而全的设计或架构,好的架构和设计都是慢慢迭代出来的

2、具体的实践建议

(1) 我们要用一切手段提升沟通效率,比如 slack,github,wiki。能 2 个人讲清楚的事情,就不要拉更多人,每个人每个系统都有明确的分工,出了问题知道马上找谁,避免踢皮球的问题。

(2) 通过 MVP 的方式来设计系统,通过不断的迭代来验证优化,系统应该是弹性设计的。

(3) 你想要什么样的系统设计,就架构什么样的团队,能扁平化就扁平化。最好按业务来划分团队,这样能让团队自然的自治内聚,明确的业务边界会减少和外部的沟通成本,每个小团队都对自己的模块的整个生命周期负责,没有边界不清,没有无效的扯皮,inter-operate, not integrate。

(4) 做小而美的团队,人多会带来沟通的成本,让效率下降。亚马逊的 Bezos 有个逗趣的比喻,如果 2 个披萨不够一个团队吃的,那么这个团队就太大了。事实上一般一个互联网公司小产品的团队差不多就是 7,8 人左右(包含前后端测试交互用研等,可能身兼数职)。

3、 再对应下衡量微服务的标准,我们很容易会发现他们之间的密切关系

  • 分布式服务组成的系统

  • 按照业务而不是技术来划分组织

  • 做有声明的产品而不是项目

  • Smart endpoints and dumb pipes(我的理解是强服务个体和弱通信)

  • 自动化运维

  • 容错

  • 快速演化

总结

  • 定律一: 组织沟通方式会通过系统设计表达出来,就是说架构的布局和组织结构会有相似。

  • 定律二: 时间再多一件事情也不可能做的完美,但总有时间做完一件事情。一口气吃不成胖子,先搞定能搞定的。

  • 定律三: 线型系统和线型组织架构间有潜在的异质同态特性。种瓜得瓜,做独立自治的子系统减少沟通成本。

  • 定律四: 大的系统组织总是比小系统更倾向于分解。合久必分,分而治之。


如若转载,请注明出处:开源字节   https://sourcebyte.cn/article/182.html

用户头像

源字节1号

关注

一个着迷于技术又喜欢不断折腾的技术活跃者 2022.03.09 加入

一个着迷于技术又喜欢不断折腾的技术活跃者。喜欢并热爱编程,执着于努力之后所带来的美好生活!

评论

发布
暂无评论
康威定律如何解释微服务的合理性_程序员_源字节1号_InfoQ写作社区