康威定律对气象软件开发有多大作用?
Posted 编外气象人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了康威定律对气象软件开发有多大作用?相关的知识,希望对你有一定的参考价值。
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(大的系统组织总是比小系统更倾向于分解)
由此可见,康威定律是一种方法论,它提供给我们解决复杂问题的思路。我们的气象业务在发展,变得越来越复杂,我们的人员规模也在增大,我们的气象软件系统建设也越来越复杂。因此我认为康威定律带给我们的并没有直接作用,而是指导我们处理复杂问题的思考方式。从某种程度来讲,我们气象软件系统开发的不够成功,和我们的组织结构有很大关系,比如边界不清、职责不明问题,重复的机构设置和组织臃肿,也会反应在软件系统中。更深层次的应用,还需要在实践中打磨!
以上是关于康威定律对气象软件开发有多大作用?的主要内容,如果未能解决你的问题,请参考以下文章