51 | 如何画出优秀的软件系统架构图?
51 | 如何画出优秀的软件系统架构图?
讲述:安晓辉
时长14:43大小13.44M
4+1 视图
核心指导思想:4R 架构定义
常见架构图
1. 业务架构图
2. 客户端和前端架构图
3. 系统架构图
4. 应用架构图
5. 部署架构图
6. 系统序列图
补充说明
小结
赞 43
提建议
精选留言(35)
- quietwater2022-02-02这节课不应该是选学,应该是必学。对我帮助很大,太有指导意义了。老师对这门课太用心了,一直关注学员留言,这个必须点赞!学第二遍了,感觉收获比第一遍大,期待第三遍的学习🙂 客户端和前端的复杂度在于应用内部,而后端的复杂度在于应用间的协作,当然应用内的复杂度也很高,不比客户单和前端低,甚至更复杂。想要满足三高,必须是分布式的,这样后端就会涉及很多组件之间的协作,系统架构的权衡取舍也来自于此。所以后端架构的复杂度基本等同分布式的复杂度,也基本等同系统的复杂度。展开
作者回复: 这一章是添加的正式章节,应该是必学的,你对课后习题的理解很到位,点赞
20 - Aresx2022-02-24想复习架构知识,没想到2022年老师还在更新专栏,感谢,受用颇深!
作者回复: 哈哈,我自己也在迭代,一起学习 :)
8 - Thomas2022-03-09这篇文章中所列举的例子:AlipayHK业务架构图与中台系统架构图除颜色外,没看出有多大差别,实质是相同的?求解?
作者回复: 明显不同呀,比如说“扫码支付”和“付款码”两个业务,都会涉及到支付中台里面的“交易中心、支付中心、风控中心……”等,一个是从外部用户或者客户的角度来看系统,一个是从内部开发或者团队的角度来看系统
共 2 条评论7 - 敏叔2022-02-25mac下一般用哪些软件画图
作者回复: 我就是用PPT来画,有学员推荐用draw.io
5 - shawn2022-01-27我觉首先得在一个应用中后端架构更加复杂,其次前端架构和后端架构一起展示出来对于绝大部分人来说是没有意义的,因为各自所属领域不同。
作者回复: 1. 系统架构核心部分就是在后端; 2. 前端和后端一起展示出来还是有意义的,主要在高级别的汇报的时候
5 - 知行合一2022-05-24这节课好棒,解决了我画架构图的困惑,以前不知4R方法,不会分层,总想展示所有信息,学了4R,Rank,Role,Relation,Rule对系统分层分场景展示系统角色之间的关系。
作者回复: 赶紧画一画目前自己正在做的系统的架构,体会会更深 :)
4 - 月光宫羽2022-11-21 来自广东1、4R是否可以理解成以下4个思考步骤? (1)分层 (2)列出角色 (3)表达角色间关系 (4)表达角色间交互 2、业务和系统架构图,无论从功能还是从架构层级看,有时感觉有人画的差不多,没能突出这2者的区别? 是否可以理解为: 业务架构是站在用户角度,用户能够真切的感知与看到的(页面菜单或选项)。 系统架构是站在开发者角度,通过编码实现用户所需要的功能(模块)。展开
作者回复: 正解,理解到位
2 - 千锤百炼领悟之极限2022-02-05这个跟C4图有没有什么联系的?
作者回复: 请看文章最后一段话
2 - G2022-06-24老师,画图对应模板图片。您是不是有一套,能分享出来吗。
作者回复: 链接: https://pan.baidu.com/s/1OdWLHuXS1cHn2lKfS1-4nQ 提取码: 1ttt
1 - shark2022-04-13想问华哥一个问题,我们的业务场景和产品比较特殊,产品的核心其实是在前端(前端需要处理大量的业务逻辑,复杂度也相对更高),这样系统架构是不是得以前端为主?
作者回复: 正常来说不应该前端处理大量业务逻辑,因为前端的运算能力肯定没有后端强,不管是手机app还是web浏览器还是pc的应用程序,肯定都不如后端分布式,更不用说后端服务器的性能了
共 3 条评论2 - 开心2022-03-22所以系统架构中的系统,指的是 某一类业务/能力统称。 应用架构中的应用,指的是组成这个系统的各个应用? 这样理解对么~
作者回复: 系统就是实现某个业务的系统,比如说电商系统、IM系统、MongoDB等,应用就是如你理解的那样。
1 - 开心2022-03-22所以系统架构中的系统, 指的是某一类业务。
作者回复: 系统就是系统,业务就是业务,系统是来实现业务的
1 - Geek_b43e492022-03-07老师您好,有哪些常用的画图软件也推荐一下吧,还有哪种类型的架构图用什么软件画好点,谢谢
作者回复: 我都是用PPT画
1 - helloworld2023-01-04 来自广东“不要事无巨细地把一个大系统的方方面面都在一张架构图中展现出来,而应该明确你要阐述的系统所属的级别(L0~L4),然后只描述这个级别的架构信息。”,请教下老师,文章中的L0~L4,具体是指哪5个级别啊
作者回复: 这个不是说每个级别都有一个名称,而是说你自顶向下的分,顶层架构是L0,下一级是L1,再下一级是L2,以此类推
- FuriousEric2022-11-29 来自广东1. 微信客户端架构图那张图感觉云里雾里,网上搜索了下,来源于《微信 Android 客户端架构演进之路》这个分享 https://www.infoq.cn/article/wechat-android-app-architecture 这样就能明白这个客户端架构图到底在讲什么了 2. 应用架构图种,会员中心系统的内部几个server,用线和箭头连起来,说实话,根本看不懂这个线和箭头到底在表达什么?感觉表达力比较弱,只能粗浅看出来这个会员中心内部使用了这些server,server之间可能存在某种形式的联系,至于是什么联系,图中看不出来 3. 支付系统的部署架构图太粗糙了啊,能否贴张现实场景中的部署架构图展开
作者回复: 光看图就想了解全部信息肯定不行,图只是整体上的形象表达,细节还是要靠文字。 支付系统部署架构图,如果是现实的,那就属于公司的机密信息了。
- 波2022-11-25 来自广东从不同的角度来分解系统,看看系统包含哪些角色 划分系统的角度有哪些?分解出的角色,在架构图中是什么关系,如何取舍要不要展示?
作者回复: 从物理的角度划分为组价,从逻辑的角度划分为模块都是可以的,同级别的角色展示即可,不要在上层架构中展示下层的设计。
共 2 条评论 - 程序员小跃2022-09-14 来自广东我去,今年角色有点变化,领导会时不时地叫我们更新部门的系统架构图,正发愁去哪找资源呢。老师实在是太棒了
作者回复: 知行合一,学以致用,挺好 :)
- hello world2022-09-08 来自广东没有泳道图么
作者回复: 如果你觉得泳道图更适合表达你的想法,也可以用的
- 线条2022-08-12 来自广东一些个人的理解和疑问: 业务架构:从系统要实现的业务角度来罗列业务和相应的业务功能,主要目的是告知客户系统所支持业务范围。系统的登录等算业务吗?是否存在一些共性的业务? 功能架构【自己加的】:从业务架构中的业务视角转换成开发的视角,将某些业务功能抽象出来形成某些基础功能模块,同时将某些业务功能进行组合形成某些功能模块。 系统架构:文章中说是描述后端的逻辑架构(又叫后端架构和技术架构),这么来说主要是描述实现功能的技术方案了?包括技术选型,实现策略等? 应用架构:描述系统由哪些应用组成,对这个”应用“的概念不是那么清晰, 可以是子系统、也可以是微服务里面的一个服务,总体来讲必须满足能独立部署的特点?或者说就是一个独立的进程?那么如果是单体系统,是不是这个应用架构就不存在了? 部署架构:描述系统的各个组件的部署,包括各类中间件按什么方式部署、各个系统/子系统按什么方式部署、服务器配置、网络配置、机房信息等。在技术架构中也会涉及组件等,但更多是告诉用什么组件来干嘛,而在部署架构中需要细化到组件的部署方式,例如:单机还是集群、一个机房还是多个机房部署、配置几个副本、如何做数据同步、使用什么样的网络连接等 总的疑问:不同的架构图里面应该/可以包含哪些元素,网上的很多架构图感觉元素混乱,自己也好难判断应不应该参考。展开
作者回复: 1. 登录一般不算业务,算功能; 2. 功能架构一般用在微内核架构里面; 3. 是的,后端架构包括技术选型等决策; 4. 单体系统就没有应用架构了;应用就是指可以独立部署的单元;
- 永不放弃2022-08-09 来自广东老师 有移动端架构的更多方向吗?
作者回复: 目前明确的是大前端架构,以后那就是虚拟技术了,目前看不太清