康威定律

任何组织在设计一套系统时,所交付的设计方案在结构上都与该组织的沟通结构保持一致。

——梅尔.康威

如何理解这句话在软件工程上的含义?埃里克.S.雷蒙德说:如果你有四个小组开发一个编译器,那你会得到一个四步编译器。

组织和架构应该一致,团队应该共同拥有并运营其创建的系统,而且小团队会比大团队的工作更有效。Amazon提出“两个披萨团队”,即没有一个团队应该大到两个披萨不够吃,帮助小团队对服务的整个生命周期负责,这也是现如今Devops如此流行的一个原因。

组织结构对系统的性质和质量有着深刻的影响,如果构建系统的组织更加松耦合,其所构建的系统则倾向于更加模块化,因此耦合度也更低。我们推荐团队与限办上下文保持一致,同时确保每个服务都有拥有者,这样当这个服务几个月没有改时,再修改也会找到相应的团队。

我们倾向于把服务的所有权交给拥有服务的团队,只要更改不破坏服务的消费者,团队就可以随时重新组织代码,这样可以让团队更加负责,而不是反映系统移交到测试或部署阶段后,就认为他们的工作已经完成了。

另外,系统的设计有时也会反过来失去组织的发展,如以前互联网仅是一个附加在信息部门的小部门,而现如今,互联网可能带来整个公司组织架构的调整。我们称之为反向的康威定律。

内部开源

如果团队内最终免不了要共享几个服务时,该怎么办?内部开源可能是一个选项。

在标准的开源项目中,一小部分人被认为是核心提交者,他们是代码的守护者,核心提交者对代码库负责,他们是代码库的所有者。

好的守护者会花费大量的精力与提交者进行清晰的沟通,并对他们的工作方式进行引导。

在内部开源项目开始时,由于其可能处于快速的变化当中,这个时候最好不要允许除了核心提交者之外的人提交代码。待成熟之后,再来开放,让其他人贡献代码。

参考

《微服务设计》(Sam Newman 著 / 崔力强 张骏 译)

相关文章:

  • 微服务的概念——《微服务设计》读书笔记

  • 微服务架构师的职责——《微服务设计读书笔记》

  • 建模:确定服务的边界——《微服务设计》读书笔记

  • 微服务集成——《微服务设计》读书笔记

  • 服务的协作:服务间的消息传递——《微服务设计》读书笔记

  • 拆分:分解单块系统——《微服务设计》读书笔记

  • 部署:持续集成(CI)与持续交付(CD)——《微服务设计》读书笔记

  • 测试——《微服务设计》读书笔记

  • 监控——《微服务设计》读书笔记

  • 安全——《微服务设计》读书笔记

原文地址:http://www.cnblogs.com/gudi/p/6685038.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

康威定律和系统设计——《微服务设计》读书笔记相关推荐

  1. 微服务架构师的职责——《微服务设计读书笔记》

    如何定义架构师 架构师从英文单词Architect翻译而来,在英文中,Architect原来的意思是"建筑师".作者吐槽英文中架构师与传统的建筑师单词相同,但实际的工作性质并不相同 ...

  2. 微服务设计 读书笔记 一

    1.1 什么是微服务 微服务就是一些协同工作的小而自治的服务. 1.1.1 专注于做好一件事 随着新功能的增加,代码库会越变越大.时间久了代码库会非常庞大,以至于想要知道该在什么地方做修改都很困难.在 ...

  3. 中台架构与实现(基于DDD和微服务)-读书笔记1

    前绪 一.DDD(Domain Driven Design,领域驱动设计).微服务.中台 中台需要将通用的.可复用的业务能力沉淀到中台,实现企业级能力的复用.企业在进行中台建设时首先要从业务领域出发, ...

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

    微服务这个概念很早就提出了, 真正火起来是在2016年左右,而康威定律(Conway's Law)就是微服务理论基础. 1.康威定律如何在半个世纪前就奠定了微服务架构的理论基础. (1)人与人的沟通是 ...

  5. 规模化微服务——《微服务设计》读书笔记

    改变思维的角度:故障无处不在 当微服务规模化后,故障是无可避免的,以往我们总是想尽力避免故障的发生,而当故障实际发生时,我们往往束手无策.我们花了很多时间在流程设计和应用设计的层面上来阻止故障的发生, ...

  6. 安全——《微服务设计》读书笔记

    身份认证和授权       1.单点登录(SSO) 当主体试图访问一个资源,他会被定向到一个身份提供者那里进行身份验证,身份提供者验明正向后会发消息给服务提供者,让服务提供者来决定是否允许它访问资源. ...

  7. 监控——《微服务设计》读书笔记

    在单块应用的世界里,当我们遇到问题时,我们至少清楚从哪里开始调查.网站访问速度?网站访问异常?CPU占用过高?这些都是单块应用程序的问题,单一的故障点会极大地简化对问题的排查. 而现在我们面对了多个微 ...

  8. 测试——《微服务设计》读书笔记

    一.测试象限(Brain Marick) 二.测试金字塔(Mike Cohn)       1.单元测试 通常只测试一个函数或方法调用,通过TDD或者基于属性而写的测试就属于这一类,在UnitTest ...

  9. 部署:持续集成(CI)与持续交付(CD)——《微服务设计》读书笔记

    一.CI(Continuous Integration)简介  CI规则1:尽量频繁地把代码签入到分支中以进行集成 CI规则2:不光要对语法进行验,也要提供一系列的自动化来验证 CI规则3:CI失败后 ...

最新文章

  1. 基于空间数据库MongoDB实现全国电影票预定系统
  2. T-Sql 实现类似访问数组变量的操作
  3. Dapper源码学习和源码修改(下篇)
  4. 如何自定义MFC的窗口类名
  5. 特斯拉副总裁陶琳:Model Y 本月开始陆续交付
  6. 搭建人人开源后台管理平台
  7. 通过代码创建obj格式的三维模型
  8. PFC 3D 中存在的一个问题?
  9. c语言 误差函数erf代码,高斯(余补)误差函数erf和erfc
  10. 【实用】网页内容监控并实时推送百度解决方案
  11. 高通平台修改msm8916_defconfig
  12. mtp android7,Android7.0修改手机型号,mtp名称等
  13. 计算机的iscsi配置,电脑Win10系统的iscsi target(共享存储)如何进行连接
  14. 截取某个字符串之前的字符
  15. js 点击按钮打开浏览器新页签,兼容版
  16. php 制作骰子游戏,C/C++实现投骰子游戏
  17. Storm学习(一)Storm介绍
  18. Rpgmakermv(16) YEP MainmenuManager
  19. ROP Emporium做题记录Challenge1-5(x86)
  20. ArcObjects

热门文章

  1. C++基础知识总结(一)
  2. ext 浅谈类的实例
  3. Java基础---变量(三)
  4. Blazor University (4)组件 — 单向绑定
  5. .NET6之MiniAPI(十二):引入EntityFramewor
  6. Winform模拟post请求和get请求登录网站
  7. Windows 11 预览版 Build 22000.120 发布
  8. 一年增加1.2w星,Dapr能否引领云原生中间件的未来?
  9. EFCore查缺补漏(二):查询
  10. 小心 Enum Parse 中的坑