<h2 style="margin-left:0pt;"> </h2>
<h2 style="margin-left:0pt;"><strong><a href="http://zhanglaospace.com/articles/2020/05/14/1589422883930.html"><span style="color:#313131;">康威定律——微服务的理论基础</span></a></strong></h2>
<p style="margin-left:0pt;"> </p>
<p style="margin-left:0pt;"><a href="http://zhanglaospace.com/tags/%E5%BE%AE%E6%9C%8D%E5%8A%A1"><strong><span style="color:#ffffff;"><strong>微服务</strong></span></strong></a> <a href="http://zhanglaospace.com/tags/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84"><strong><span style="color:#ffffff;"><strong># 系统架构</strong></span></strong></a></p>
<p style="margin-left:0pt;"> </p>
<p style="margin-left:0pt;"><strong><span style="color:#24292e;"><strong>前言</strong></span></strong><br><span style="color:#24292e;">微服务现在大行其道,大家都在追,也都觉得很对,很多公司就算是用户量不大也都要上微服务,赶一波潮流但是似乎没有很充足的理论基础说明这是正确的,给人的感觉是 不明觉厉 。前段时间看了 Mike Amundsen 《远距离条件下的康威定律——分布式世界中实现团队构建》(是 Design RESTful API 的作者)一个分享,觉得很有帮助,结合自己的一些思考,整理了该演讲的内容。可能出乎很多人意料之外的一个事实是,微服务很多核心理念其实在半个世纪前的一篇文章中就被阐述过了,而且这篇文章中的很多论点在软件开发飞速发展的这半个世纪中竟然一再被验证,这就是康威定律(Conway's Law)。</span><br><br><span style="color:#24292e;">在康威的这篇文章中,最有名的一句话就是:</span></p>
<p style="margin-left:0pt;"><strong><span style="color:#24292e;"><strong>Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations. - Melvin Conway(1967)</strong></span></strong></p>
<p style="margin-left:0pt;"><span style="color:#24292e;">中文直译大概的意思就是:</span></p>
<p style="margin-left:0pt;"><strong><span style="color:#24292e;"><strong>设计系统的组织,其产生的设计等同于组织之内、组织之间的沟通结构。</strong></span></strong><br><span style="color:#24292e;">看看下面的图片,再想想 Apple 的产品、微软的产品设计,就能形象生动的理解这句话。</span></p>
<p style="margin-left:0pt;"><span style="color:#24292e;">用通俗的说法就是:</span></p>
<p style="margin-left:0pt;"><strong><span style="color:#24292e;"><strong>组织形式等同系统设计。</strong></span></strong></p>
<p style="margin-left:0pt;"><span style="color:#24292e;">这里的系统按原作者的意思并不局限于软件系统。据说这篇文章最初投的哈佛商业评论,结果程序员屌丝的文章不入商业人士的法眼,无情被拒,康威就投到了一个编程相关的杂志,所以被误解为是针对软件开发的。最初这篇文章显然不敢自称定律(law),只是描述了作者自己的发现和总结。后来,在 Brooks Law 著名的人月神话中,引用这个论点,并将其“吹捧”成了现在我们熟知“康威定律”。</span></p>
<p style="margin-left:0pt;"><strong><span style="color:#24292e;"><strong>康威定律详细</strong></span></strong><br><span style="color:#24292e;">Mike 从他的角度归纳这篇论文中的其他一些核心观点,如下:</span></p>
<p style="margin-left:0pt;"><span style="color:#24292e;">第一定律</span></p>
<ul><li><span style="color:#24292e;">Communication dictates design- 组织沟通方式会通过系统设计表达出来</span></li></ul>
<p style="margin-left:0pt;"><span style="color:#24292e;">第二定律</span></p>
<ul><li><span style="color:#24292e;">There is never enough time to do something right, but there is always enough time to do it over- 时间再多一件事情也不可能做的完美,但总有时间做完一件事情</span></li></ul>
<p style="margin-left:0pt;"><span style="color:#24292e;">第三定律</span></p>
<ul><li><span style="color:#24292e;">There is a homomorphism from the linear graph of a system to the linear graph of its design organization- 线型系统和线型组织架构间有潜在的异质同态特性</span></li></ul>
<p style="margin-left:0pt;"><span style="color:#24292e;">第四定律</span></p>
<ul><li><span style="color:#24292e;">The structures of large systems tend to disintegrate during development, qualitatively more so than with small systems- 大的系统组织总是比小系统更倾向于分解</span></li></ul>
<p style="margin-left:0pt;"><strong><span style="color:#24292e;"><strong>第一定律</strong></span></strong></p>
<p style="margin-left:0pt;"><span style="color:#24292e;">人是复杂社会动物</span></p>
<p style="margin-left:0pt;"><span style="color:#24292e;">组织的沟通和系统设计之间的紧密联系,在很多别的领域有类似的阐述。对于复杂的系统,聊设计就离不开聊人与人的沟通,解决好人与人的沟通问题,才能有一个好的系统设计。相 |
|