一、“Architecture is like teenage sex,everybody talks about it,nobody really knows what is it.”
“Architecture is both the process and the product of planning,designing,and constructing buildings and other physical structures”
把一个整体切分成不同的部分,由不同角色来完成这些分工,并通过建立不同部分互相沟通的机制,是的这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。
架构产生的动力(原因),当系统规模达到一定程度:
1)必须有人执行的工作。(无需人工介入,也意味着不需要改造,也就不需要架构了)
2)每个人的能力有限。(分工细致,所能专注的事情有限,需要协同)
3)每个人的时间有限。(系统工程需要有限时间内完成)
4)人对目标系统有了更高的要求。(提升,是推动架构变革的源动力)
5)目标系统的复杂性使得需要多人完成。
架构就是:
1)根据要解决的问题,对目标系统的边界进行界定。(解决有限问题,而非无限延展的问题)
2)并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或者串行的开展工作,一般并行才能减少时间。并对这些切分出来的部分,设立沟通机制。
3)根据3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。
二、架构实际上解决的是人的问题,而概念是人认知这个世界的基础,自然改变的认识就非常的重要。
根据架构的定义,要做架构所首先必须具备的能力就是能够正确的认识概念,能够发现改变背后所代表的问题,今儿才能够认识目标领域所需要解决的问题,这样才能够为做好架构打好基础。
做好架构首先需要做的就是是识别出需要解决的问题。一般来说,如果把真正的问题找到,那么问题就已经解决80%了,这个能力基本上就能决定架构师的水平。
找到问题的主体,是做架构的首要问题,我们要解决的问题,一定都是人的问题。更进一步,架构师要解决的,基本都是别人的问题,不是自己的问题。我们一定要明白,任何找上架构师的问题,绝对都不是真正的问题。为什么呢?因为如果是真正问题的话,提问题过来的人肯定都能够自己解决了,不需要找架构师。架构师都要有这个自觉:发现问题永远都比解决问题来的更加重要。(解决方案,不是问题的主体;比如用户需要一把锤子,这是解决方案,不是问题主体,问题的主体是“用户需要锤子解决什么问题?”)
三、架构切分
切分的本质就是利益的调整;切分的几个原则:
1)必须在连续时间内发生的一个活动,不能切分。比如孕妇怀孕,必须要10月怀胎,不能切分成10个人一个月完成。
2)切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。如果权利和义务不对等的话,会伤害每个人个体的利益,分出来执行的效率会比没有分出来的还要低,实际上也损害了整体的利益,这违背了提升整体利益的初衷。(利益相关者)
3)切分出来的部分,不应该超出一个自然人的负载。
4)切分是内部活动,内部无论怎么切分,对整个系统的外部应该是透明的。如果因为切分导致整个系统解决的问题发生了变化,那么这个变化不属于架构的活动。
所有的架构分拆,都应该是形成树状的结果,不应该变成有向图,更不应该是无向图。很多人谈架构,必谈分层,但是基本上都没有意识到,是因为把一个整体分拆为一棵树,因为有了树,才有层。
实际上切分的过程就是建模的过程,每次对大问题的切分都会生成很多小问题,每个小问题就形成了不同的概念。
任何架构调整都会涉及到组织架构,千万不可轻视。同样,如果对于stakeholder的利益分拆不够透彻,也会导致架构无法落地,因为没有人愿意去损害自己的利益。一旦强制去执行,人心就开始溃散。这个也不一定是坏事,只要满足原则2)就能够很好的建立一个新的次序和新的利益关系,保持组织的良性发展,长久来看是对所有人的利益都是有益的,虽然短期内有对某些即得利益者会有损害。
四、架构师的前提条件:
如果一个人在工作中,只是致力于完成自己的工作,已做好自己的工作为主要目标,那么最多只能成为一个工匠,无法成为一名架构师。因为这个过程解决的还是自己的问题。当我们所做的工作处于社会分工的一环,需要帮助别人解决问题,并且按时解决别人的问题成为我们自己的问题的时候,我们就有了时间压力,潜意识里就会自然而然的有一种对时间的恐惧。这个恐惧在潜意识里会想方设法推动我们采用各种手段,以便及时的完成工作。
要成为架构师,必须要超越这个恐惧才能看清楚,我们要解决的是别人的问题,不是自己完成工作的问题。因为仅仅完成了自己工作的问题,也并不一定就解决了别人的问题。
“如果问题不解决,究竟谁会有利益损失?如果问题解决了,究竟谁会有收益,谁的收益最大?”回答了这两个问题,我们就能找到“问题”的主体。
架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用,更好的把利益的调整落到实处。所以很多公司设立了很多架构师职位,但是并不具备调动组织架构的权利,那么这个架构师的职位一定是形同虚设。架构师只能够通过建立某种流程来形式架构师的权利,比如强制架构review,反而会造成很多内部不必要的冲突,最终都会导致这些流程流于形式,得不偿失。相信很多人都已经经历过这些,但似乎很少有人回去探讨这是为什么。
所有架构的核心就是组织架构。或者也可以这么说,一个合格的组织领导人,一定必须是一个合格的架构师。
五、技术与架构、业务之间的关系
技术是为了解决业务的问题而产生的,没有业务,技术就没有了存在的前提。
1)在解决一个业务问题的前提下,更高效,更低成本的技术,会淘汰低效、高成本的技术。这事人类利益诉求所决定的。
2)一般刚开始解决根本问题的技术效率比较低的,只是把不可能变成了可能。然后就会有提高效率的需求出现,要求改进这个技术。
不同的技术,通过树状结构,组合在一起,形成一个完善的架构解决方案,共同完成业务的目标,这就是技术、业务和架构的关系。
相关推荐
架构漫谈(一):什么是架构? 架构漫谈(二):认识概念是理解架构的基础 架构漫谈(三):如何做好架构之识别问题 架构漫谈(四):如何做好架构之架构切分 架构漫谈(五):什么是软件 架构漫谈(六):软件架构...
架构师是软件行业中的一个特殊角色,他们通常需要具备一种“上帝视角”,从而能够更好地观察和表达这个世界。在软件行业中,架构师和工程师创造的软件产品服务于人类,满足人们的需求。架构师的工作不仅在于设计和...
### 架构漫谈知识点解析 #### 一、架构的本质与起源 **架构**这一概念在软件行业乃至更广泛的领域中扮演着至关重要的角色。它不仅仅是技术层面的设计,更是解决问题和促进协作的一种方法论。从《架构漫谈PDF》的...
在《系统架构漫谈》的演示文稿中,主要讨论了“全新系统架构—基于中台和容器”的设计理念与实践方法。这一架构旨在通过高度集成且松散耦合的方式提高系统的灵活性、可扩展性和性能表现。 #### 高内聚低耦合 - **...
### 架构模式与实践漫谈知识点 #### 架构原则 在探讨架构模式与实践时,文章首先介绍了多个重要的架构原则。这些原则是构建稳定、高效、可维护系统的基石。 - **抽象化(Abstraction)**: 关注于隐藏复杂的现实情况,...
企业IT技术架构是构建和管理复杂信息系统的核心框架,它涵盖了技术选择、系统设计、模块划分、数据处理和交互等多个方面。架构设计不仅是技术层面的工作,更是一种动态的、演进的思维模式,它需要在满足业务需求的...
《旅客行程智能推荐系统架构漫谈》为我们揭开了这一系统背后的复杂性和创新性。 首先,该系统的核心算法是迪杰斯特拉算法和协同过滤算法。迪杰斯特拉算法用于计算最短路径,它是一种经典的图论算法,被广泛应用于...
"FPGA研发之道(7)架构设计漫谈(二)稳定压倒一切"这一主题,强调了在设计过程中必须以稳定性为优先考虑因素,避免因忽视细节而导致的潜在问题。 在架构设计初期,首先要确定的是外接接口。接口的选择应基于几个关键...
总的来说,《支付宝全局技术架构的设计漫谈》为我们提供了一个全面的技术演进案例,让我们了解到了架构设计在业务发展中的重要性,同时也让我们看到了一个技术专家是如何逐步成长为能够引领公司技术发展全局架构师的...
《架构实践漫谈:中国传统文化与现代架构的融合》 架构,这个在IT行业中至关重要的概念,不仅仅关乎技术,更是企业战略、组织管理、产品设计等多个领域的交织。它是一种宏观的视角,一种对复杂系统进行有序组织的...
WAF(Web应用防火墙)的实现有多种方式,文章中提到的是服务器模块+检测云模式,基于该模式详细介绍了后端整体架构与相关技术方案,实施中遇到的问题以及WAF的优劣势分析。以下是详细知识点: 1. 安全体系概念:...
iOS架构设计是指在iOS应用开发过程中,对应用的组织结构、各个组件之间的关系以及整个应用的运行机制进行规划和设计。它涉及了应用设计模式的选择、网络设计以及特定架构模式的应用等关键环节。本文将详细介绍iOS...
IT架构咨询技巧漫谈.pptx
【漫谈“架构团队”之组织架构】 在IT行业中,架构团队扮演着至关重要的角色,它们不仅负责构建和维护技术框架,还与业务发展紧密相连。本文主要探讨架构团队的组织架构及其职责定位,以及如何在不同的组织模式下...
### 数据中心CLOS网络架构详解 #### 一、数据中心网络架构面临的挑战 随着技术进步和社会需求的增长,数据中心的规模正在迅速扩大。当前的数据中心已经能够容纳数万台甚至数十万台服务器,这种规模的增长不仅带来...
### 漫谈MySQL高可用架构 #### 一、引言 随着互联网技术的发展与企业规模的扩大,数据服务的连续性和稳定性变得至关重要。在众多数据库管理系统中,MySQL因其开源性、灵活性以及强大的社区支持而备受青睐。然而,...
最近看了一些有关server的东西,一些很简单的东西,不外乎是一些文档规范,另外结合最近看的wwdc的一些video,觉得对软件架构(softwarearchitecture)认识又清楚了一些,这里记录下来。softwarearchitecture听上去...
高并发高可用的可伸缩的架构设计的原则 空间换时间 数据与计算 多维度可用 伸缩 优化资源利用