架构实战案例解析
王庆友
前 1 号店首席架构师
18817 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 23 讲
架构实战案例解析
15
15
1.0x
00:00/00:00
登录|注册

01 | 架构的本质:如何打造一个有序的系统?

你好,我是王庆友,今天是专栏的第一讲,我想先和你聊聊架构的本质。
我们知道,现在的软件系统越来越复杂,当然相应地,架构的作用也越来越明显。作为开发人员,我们每天都在和架构打交道,在这个过程中,对于架构也经常会产生各种各样的问题:
什么是架构?架构都有哪些分类,分别解决什么问题呢?
怎样才是一个好的架构设计?我怎么才能成长为一名优秀的架构师呢?
这些问题涉及我们对架构的认识,也是学习和运用架构的开始。所以,今天,我们就来深入地分析架构的实质,让你能够透彻地理解它。
作为专栏的第一讲,我希望先和你讨论架构中理念性的部分,就是所谓架构的道,这样可以指导你学习后续的实操层面的内容,也就是架构的术。
接下来,我们就正式开始吧,先说下我对架构本质的理解。

架构的本质

物理学中有个很著名的“熵增定律”:一个封闭系统,都是从有序到无序,也就是它的熵(即混乱程度)会不断地增加,最终系统会彻底变得无序。
这个理论放在软件系统的演化上,也是非常适用的。
一方面,随着业务需求的增加,我们会往系统里不停地添加业务功能;另一方面,随着访问量的不断增加,我们会不断通过技术手段来加强系统非业务性功能。如果事先不做良好的设计,随着时间的推进,整个系统野蛮生长,就会逐渐碎片化,越来越无序,最终被推倒重来。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

