本篇文章3097字,读完约8分钟

编者按:作者王庆友,原一号店总建筑师,曾在易趣、腾讯一号店工作,寻找钢网。他精通电子商务业务,擅长复杂系统业务建模和架构分析。目前,他正在寻找钢铁网作为中国b2b第一电子商务公司的总设计师。微信布鲁斯特,欢迎大家一起谈论建筑。这篇文章是由36氪授权从微信公众账号“聊天架构”(账号:archtime)转载的。

目前,有很多文章讨论建筑的实际操作,但很少讨论建筑的概念。摘要:本文结合作者对大型电子商务系统架构的实践和思考,谈谈架构的概念,希望能引起更多的关注,促进大家对架构的理解。

什么是道,什么是艺术?道是事物发展的本质规律,艺术是事物发展的具体方式。只有一个定律,有很多方法。所有的路都通向罗马,罗马就是路,路就是艺术。路为本,艺术为本,如果你事先知道罗马在哪里,那么到处都有路,路和路是相通的。建筑也是如此。如果我们能理解建筑的本质,我们就不会拘泥于现有的实践和理论框架,而是以最直接的方式解决问题。本文的内容包括建筑的本质、建筑的服务对象、建筑师的能力模型、建筑领域等。

在首席架构师眼里 架构的本质是……

建筑的本质

在自然条件下,任何系统都是从有序到无序的,这是有科学依据的。根据热力学第二定律,自然界中所有的自发过程都有方向性,一个孤立的系统会从有序变为无序,也就是说,它的熵会不断增加,最终消失。然而,生物体可以与外界相互作用,积极代谢并产生“负熵”,以确保自己的秩序和继续生存。

同样,随着软件系统的功能越来越多,调用量也迅速增加,整个系统变得支离破碎、杂乱无章,最终无法维护和扩展。因此,在经历了一段时期的野蛮增长后,该系统需要及时干预以避免混乱。

架构的本质是有序地重构系统,降低系统的熵,使系统不断进化。

建筑如何实现无序到有序?最基本的方法是分割和合并,首先分解系统,然后重组。

拆分的过程是将系统拆分成子系统/模块/组件。拆分时,首先要解决每个组件的定位问题,然后才能划分彼此的边界,实现合理的拆分。组合是根据最终的要求将分离的组件有机地集成在一起。相对来说,第一步更难分割。

拆分的结果是,开发人员可以专注于业务和技能,并实现敏捷开发。因此,系统变得灵活,可以根据需要进行更改,从而实现敏捷业务。

例如,在web 1.0时代,html和脚本代码混合在一个asp或jsp页面中。此时,脚本代码越多,系统就越混乱(即熵增加),最终甚至连开发人员自己都无法理解。此时,系统需要重新架构。方法是引入视图助手模式,并将html与脚本分开。html成为视图,脚本成为帮助类。然后简单地整合在一起。通过重新划分和重新组合,整个系统层次清晰,职责明确,系统无序度降低,易于扩展。同时,具有不同技能的开发人员,如ued和程序员,可以负责不同的部分,有效地提高了开发效率。

在首席架构师眼里 架构的本质是……

一个好的结构就像一篇优美的散文,表面上杂乱无章,但实际上却非常有序。

模式分类和服务对象

架构通常可以分为业务架构、应用架构和技术架构,那么它们解决了什么问题,为谁服务呢?让我们先来看看系统登陆过程:

对于负责开发的人来说,他担心业务太复杂,代码逻辑太混乱,超出了他能理解的范围,系统无法维护。因此,开发的要求是系统的整体概念清晰、易懂、易于扩展。

对于正在运行的机器,担心的是业务并发太大,系统核心资源不够(如数据库连接)。它希望当业务量增加时,系统能够支持水平扩展和硬件容错(如避免单点故障)。

开发的难点主要通过业务架构和应用架构来解决。业务架构有助于从概念层面开发和理解系统(包括动态的业务流程/节点/输入/输出,以及静态的业务领域/业务模块/文档模型)。

应用架构有助于开发着陆系统(应用类型/应用形式/数据交互关系/交互模式等)。)从逻辑上讲,整个系统在逻辑上很容易理解。最近,很多人都在谈论soa,它属于应用架构的范畴。

