原文摘自:https://mp.weixin.qq.com/s/g7wvEIBa0mK3XbJZ_4ZvRA
业务学习
系统所在行业的情况是怎样?
系统的目标用户是谁?
- 公司高层
- 运营/客服
- 互联网用户
平均有多少人在使用?高峰期多少人在用?
系统有什么业务价值?有哪些指标可以衡量系统业务价值?
系统有哪些功能模块?
系统有哪些领域概念?
- 领域模型
系统的关键业务流程是怎样的?
系统的非功能性需求有哪些?
- 性能
- 质量
- 扩展性
- 安全性
系统未来的发展规划是怎样?
技术学习
逻辑架构
核心设计任务
- 模块划分
- 接口定义
- 领域模型细化
常见图形
静态图
- 包图
- 类图
- 对象图
动态图
- 序列图
- 协作图
- 状态图
- 活动图
常见问题
有哪些子系统或模块?
系统之间是什么样的关系?
对外上下游接口有哪些?
对接人是谁?
关键业务流程怎么实现的?
- 用类图、序列图等方式表达出来
开发架构
核心关注点
系统源码
第三方SDK
使用的框架、中间件、工具包
常见问题
代码在哪?
包怎么划分的?怎么分层?
- controller、service、dao
用了什么框架?
- ssh、dubbo、spring cloud
用了哪些工具包?
- apache commons、guava、fastjson
用了哪些中间件?
- metaq、tair、schedulerX
依赖哪些平台?
- 权限平台
- 流程引擎
运行框架
核心关注点
并发
同步
通信
常见问题
系统能支撑多少QPS?峰值QPS多少?
与上下游系统怎么交互的?
- RPC or RESTful API
- 同步/异步
物理架构
核心关注点
目标程序及其依赖的运行库/系统软件最终如何安装或部署到物理机器上
如何部署及其和网络
- 高可用
- 高性能
- 高并发
- 可靠性
- 扩展性
- 安全性
常见问题
系统如何发布部署?有哪些部署环境?
系统有多少台机器?
系统部署怎么部署的?
- 集群部署
- 分布式部署
有没有容器化?
有没有多机房部署?
数据架构
核心关注点
持久化数据的存储方案
- 存储格式
- 实体数据
- 实体关系数据
- 数据传递
- 数据复制
- 数据同步策略
常见问题
数据存储在哪?用了什么数据库?
- Oracle
- MySQL
梳理 E-R 图
数据量有多少?是否有分库分表?
用了哪些NoSQL数据库?
- MongoDB
- Redis
- Memcache
- ES
有哪些数据同步任务?
大数据框架的使用情况如何?
- Hadoop
- Apache
- CDH
- HBase
- Hive
- YARN
- Flume
- Kafka
- Spark
系统运维
常见问题
什么时间容易出问题?
- 双十一大促
- 月末
对关键功能是否有监控?
- 监控
- 报警
出了问题怎么解决?日志在哪?是否有全链路跟踪?是否有一些紧急操作?
- 开关配置
- 降级/限流配置
系统有哪些坑?
- 找负责的产品、运营、技术了解
- 设计漏洞
- 性能隐患
运营、客服反馈的常见问题有哪些?
实战
- 做需求
- 修bug
- 重构
- 亲自动手编码
- 调试
- 测试
- 上线