架构设计是软件系统发展的关键,通过合理的内部编排,系统可以保持有序,适应不断增长的业务和技术变化。文章从业务架构、应用架构和技术架构的角度阐述了架构的重要性和作用。业务架构帮助理解系统面临的问题和处理方式,应用架构定义系统内部的组织和协作方式,技术架构保证系统的稳定可用。一个好的架构需要满足业务复杂性和技术复杂性的挑战,包括柔性可扩展、功能可重用、高可用、高性能和可伸缩。优秀的架构师需要具备广度和深度的技术知识,抽象思维和深度思考能力,以及良好的沟通和平衡取舍能力。这些能力使架构师能够设计出满足业务需求和技术挑战的优秀架构。 文章强调了架构设计的本质和终极目标,即保证系统有序、柔性和能够进化,以满足各种变化。通过深入理解架构的本质和手段,读者可以根据实际情况以最合理的方式解决系统面临的问题,而不是盲目照搬某些方案。此外,文章还介绍了架构的三种典型分类,包括它们的定位和相互关系,为读者提供了对架构整体的简明框架。最后,文章提供了高标准的架构师能力模型,鼓励读者逐步往这个目标上靠近,并留下了一个思考题,引发读者对架构分类的思考。 通过本文,读者能够快速了解架构设计的重要性、分类和架构师的能力要求,为他们在架构设计领域的学习和实践提供了指导和启发。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《架构实战案例解析》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(62)

  • 最新
  • 精选
  • 睡不着的史先生
    置顶
    老师,我还是,没太很好的理解,业务架构跟应用架构的区别,从概念定义一个系统,从逻辑定义一个系统,还是有点抽象😭

    作者回复: 专栏里说三种架构分别从概念,逻辑和物理层面定义系统,那我们如何判断一个实际的架构图,它是业务架构,还是应用架构,技术架构呢? 业务架构关注系统大的业务流,数据流和资金流,举个例子,假设A要通知B,在业务架构里,我们简单标识A"通知"B,过程中传递了什么信息即可; 在应用架构图里,这个具体的通知方式要给出,也就是从逻辑上理解这个过程是怎么回事的,可能是A同步调用B;也可能是B定时轮询A的接口获取信息,还有可能是A先发送消息到MQ,然后有个监听应用负责接收消息,然后调用B的接口实现。 而如果是技术架构,还要把具体的MQ技术选型给出来,是RabbitMQ呢,还是Kafaka。 当然在实际的架构图里,不会都按照这个分类来描述,很可能有些地方按照业务架构简化表达,有些部分给出具体的技术选型,这个我们清楚就可以,不必太纠结,不是每个系统都要给出3个架构图,那太麻烦。

    2020-03-06
    3
    3
  • 秋天
    置顶
    系统架构?有时候让别人了解我们现有的系统会让提供这个架构图,这属于应用架构吗?

    作者回复: 系统架构是一个比较含糊的概念,实践中,也经常被人提到,如果按照业务架构,应用架构,技术架构的分类,系统架构实际上更偏向于技术架构。 专栏里说三种架构分别从概念,逻辑和物理层面定义系统,那我们如何判断一个实际的架构图,它是业务架构,还是应用架构,技术架构呢? 业务架构关注系统大的业务流,数据流和资金流,举个例子,假设A要通知B,在业务架构里,我们简单标识A"通知"B,过程中传递了什么信息即可;在应用架构图里,这个具体的通知方式要给出,也就是从逻辑上理解这个过程是怎么回事的,可能是A同步调用B;也可能是B定时轮询A的接口获取信息,还有可能是A先发送消息到MQ,然后有个监听应用负责接收消息,然后调用B的接口实现。 而如果是技术架构,还要把具体的MQ技术选型给出来,是RabbitMQ呢,还是Kafaka。 当然在技术的架构图里,并没有很明确地按照这个来给出,很可能有些地方按照业务架构简化表达,有些部分给出具体的技术选型,这个我们清楚就可以,不必太纠结,不是每个系统都要给出3个架构图,那太麻烦。

    2020-02-22
    5
    24
  • 卫江
    置顶
    老师,我说一下我的感受不知道对不对,在业务架构设计中,核心是分和和,根据不同的抽象层级,最后形成树的结构,父节点不关心太多的细节而是交给子节点,并负责子节点粒度的业务逻辑整合,这样一来在分层的时候可以通过增加层来降低各个节点的复杂度。同时通过树结构避免循环依赖来使得模块之间关系更加清晰和简单,不知道这么描述对不对?

    作者回复: 分解为不同抽象层次是对的,但组合时,一般我们不说树的结构,而是层次化结构,你看具体的业务架构,都是层次结构,一个层可以把多个定位相同的模块包含在一起,简化整体依赖关系,当然也不会有循环依赖的问题。 下一讲就会深入地讲业务架构。

    2020-02-22
    1
  • 小伟
    置顶
    我很赞同老师从三个维度来、从上至下来理解架构,但相对技术架构,业务架构和应用架构都比较难积累。比如一个公司的业务线往往不会很多,能都参与的机会就更少。而每个行业或多或少都有一些成熟的业务模型,不了解的话会走很多弯路。有什么好的办法能更快接触、积累吗?

    作者回复: 架构处理的原则是相同的,类似你会了一门语音,再学新语言就非常快。你可以对照自己熟悉行业的业务系统,去理解它们的系统设计。一般来说,电商行业交易相关的系统设计具有比较好的典型性,其他行业对核心的业务模型了解下就可以。

    2020-02-20
    2
    3
  • 遇镜
    这门课干货、方法论满满,是极客里被低估的一门极优秀的课程。

    作者回复: 哈哈,夸奖了。

    2021-04-21
    2
    3
  • night
    业务架构,关注的是业务信息流; 应用架构,关注的是业务数据流;和上面信息流的不同是,通常能对应到系统中业务实体; 技术架构,关注的是支撑应用架构落地的技术方案,典型的就是对应到不同的RPC/存储/缓存/消息队列/等的技术栈; 还有一个简单的,业务架构/应用架构/技术架构,通常会体现在 业务人员/产品经理/技术人员 的 PPT 中;另外,技术人员随着职位的提升,关注点会前移,并且前移空间比较大;产品经理的关注点同,但不会后移(即不关心技术实现);

    作者回复: 很好的思考,特别是技术人员随着职位的提升,关注点会前移。从业务出发,系统架构设计会有针对性,接地气,避免过度设计。

    2021-03-09
    3
  • 技术修行者
    TOGAF将架构分为4种 1. 业务架构 2. 应用架构 3. 数据架构 4. 技术架构

    作者回复: 是的,这是一种比较典型的分类。数据架构之前主要就是关系数据库,不怎么强调。现在随着大数据的发展,我们关心数据有哪些格式,数据如何分布,如何流转,数据架构也越来越重视。

    2020-06-09
    2
  • 陈政璋
    老师你好对于业务架构和应用架构是否可以这么理解:一个是概要设计一个是详细设计。业务架构只是说明了模块以及模块关系,应用架构还说明了模块间通讯的具体方式,应用架构是业务架构的进一步细化。

    作者回复: 这样理解也可以,但偏简单化。 业务架构是纯粹站在业务的角度,对业务进行分解和重新组织,不同的分解方式影响我们对业务的理解,以及后续的业务的扩展和重用能力。 应用架构是站在系统如何分解和组织的角度,它和业务和技术都有关系,有些和技术有关,比如BS还是CS,要不要网关,要不要把短信发送独立包装成服务方便调用等;当然更多地是和业务有关,比如订单服务针对订单业务,商品服务针对商品业务,当然业务模块和应用也不是1对1的关系,通常来说,业务模块的粒度比应用要大一点,但也有时候,一个应用包含多个业务的内容,比如一个管理后台的应用,就包含多个业务的后台。 架构师通过业务架构和产品经理和业务方沟通,对于开发来说,当然是应用架构更具体一些。 业务架构和应用架构是从不同角度看系统,虽然应用架构受业务架构的影响很大,但不能简单认为应用架构是业务架构的细化,它也有相对独立的一面。

    2020-04-13
    3
    2
  • elfkingw
    架构师的职责是完成业务架构、应用架构、技术架构,那是否需要业务架构师和技术架构师两个角色呢?在技术上擅长的架构师不一定在业务上精通和理解,在业务不理解的前提下来设计必然会出现问题,如果是两个角色,我很好奇业务架构师是一个职位吗?是在某个行业深耕多年有技术背景的业务分析师?

    作者回复: 业务架构师和技术架构师都是一种角色,或者说职责。没有条件的话,企业没有架构师,开发兼;有条件的话,有架构师同时兼这两个角色;条件很好的话,不同的人担任这个角色

    2020-02-27
    2
  • Robin康F
    王老师,你好,我们一般说架构师都是业务架构和技术架构,是不是应用架构可以归为业务架构中?第二个问题,假如架构师最核心的3点能力,排个序,应该是怎么样的?感谢相遇

    作者回复: 应用架构不能归到业务架构,它承业务架构,启技术架构,对开发来说,他和应用架构关系最密切。有些应用架构和业务没有关系,比如网关,它也是一个应用,用于连接前端和后端,但它处理系统级功能有关,和业务功能无关。 如果说对于开发来说,最重要的是逻辑能力,那对于架构师来说最重要的是抽象思维能力,然后是学习能力(技术和业务)和平衡取舍能力。

    2020-04-12
    1
收起评论
显示
设置
留言
62
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部