程序员如何快速熟悉一个系统
本文摘自腾讯云
业务熟悉
- 业务情况:系统所在的行业的情况是怎样的
- 目标用户: 系统的目标用户是谁?比如是给高层做决策用? 给运营或者客服用,互联网用户用?用户画像
- 使用情况:平均多少人在使用?高峰有多少人在用?
- 业务价值:系统有什么业务价值?有那些指标可以衡量系统价值
- 功能模块: 系统有哪些功能模块,关键业务流程有哪些?
- 系统指标: 系统的非功能性需求有哪些,如性能,质量,扩展性,安全性
- 未来规划: 系统未来的规划是怎样的?
业务架构
- 有哪些子系统或模块,系统之间的关系是怎样的
- 对外上下游的接口有哪些,干系人是谁
- 关键业务流程怎么实现的?用类图,时序图表达出来
开发架构
- 代码在哪里,怎么批量搞下来,方便后续搜代码
- 包怎么划分? 怎么分层?如项目目录结构
- 采用了什么框架? trpc, springcloud ?
- 用了哪些工具包?
- 用了哪些中间件
- 依赖哪些平台
运行架构
- 系统能支撑多少qps
- 与上下游的系统如何交互呢? trpc? http? 异步还是同步
数据架构
- 采用什么样的数据库存储?
- 关系型:梳理完整ER图,数据量有多少? 归档逻辑怎么样
- 非关系型数据:梳理表设计,数据量有多少,归档逻辑怎么样
- 数据同步任务有哪些?具体怎么操作
- 大数据架构如何使用的?数据流架构梳理?
物理架构
- 系统都有什么环境,如果发布部署,发布时间窗口?
- 系统有多少服务?
- 多少机房部署
- 网站的cicd 流程
系统运维
- 关键工鞥是否有监控,系统配置了哪些告警项目
- 除了问题,如何解决,日志在哪里,是否有全链路的追踪,是否有紧急操作,比如开关配置,降级,限流等
- 系统有哪些问题,可以找开发同学回顾历史问题,以免踩坑
- 运营和客服反馈的常见问题有哪些