01 | 架构的本质:如何打造一个有序的系统?
架构的本质
- 深入了解
- 翻译
- 解释
- 总结
架构设计是软件系统发展的关键,通过合理的内部编排,系统可以保持有序,适应不断增长的业务和技术变化。文章从业务架构、应用架构和技术架构的角度阐述了架构的重要性和作用。业务架构帮助理解系统面临的问题和处理方式,应用架构定义系统内部的组织和协作方式,技术架构保证系统的稳定可用。一个好的架构需要满足业务复杂性和技术复杂性的挑战,包括柔性可扩展、功能可重用、高可用、高性能和可伸缩。优秀的架构师需要具备广度和深度的技术知识,抽象思维和深度思考能力,以及良好的沟通和平衡取舍能力。这些能力使架构师能够设计出满足业务需求和技术挑战的优秀架构。 文章强调了架构设计的本质和终极目标,即保证系统有序、柔性和能够进化,以满足各种变化。通过深入理解架构的本质和手段,读者可以根据实际情况以最合理的方式解决系统面临的问题,而不是盲目照搬某些方案。此外,文章还介绍了架构的三种典型分类,包括它们的定位和相互关系,为读者提供了对架构整体的简明框架。最后,文章提供了高标准的架构师能力模型,鼓励读者逐步往这个目标上靠近,并留下了一个思考题,引发读者对架构分类的思考。 通过本文,读者能够快速了解架构设计的重要性、分类和架构师的能力要求,为他们在架构设计领域的学习和实践提供了指导和启发。
《架构实战案例解析》,新⼈⾸单¥59
全部留言(62)
- 最新
- 精选
- 睡不着的史先生置顶老师,我还是,没太很好的理解,业务架构跟应用架构的区别,从概念定义一个系统,从逻辑定义一个系统,还是有点抽象😭
作者回复: 专栏里说三种架构分别从概念,逻辑和物理层面定义系统,那我们如何判断一个实际的架构图,它是业务架构,还是应用架构,技术架构呢? 业务架构关注系统大的业务流,数据流和资金流,举个例子,假设A要通知B,在业务架构里,我们简单标识A"通知"B,过程中传递了什么信息即可; 在应用架构图里,这个具体的通知方式要给出,也就是从逻辑上理解这个过程是怎么回事的,可能是A同步调用B;也可能是B定时轮询A的接口获取信息,还有可能是A先发送消息到MQ,然后有个监听应用负责接收消息,然后调用B的接口实现。 而如果是技术架构,还要把具体的MQ技术选型给出来,是RabbitMQ呢,还是Kafaka。 当然在实际的架构图里,不会都按照这个分类来描述,很可能有些地方按照业务架构简化表达,有些部分给出具体的技术选型,这个我们清楚就可以,不必太纠结,不是每个系统都要给出3个架构图,那太麻烦。
2020-03-0633 - 秋天置顶系统架构?有时候让别人了解我们现有的系统会让提供这个架构图,这属于应用架构吗?
作者回复: 系统架构是一个比较含糊的概念,实践中,也经常被人提到,如果按照业务架构,应用架构,技术架构的分类,系统架构实际上更偏向于技术架构。 专栏里说三种架构分别从概念,逻辑和物理层面定义系统,那我们如何判断一个实际的架构图,它是业务架构,还是应用架构,技术架构呢? 业务架构关注系统大的业务流,数据流和资金流,举个例子,假设A要通知B,在业务架构里,我们简单标识A"通知"B,过程中传递了什么信息即可;在应用架构图里,这个具体的通知方式要给出,也就是从逻辑上理解这个过程是怎么回事的,可能是A同步调用B;也可能是B定时轮询A的接口获取信息,还有可能是A先发送消息到MQ,然后有个监听应用负责接收消息,然后调用B的接口实现。 而如果是技术架构,还要把具体的MQ技术选型给出来,是RabbitMQ呢,还是Kafaka。 当然在技术的架构图里,并没有很明确地按照这个来给出,很可能有些地方按照业务架构简化表达,有些部分给出具体的技术选型,这个我们清楚就可以,不必太纠结,不是每个系统都要给出3个架构图,那太麻烦。
2020-02-22524 - 卫江置顶老师,我说一下我的感受不知道对不对,在业务架构设计中,核心是分和和,根据不同的抽象层级,最后形成树的结构,父节点不关心太多的细节而是交给子节点,并负责子节点粒度的业务逻辑整合,这样一来在分层的时候可以通过增加层来降低各个节点的复杂度。同时通过树结构避免循环依赖来使得模块之间关系更加清晰和简单,不知道这么描述对不对?
作者回复: 分解为不同抽象层次是对的,但组合时,一般我们不说树的结构,而是层次化结构,你看具体的业务架构,都是层次结构,一个层可以把多个定位相同的模块包含在一起,简化整体依赖关系,当然也不会有循环依赖的问题。 下一讲就会深入地讲业务架构。
2020-02-221 - 小伟置顶我很赞同老师从三个维度来、从上至下来理解架构,但相对技术架构,业务架构和应用架构都比较难积累。比如一个公司的业务线往往不会很多,能都参与的机会就更少。而每个行业或多或少都有一些成熟的业务模型,不了解的话会走很多弯路。有什么好的办法能更快接触、积累吗?
作者回复: 架构处理的原则是相同的,类似你会了一门语音,再学新语言就非常快。你可以对照自己熟悉行业的业务系统,去理解它们的系统设计。一般来说,电商行业交易相关的系统设计具有比较好的典型性,其他行业对核心的业务模型了解下就可以。
2020-02-2023 - 遇镜这门课干货、方法论满满,是极客里被低估的一门极优秀的课程。
作者回复: 哈哈,夸奖了。
2021-04-2123 - night业务架构,关注的是业务信息流; 应用架构,关注的是业务数据流;和上面信息流的不同是,通常能对应到系统中业务实体; 技术架构,关注的是支撑应用架构落地的技术方案,典型的就是对应到不同的RPC/存储/缓存/消息队列/等的技术栈; 还有一个简单的,业务架构/应用架构/技术架构,通常会体现在 业务人员/产品经理/技术人员 的 PPT 中;另外,技术人员随着职位的提升,关注点会前移,并且前移空间比较大;产品经理的关注点同,但不会后移(即不关心技术实现);
作者回复: 很好的思考,特别是技术人员随着职位的提升,关注点会前移。从业务出发,系统架构设计会有针对性,接地气,避免过度设计。
2021-03-093 - 技术修行者TOGAF将架构分为4种 1. 业务架构 2. 应用架构 3. 数据架构 4. 技术架构
作者回复: 是的,这是一种比较典型的分类。数据架构之前主要就是关系数据库,不怎么强调。现在随着大数据的发展,我们关心数据有哪些格式,数据如何分布,如何流转,数据架构也越来越重视。
2020-06-092 - 陈政璋老师你好对于业务架构和应用架构是否可以这么理解:一个是概要设计一个是详细设计。业务架构只是说明了模块以及模块关系,应用架构还说明了模块间通讯的具体方式,应用架构是业务架构的进一步细化。
作者回复: 这样理解也可以,但偏简单化。 业务架构是纯粹站在业务的角度,对业务进行分解和重新组织,不同的分解方式影响我们对业务的理解,以及后续的业务的扩展和重用能力。 应用架构是站在系统如何分解和组织的角度,它和业务和技术都有关系,有些和技术有关,比如BS还是CS,要不要网关,要不要把短信发送独立包装成服务方便调用等;当然更多地是和业务有关,比如订单服务针对订单业务,商品服务针对商品业务,当然业务模块和应用也不是1对1的关系,通常来说,业务模块的粒度比应用要大一点,但也有时候,一个应用包含多个业务的内容,比如一个管理后台的应用,就包含多个业务的后台。 架构师通过业务架构和产品经理和业务方沟通,对于开发来说,当然是应用架构更具体一些。 业务架构和应用架构是从不同角度看系统,虽然应用架构受业务架构的影响很大,但不能简单认为应用架构是业务架构的细化,它也有相对独立的一面。
2020-04-1332 - elfkingw架构师的职责是完成业务架构、应用架构、技术架构,那是否需要业务架构师和技术架构师两个角色呢?在技术上擅长的架构师不一定在业务上精通和理解,在业务不理解的前提下来设计必然会出现问题,如果是两个角色,我很好奇业务架构师是一个职位吗?是在某个行业深耕多年有技术背景的业务分析师?
作者回复: 业务架构师和技术架构师都是一种角色,或者说职责。没有条件的话,企业没有架构师,开发兼;有条件的话,有架构师同时兼这两个角色;条件很好的话,不同的人担任这个角色
2020-02-272 - Robin康F王老师,你好,我们一般说架构师都是业务架构和技术架构,是不是应用架构可以归为业务架构中?第二个问题,假如架构师最核心的3点能力,排个序,应该是怎么样的?感谢相遇
作者回复: 应用架构不能归到业务架构,它承业务架构,启技术架构,对开发来说,他和应用架构关系最密切。有些应用架构和业务没有关系,比如网关,它也是一个应用,用于连接前端和后端,但它处理系统级功能有关,和业务功能无关。 如果说对于开发来说,最重要的是逻辑能力,那对于架构师来说最重要的是抽象思维能力,然后是学习能力(技术和业务)和平衡取舍能力。
2020-04-121