郭东白老师的架构课偏理论,属于道层级。李云华老师的课偏实践,属于术层级。没有理论不会举一反三,只有理论,就是纸上谈兵,两个课都很好。
架构与程序思维的区别
程序 = 逻辑+实现
架构 = 判断 +取舍
架构设计的关键不只是数据结构和 算法 ,架构设计阶段基本上不涉及代码,架构设计不一定要高大上,大公司的不一定就是好的。
李老师举例,这个例子更有现实指导意义:面对某个场景或需求,你提出的架构方案,不同角色关注点不同,如:
老板会关注都有哪些解决方案,优缺点是什么?
业务:好用吗?方便接入吗 ?能否满足需求,你可以坑自己,千万别影响业务。
运维:好维护吗?方便监控?出问题怎么解决?
测试:测试工作量大不大?
一 什么是架构?
系统与子系统
关联(一群有关联的个体)+规则(个体之间按照规则运作)+能力(系统能力超越个体能力)+分层( 自顶向下逐层分解)
样例:
组件与模块:
从逻辑拆分:模块,目的是 职责分离。
从物理拆分:组件,目的是单元复用。
样例:
框架与架构
李老师,给出了他对架构的定义:
4R=rank(架构是分层的)+role(系统包含哪些角色)+relation(角色的关系)+rule(运作规则)
二 架构图
客户端 、前端 打包后部署不跟后端那样复杂,按模块划分 即可。
业务架构
使用场景:产品规划业务、汇报业务、新员工培训业务
技巧:颜色来区分业务状态、业务分组管理。长短 没有实际意义,为了对齐好看。
系统架构:
使用场景:整体架构设计、架构培训
技巧:颜色、联线,UML画架构图可能不太好看
复杂情况下,可以架构跟交互流程多画几张
应用架构:
使用场景:项目开发、测试;部署发布;子域架构设计
是系统架构的细化
部署架构
使用场景:总体架构设计、运维规划和优化
技巧:图标更好看
系统序列图:
画图本身不难,PPT,visio都行,难得是得理解,比如业务架构图这种,更侧重业务的抽象、理解。