首页 > 其他分享 >王概凯架构漫谈阅读笔记

王概凯架构漫谈阅读笔记

时间:2024-06-11 14:54:28浏览次数:21  
标签:漫谈 架构 概凯 问题 切分 这个 架构师 真正

架构漫谈是由资深架构师王概凯 Kevin 执笔的系列专栏,专栏将会以 Kevin 的架构经验为基础,逐步讨论什么是架构、怎样做好架构、软件架构如何落地、如何写好程序等问题。

什么是架构?
根据要解决的问题,对目标系统的边界进行界定。
并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
并对这些切分出来的部分,设立沟通机制。
根据 3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。
为什么会产生架构?
必须由人执行的工作(不需要人介入,就意味着不需要改造,也就不需要架构了)
每个人的能力有限(每个人都有自己的强项,个人的产出受限于最短板,并且由于人的结构限制,同时只能专注于做好一件事情,比如虽然有两只眼睛,但是只能同时专注于一件事物,有两只手,无法同时做不同的事情。ps. 虽然有少部分人可以左手画圆右手画框,但是不是普遍现象)
每个人的时间有限(为了减少时间的投入,必然会导致把工作分解出去,给擅长于这些工作的角色来完成,见 2,从而缩短时间)
人对目标系统有更高的要求(如果满足于现状,也就不需要进行架构了)
目标系统的复杂性使得单个人完成这个系统,满足条件 2,3(如果个人就可以完成系统的提高,也不需要别的人参与,也就不需要架构的涉及,只是工匠,并且一般这个工作对时间的要求也不迫切。当足够熟练之后,也会有一定的架构思考,但考虑更多的是如何提高质量,提高个人的时间效率)
当这 5 个条件同时成立,一定会产生架构。从这个层面上来说,架构是人类发展过程中,由懵懵懂懂的,被动的去认识这个世界,变成主动的去认识,并以更高的效率去改造这个世界的方法。以下我们再拿建筑来举例加强一下理解。

如何做好架构之识别问题
我们先看一则笑话。女主人公:老公,把袋子里的土豆切一半下锅。结果老公是把袋子里的每个土豆都削了一半,然后下锅。

当然很多人会说,这个是沟通问题,然后一笑了之。其实,出现这个现象是由于我们大部分时候过于关注解决问题,急于完成自己的工作,而不关心“真正的问题是什么”而造成的。当我们去解决一个问题的时候,一定要先把问题搞清楚。这也是我为什么要单独写一篇文章讲这个的原因。去看看软件开发工作者的时间分配也可以看出,大家大部分时间花在讨论解决方案和实现的细节上,基本都不会花时间去想“问题是什么”。或者即使想了一点点,也是一闪而过,凭自己的直觉下判断。只有真正投入思考问题是什么的工程师,才可能会真正的成长为架构师

以这个笑话为例,看看在我们处理问题的时候,都会犯什么样的错误:

被告知要处理一个问题,但是交过来的实际上是一个解决方案,不是问题本身
被告知要处理一个问题,直接通过直觉就有了一个解决方案,马上考虑解决方案如何落地,或者有几种解决方案,选哪个合适
那么如何识别问题呢?
所有的概念基本都有一个很大的问题,就是缺乏主语。而我们大家都心照不宣的忽略这个主语,沟通的时候也都以为大家都懂得对方说的主语是谁,结果大家都一起犯错误。识别问题的一个最大的前提就是要搞清楚:是谁的问题。这个搞清楚了,问题的边界也就跟着确定了,再去讨论问题才有意义。

架构师应该问的第一个正确的问题就是:目标问题是谁的问题。

当我们处理问题的时候,如果发现自己正在致力于把自己的工作完成,要马上警惕起来,因为这样下去会演变成没有 ownership 的工作态度。在面对概念的时候,也会不求甚解,最终会导致没有真正的理解概念。

作为软件工程师或者架构师,我们大部分时候是要去解决别人的问题,“别人”是谁,是值得好好思考的。在这个故事里面,男主人要解决的,实际上是这个家庭晚餐需要吃土豆的问题,目标问题的主体实际上是这个家庭的成员。

明白了问题的主体,这个主体就自然会带来很多边界约束,比如土豆是要吃的,要给人吃的,而且还是要给自己的家人吃的。“切土豆下锅”这个问题,因为识别了问题的主体,自然而然的就附带了这么多的信息。后续如何煮,是否放高压锅煮,放多少水,煮多长时间等等,就自然而然能够问出来其他问题来了,说不定还能够识别出来,女主人给的这个解决方案可能是有问题的。这个时候才算是真正的明白了问题。可以想象,这样下去最后的结果一定是大家都满意的,因为真正的问题解决了。只有真正明白了是谁的问题,才能够真正地完成自己的任务,真正地把自己的问题解决掉,而不是反过来。

