前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >康威定律对气象软件开发有多大作用?

康威定律对气象软件开发有多大作用?

作者头像
用户1247399
发布2020-08-05 14:46:07
5750
发布2020-08-05 14:46:07
举报
文章被收录于专栏:编外气象人
IT行业有个大名鼎鼎的Conway’s Law(康威定律),在气象软件开发中这个康威定律究竟发挥多大作用呢?气象行业虽然和IT行业有很大不同,但气象的现代化离不开IT,也离不开越来越智能的数字化技术。今天想跟大家聊聊关于康威定律的话题。

Any organization that designs a system will produce a design whose structure is a copy of the organization’s communication structure.—Conway’s Law。通俗理解就是“产品的结构会拷贝组织的结构”。所谓康威定律,来自于Melvin Conway在1968年写的一篇论文《How Do Committees Invent?》,其大意是设计系统的组织,其产生的设计等同于组织之内、组织之间的沟通结构。更加直白一点的说,一个团队设计出来的系统,和这个团队的组织结构,交流方式有很大的关系,如果一个团队是松耦合的,那么开发出来的产品也将是松耦合的。反之亦然。虽然学过几年计算机科学,但关注康威定律这种理论还要从去年红极一时的“微服务”说起。

在去年要说最火的就属“中台”了,而“微服务”技术随着中台的落地实践而喧嚣尘上,似乎大型的企业级软件系统开发都在向“微服务”架构转变。我所参与的软件系统建设也明确要采用“微服务”的技术架构。面对“高内聚、低耦合”的模块化开发架构,大家都充满信心,然而真正实施的时候才发现,陷入了一个又一个深坑中而举步维艰。关于“中台”和“微服务”的讨论我都分享过我的经验,有兴趣的读者可以回顾一下。《中台战略与气象业务系统建设之经验分享》、《微服务架构在气象业务系统建设之经验分享》。在面对“微服务”技术架构的具体实施上,首先遇到一个难题就是“如何拆分微服务模块”。理想状态下,科学合理的微服务模块拆分会让业务系统更容易扩展、更加快速响应需求的变化,可实际情况却和理想状态大相径庭,我们不知道微服务模块要拆分到什么粒度,微服务模块之间如何才能更高效的实现通信与调度。为了寻找比较好的解决方案,我才关注到康威定律和DDD设计方法,也尝试着将这些理论在气象业务系统建设中去实施和落地,通过不断的总结和实践,我提出了MODD(Meteorological Operations Driven Model)概念,既“气象业务驱动模型”的设计方法。具体业务实践后续讨论,今天重点说的是康威定律。在微服务拆分上,康威定律给了我一些启示,但它对我们气象软件的开发作用有几何?

首先,要考虑到康威定律的时候,那么你所面对的气象业务软件就具备了一定量级的复杂度,因为只有业务和团队发展到一定规模时,作为这个业务和团队的支撑软件系统才需要演化为微服务架构,简单的业务和少数人的团队规模单体架构完全可以满足。我比较赞同好的架构不是设计出来的,而是从业务中演化而来的。康威定律严格来说并不是一个技术规律,而是组织和管理理论,它反映的是你处理和解决问题的一种思维方式。面对复杂问题时,我们无从下手或者急需要找到解决办法,就需要寻根溯源,看看是什么引起问题变得如此复杂。进行气象软件系统开发时,我时常把软件的设计当做一个产品。想想我们用过的一些产品,你是如何理解康威定律的?

Mike Amundsen (Design RESTful API的作者),在《远距离条件下的康威定律——分布式世界中实现团队构建》的一次技术分享中,从他的角度归纳这篇论文(《How Do Committees Invent?》)中的其他一些核心观点

1、Communication dictates design(组织沟通方式会通过系统设计表达出来)

2、There is never enough time to do something right, but there is always enough time to do it over(时间再多一件事情也不可能做的完美,但总有时间做完一件事情)

3、There is a homomorphism from the linear graph of a system to the linear graph of its design organization(线性系统和线性组织架构间有潜在的异质同态特性)

4、The structures of large systems tend to disintegrate during development, qualitatively more so than with small systems(大的系统组织总是比小系统更倾向于分解)

由此可见,康威定律是一种方法论,它提供给我们解决复杂问题的思路。我们的气象业务在发展,变得越来越复杂,我们的人员规模也在增大,我们的气象软件系统建设也越来越复杂。因此我认为康威定律带给我们的并没有直接作用,而是指导我们处理复杂问题的思考方式。从某种程度来讲,我们气象软件系统开发的不够成功,和我们的组织结构有很大关系,比如边界不清、职责不明问题,重复的机构设置和组织臃肿,也会反应在软件系统中。更深层次的应用,还需要在实践中打磨!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编外气象人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Serverless HTTP 服务
Serverless HTTP 服务基于腾讯云 API 网关 和 Web Cloud Function(以下简称“Web Function”)建站云函数(云函数的一种类型)的产品能力,可以支持各种类型的 HTTP 服务开发,实现了 Serverless 与 Web 服务最优雅的结合。用户可以快速构建 Web 原生框架,把本地的 Express、Koa、Nextjs、Nuxtjs 等框架项目快速迁移到云端,同时也支持 Wordpress、Discuz Q 等现有应用模版一键快速创建。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档