2025/2/19(阅读架构漫谈)
在软件行业蓬勃发展的当下,架构这一概念始终充满着神秘色彩与诸多争议。每个人对其都有独特的见解,架构师们谈及架构时,应用架构、硬件架构、数据架构等各种分类层出不穷,让人仿佛置身于一个充满迷雾的森林,难以看清架构的本质。然而,通过对架构源头的追溯以及深入剖析,我们得以逐渐拨开迷雾,一窥架构的真容。
架构一词最早源于建筑领域,其英文 “Architecture” 从词源上看,是规划、设计和建造建筑物及其他物理结构的过程与产物。这一定义虽提及了过程,但并未清晰揭示架构的核心内涵。要真正理解架构,还需从其产生的根源入手。
当我们追溯到 “架构” 这个词的源头,从建筑领域最初的含义出发,或许就能拨开迷雾,找到一些关键线索。文章从架构一词的起源讲起,引用了 Wikipedia 上关于建筑架构的定义,指出架构既像是一个过程,又涉及到最终的产品,但这样的表述依旧不够清晰直白。于是,作者进一步深入探讨架构产生的根源,通过构建一个从人类早期独立生活到逐渐分工合作形成社会架构的生动场景,让我们得以清晰地看到架构诞生背后的逻辑与动力。
想象远古时期,人类个体独立完成所有生存活动,随着群居生活出现,分工开始萌芽。人们为了提高生产力和增强抵抗环境的能力,逐渐形成了不同的分工角色,通过交易等机制协同合作,这便是社会架构的雏形。同理,软件架构的产生也是基于类似的动力:必须由人执行的工作、每个人能力与时间的有限性、对目标系统的更高要求以及系统复杂性导致单个人难以完成等。当这些条件同时具备,架构便应运而生,它是人类主动改造世界、提高效率的智慧结晶。
以建筑为例,从最初的山洞、树上栖居,到用树木和树叶搭建隔离空间,再到后来内部空间的切分与功能划分,建筑架构不断发展演变。这一过程充分体现了架构的本质:根据要解决的问题,界定目标系统边界,按一定原则切分系统,设立沟通机制,使各部分有机联系并组装成整体完成系统工作。软件架构亦是如此,它解决的是软件系统中的问题,通过合理的切分与整合,满足用户需求,提升软件质量和开发效率。
架构的产生与发展紧密围绕着概念的认识。概念是人类认识世界的基础,而架构实际上解决的是人的问题,因此对概念的正确理解至关重要。例如 “杯子”“桌子” 等概念,它们并非简单地指代某个具体物体,而是代表了解决特定问题的方案。杯子解决的是 “人需要一个可单手持握,但避免直接接触所盛物体” 的问题,桌子则是为了解决 “人坐在椅子上,手能支撑在平面上继续活动” 的问题。只有深刻理解这些概念背后所代表的问题,架构师才能更好地认识目标领域所需解决的问题,为架构设计奠定坚实基础。
在架构的切分过程中,利益的调整是核心。所有的切分决策都不能违背维护每个人利益这一本性。当确定问题主体后,系统利益相关人也随之确定,问题可能表现为某些利益相关人负载过重或权利义务不对等。切分的原则包括:不能切分连续时间内必须发生的活动;切分出来的部分负责人权利与义务必须对等;切分出来的部分不应超出自然人负载;切分是内部活动,对外部应透明。这些原则确保架构切分合理有效,提升整体利益。
切分的过程实际上也是建模的过程,每次对大问题的切分都会生成多个小问题,形成不同概念。架构师需要理解这些概念及其背后代表的人的利益。以企业架构为例,随着业务量增大,企业事务被分解为营销、售前、售中、售后、财务、HR 等多个部分,企业创始人需合理组合这些概念完成企业工作。技术提升可提高节点能力,降低树层数,实现架构优化。架构切分的输出最终体现在组织架构上,任何架构调整都会涉及组织架构,必须重视对 stakeholder 利益的分析,以确保架构落地并推进。
总之,架构的切分源于人的负载过重,通过对 stakeholder 利益的合理切分与合并,使每个 stakeholder 权责对等,最终在组织架构上体现出来。架构切分的结果呈现为树状结构,分层应尽可能少,以平衡树形态实现系统效率最大化。架构不仅是软件开发中的关键技术环节,更是人类智慧在现代社会中的重要体现,它帮助我们更好地组织和管理复杂的系统,推动各行业不断向前发展。