书籍《微服务设计》,地址:微服务设计 (豆瓣)
康威定律:任何组织在设计一套系统时,所交付的设计方案在结构上都与该组织的沟通结构保持一致。
1、松耦合组织和紧耦合组织:紧耦合组织的一个例子是商业产品公司,松耦合组织典型代表是分布式开源社区。组织的耦合度越低,其创建的系统的模块化就越好,耦合也越低。
2、Netfflix和Amazon:组织和架构应该一致,两个典范是Netfflix和Amazon。组织结构对系统的性质和质量确实有着深刻的影响。
3、服务所有权:拥有服务的团队负责对该服务进行更改。把决定权交给最合适的人,赋予团队更多的权力和自治。
4、共享服务的原因:共享服务方式效果不佳,但是采用了共享服务一般有这些原因。 服务难以分割、特性团队、交付瓶颈。
5、内部开源:内部开源模式可以更合理的避免共享服务。标准的开源项目,一部分人是核心提交者,核心提交者对代码库负责。
守护者的角色:核心团队需要对更改有审批。守护者会和提交者进行清晰的沟通,并对他们的工作方式进行引导。
成熟:服务不稳定不成熟,就很难让核心团队之外的人提交更改。
工具:为了更好的支持内部开源模型,需要一些支持pull请求的分布式版本控制工具。
6、界限上下文和团队结构:界限上下文定义服务的边界,团队也可以与界限上下文保持一致。
7、反向的康威定律:系统设计有可能会影响组织结构。
8、人:不管一开始看起来什么样,它永远是人的问题。---杰拉尔德温伯格,咨询第二定律。如果没有把人们拉到一条船上,你想要的任何变化从一开始就注定会失败。
9、小结:康威定律强调了试图让系统设计跟组织结构不匹配所导致的危险。这引导我们试图将服务所有权与同地团队相匹配,而两者本身与组织界限上下文是匹配的。