机器的难点主要通过技术架构来解决,如技术平台(操作系统/中间件/设备等)的选择。),并支持多机房、横向扩展、无单点等。

强调系统是一个人的系统,架构以人为本,具有清晰的业务概念、合理的应用逻辑和易于理解(即高系统阶)。现在我们更多地谈论技术架构,例如高并发设计、分布式事务处理等。,只是因为它不需要业务上下文,并且更容易相互交流。在设计具体的架构时,我们应该首先关注业务架构和应用架构,这个架构新手应该特别关注它。

在首席架构师眼里 架构的本质是……

建筑师能力模型

建筑师只做分割和组合的事情,但他们的综合能力很高,需要内部和外部维修,得到厨房和大厅。下图通过典型架构介绍了架构师的能力要求:

在此基础上,架构师应该既有技术广度(多领域知识)又有深度(技术预见),非常熟悉主流公司的系统设计,知道优势和劣势,遇到实际问题,并且很快有各种评估方案。

抽象思维是建筑师最重要的能力,建筑师应该善于对对象进行概念化和分类。例如,面对一个大型的b2c网站,它可以快速抽象成采购->操作->前台搜索->下单->履行订单,这样就可以对系统进行划分和规则,并解决问题。

抽象思维是升华到一个高层次,从现实到空虚;透过问题看本质是从虚拟到现实的深挖。例如,看到一段java代码并知道它是如何在jvm中执行的;通过各种介质(操作系统内核/网卡端口/电磁介质等)了解数据如何到达目标的跨网络调用。)。透过问题看本质使建筑师能够敏锐地发现真相,系统地、首尾相连地思考,找出木桶的缺点并加以解决。

在首席架构师眼里 架构的本质是……

一个可以登陆的架构是一个好的架构,良好的沟通技巧确保各方就架构达成共识并愿意采取行动;良好的平衡和权衡能力保证了体系结构在现有资源的约束下是最合理的,理想最终会变成现实。

综上所述,建筑师的能力要求包括:

它结合了技术的广度(多领域知识)和深度(技术预见)

它既有思维的高度(抽象思维),又有深度(问题到本质)

感性(沟通)和理性(平衡)

建筑领域

建筑师可以从浅到深分为四个层次:第一,山不是山;第二,山就是山;第三,山不是山;第四,山就是山。

当我第一次接手这个项目时,我不了解业务,我总是被业务方面的术语弄糊涂。如果把现存的问题比作山,它们被视为山边的山峰,这是完全不可理解的。在这个时候,山不是山。

经过业务梳理和对系统的深入了解,我们可以设计出一个吊死方案,把所有的系统串连在一起,解决当前的问题,清晰地看到当前山的全貌。这时,我们可以把这座山看作山。

通过进一步的抽象,问题的本质被发现了。原来这个问题很普遍,将来还会有很多类似的问题。对设计进行总结和升华,得到一个既能解决当前问题,又能解决潜在问题的总体方案。在这个时候,我们看到的才是问题的本质,看山不是山。

最后,回到问题本身,去除过多的抽象,给出的设计简洁明了,一点太胖不能增加,一点太瘦不能减少,这不仅解决了当前的问题,而且保持了最基本的扩展。此时,问题仍然是那一个,山仍然是那一个。

第一个领域无法给出合适的计划。

第二个领域的方案只解决表面问题,而设计往往是不够的。当遇到其他类似问题或问题轻微变形时,系统需要重新处理。

第三个领域的方案往往设计过度。太多的概括会产生太多的抽象,产生概念,并使理解和实现它们变得困难。这时,系统的无序程度反而会增加,但这已经太多了。

在第四个领域,在理解问题本质的基础上,我们应该考虑现状,评估未来,不要做太多,不要做太多。

佛教说空和颜色是事物的现象,空是事物的本质。从这个意义上说,第一个领域没有空是无色的,第二个领域是过度着色的。

不是空不有色,而是空既有色,道是自然,自然是佛,建筑的精髓也是。

这篇文章由读者提交,并不代表36英寸的立场。如有转载,请注明出处

“读完这篇文章还不够吗?如果你也开始创业,希望你的项目被报道,请点击这里告诉我们!”

标题:在首席架构师眼里 架构的本质是……

地址:http://www.j4f2.com/ydbxw/5105.html