由上面的分析可以看出,找出问题的主体,是做架构的首要问题。这也是我一再强调的,我们要解决的问题,一定都是人的问题。更进一步,架构师要解决的,基本都是别人的问题,不是自己的问题。再进一步,我们一定要明白,任何找上架构师的问题,绝对都不是真正的问题。为什么呢? 因为如果是真正的问题的话,提问题过来的人肯定都能够自己解决了,不需要找架构师。架构师都要有这个自觉:发现问题永远都比解决问题来的更加重要。

如何做好架构之架构切分
架构的切分的导火索是人的负载太重。
架构的切分实际就是对 stakeholder 的利益进行切分或合并,使得每个 stakeholder 的权责是对等的,每个 stakeholder 可以为自己的利益负责。
架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。
架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。

标签:漫谈,架构,概凯,问题,切分,这个,架构师,真正
From: https://www.cnblogs.com/Lyh3012648079/p/18242031

相关文章

  • Redis在微服务架构中的角色:服务间通信与数据共享
    I.引言A.介绍微服务架构的概念和特点 微服务架构是一种设计模式,它将一个大型的单体应用分解成一组小的服务,每个服务都运行在其自身的进程中,独立地进行部署和扩展。这些服务之间通过轻量级的通信机制(如HTTPRESTfulAPI)进行交互,每个服务都围绕一个特定的业务功能进行组......
  • 架构与思维:了解Http 和 Https的区别(图文详解)
    1介绍随着HTTPS的不断普及和使用成本的下降,现阶段大部分的系统都已经开始用上HTTPS协议。HTTPS与HTTP相比,主打的就是安全概念,相关的知识如SSL、非对称加密、CA证书、数据完整性保护等,我们多多少少也都有听过。本文重点从原理上讲解HTTPS的安全性,以及同HTTP的比......
  • 架构设计-全局异常处理器404、405的问题
    javaweb项目中经常会遇到异常处理的问题,普遍的做法是使用全局异常处理,这样做有以下几种原因:集中化处理:全局异常处理允许你在一个集中的地方处理整个应用程序中的异常。这有助于减少代码重复,因为你不必在每个可能抛出异常的方法中都编写相同的异常处理代码。统一错误响应:通过......
  • 共享磁盘架构
    什么是共享磁盘架构?共享磁盘架构是一种数据存储和处理方法,允许多台计算机访问共享存储系统。在此架构中,所有节点或服务器都可以直接访问同一磁盘或存储设备,从而使它们能够同时读取和写入数据。这种方法无需数据复制,并允许在网络中的不同节点之间实现无缝数据共享和协作。共享磁......
  • Kafka源码分析(十八)——Broker:日志子系统——整体架构
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • 架构设计-web项目中跨域问题涉及到的后端和前端配置
    WEB软件项目中经常会遇到跨域问题,解决方案早已是业内的共识,简要记录主流的处理方式:跨域感知session需要解决两个问题:1.跨域问题2.跨域cookie传输问题跨域问题解决跨域问题有很多种方式,如使用springboot自带的crossOrigin注解@CrossOrigin(origins={"*"},allowedHe......
  • 软考 系统架构设计师系列知识点之杂项集萃(32)
    接前一篇文章:软考系统架构设计师系列知识点之杂项集萃(31)第51题网络逻辑结构设计的内容不包括()。A.逻辑网络设计图B.IP地址方案C.具体的软硬件、广域网连接和基本服务D.用户培训计划正确答案:D。所属知识点:旧版教材计算机网络->网络规划与设计解析:逻辑网络设计......
  • 软考 系统架构设计师系列知识点之杂项集萃(33)
    接前一篇文章:软考系统架构设计师系列知识点之杂项集萃(32)第53题企业信息集成按照组织范围分为企业内部的信息集成和企业外部的信息集成。在企业内部的信息集成中,()实现了不同系统之间的互操作,使得不同系统之间能够实现数据和方法的共享;()实现了不同应用系统之间的连接、协调运......
  • 电子电气架构 ---车载安全防火墙
    我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。无......
  • 电子电器架构 --- 智能座舱技术分类
    电子电器架构—智能座舱技术分类我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试......