一、“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)架构设计漫谈(二)稳定压倒一切"这一主题,强调了在设计过程中必须以稳定性为优先考虑因素,避免因忽视细节而导致的潜在问题。 在架构设计初期,首先要确定的是外接接口。接口的选择应基于几个关键...
《支付宝全局技术架构的设计漫谈》是一篇关于支付宝技术架构发展历程和重要性的文档。文档讲述了支付宝从最初的简单架构演变为支持12亿用户的复杂体系的过程,以及全局架构师的角色和重要任务。 支付宝的全局架构...
《架构实践漫谈:中国传统文化与现代架构的融合》 架构,这个在IT行业中至关重要的概念,不仅仅关乎技术,更是企业战略、组织管理、产品设计等多个领域的交织。它是一种宏观的视角,一种对复杂系统进行有序组织的...
WAF(Web应用防火墙)的实现有多种方式,文章中提到的是服务器模块+检测云模式,基于该模式详细介绍了后端整体架构与相关技术方案,实施中遇到的问题以及WAF的优劣势分析。以下是详细知识点: 1. 安全体系概念:...
iOS架构设计是指在iOS应用开发过程中,对应用的组织结构、各个组件之间的关系以及整个应用的运行机制进行规划和设计。它涉及了应用设计模式的选择、网络设计以及特定架构模式的应用等关键环节。本文将详细介绍iOS...
IT架构咨询技巧漫谈.pptx
【漫谈“架构团队”之组织架构】 在IT行业中,架构团队扮演着至关重要的角色,它们不仅负责构建和维护技术框架,还与业务发展紧密相连。本文主要探讨架构团队的组织架构及其职责定位,以及如何在不同的组织模式下...
### 数据中心CLOS网络架构详解 #### 一、数据中心网络架构面临的挑战 随着技术进步和社会需求的增长,数据中心的规模正在迅速扩大。当前的数据中心已经能够容纳数万台甚至数十万台服务器,这种规模的增长不仅带来...
### 漫谈MySQL高可用架构 #### 一、引言 随着互联网技术的发展与企业规模的扩大,数据服务的连续性和稳定性变得至关重要。在众多数据库管理系统中,MySQL因其开源性、灵活性以及强大的社区支持而备受青睐。然而,...
最近看了一些有关server的东西,一些很简单的东西,不外乎是一些文档规范,另外结合最近看的wwdc的一些video,觉得对软件架构(softwarearchitecture)认识又清楚了一些,这里记录下来。softwarearchitecture听上去...
高并发高可用的可伸缩的架构设计的原则 空间换时间 数据与计算 多维度可用 伸缩 优化资源利用