一、为什么要学习
- 更深的理解业务逻辑(公司是做什么的?它最重要的商务决策是什么?它里面的数据流是怎么做的?有哪些业务场景?考验你对这家公司、对所负责业务的熟悉程度。公司背后服务器用什么软件搭建的?用的什么技术?)
- 更好的梳理业务用例(更好的覆盖用例。总共有多少种业务流?用户分多少类?有多少种排列组合?)
- 更好的与研发运维进行跨部门协同(在出问题时,能提供一些支持)
二、架构分析示例
(一)开源项目 LiteMall 系统架构
官网(详细架构说明):https://github.com/linlinjava/litemall
- 角色与数据
- 用户产品
- 前端技术栈
- 后端技术栈
- 数据存储
(二)开源项目 Mall 的系统架构
mall官网(详细架构说明):https://github.com/macrozheng/mall
- 角色与数据
- 用户产品
- 前端技术栈
- 后端技术栈
- 服务治理技术栈
- 监控技术栈
- 大数据处理技术栈
- 数据存储
- 持续集成/持续交付/DevOps
…
三、如何快速了解一家公司的架构
(一)业务流程:
- 商业模式(大到公司,小到部门,怎么盈利,作用是什么)
- 业务数据:角色、资源、数据
- 业务流程:角色、行为、数据的集成关系
(二)系统架构(业务在技术上的具体落地):
- 架构角色与技术栈(某个架构上的角色和它具体的技术实现):
- 网关:apache/nginx/f5/
- 应用开发:spring boot/spring cloud/
- 通讯协议:dubbo/http/pb
- 数据处理:hadoop/spark/flink
- 数据存储:redis/mysql/oracle/redis/es
- 文档存储:mongodb/hbase/neo4j
- 部署架构(调用链):架构角色之间的集成关系
四、画架构的工具——统一建模语言 UML
(一)测试用的比较多的图
1、用例图:商业模式、业务角色。分析角色与资源
【举例】抖音分为消费者角色-刷视频、评论、点赞;输出者角色-发视频、进行直播、提供各种服务的人;管理员等
【作用】用例图能够很好的梳理这些角色分别有什么样的能力、行为,以及它们之间的协作是什么样的
【实例1】梳理业务流程(一般由产品经理产出)
2、时序图:业务流程、调用关系。分析数据流
【描述】更细粒度的对上面角色集成关系的描述
【举例】登录流程、密码找回、注册(各种功能不同的数据、不同的分支走向)
【作用】会非常有助于理解业务流程:输入、依赖、输出(可以使用时序图分析数据流)
3、部署图:系统架构与集成关系
【描述】哪些是数据库,哪些是文件,哪些是视频处理的各种架构(视频分析、视频处理的各种架构角色),架构角色之间是怎么进行调用的就使用部署图
4、活动图:分析业务逻辑
【描述】整个系统可以看成一个大型的树形结构,用户的操作可以理解为一个系统行为上的穿梭(覆盖分支、覆盖路径)
【作用】通过活动图可以更好的分析出来一个业务逻辑,可以把一个业务线上的一个业务架构理解的比较透彻(它的可能的行为,有多少种分支条件)
4.1 思维导图:分析功能点 (活动图的另一种实现方式)
【作用】对业务流程、数据分类去进行一个很好的管理
(二)推荐工具
1.plantuml(**通过编程绘制)
通过编程来帮忙绘制这些图
2.yed(*架构师比较喜欢用)
架构师会比较喜欢使用,更易用的visio
3.draw.io(在线画图)
用的比较多,可以在线画各种流程图,UML图
4.processon(*在线画图)
用的比较多,可以在线画各种流程图,UML图
5.visio(又重又大,小白用的多,工程师用的少)
又重又大,超级难用,对于小白来说比较好用,小白用的比较多,工程师用的比较少,一般是入门的时候用的比较多
使用思维导图分析功能点
使用时序图分析数据流
使用活动图分析测试用例
测试用例设计总结
使用用例图分析角色与资源
使用思维导图分析功能点
使用时序图分析数据流
使用活动图分析业务逻辑