如何快速熟悉一个新系统?
极客时间编辑部
讲述:初明明大小:4.18M时长:04:34
开发人员经常会遇到学习新系统、维护陌生系统或新接手一个系统的场景,此时就面临一个问题:如何熟悉系统?这就需要你去梳理常见问题以及应对方法,也方便后续遇到类似场景可以快速应对。近日,阿里巴巴高级开发工程师唐志龙(鲲龙)分享了熟悉系统的方法,主要分三部分:业务学习、技术学习、实战。以下为重点内容。
业务学习
业务学习就是从业务角度去学习系统,只有清楚了业务,才知道怎样用技术更好地服务业务,所以业务学习是熟悉系统的首要任务。学习方式主要包括跟产品、运营、开发沟通;学习产品设计文档、PRD;自己使用系统,还要熟悉一些常见图,如产品功能架构图、业务流程图、功能树,用例图等。
在学习过程中需要解答的常见问题如下:
系统所在行业的情况是怎样?目标用户是谁?
平均有多少人在使用?高峰期有多少人在用?
系统有什么业务价值?有哪些指标可以衡量系统业务价值?
系统有哪些功能模块?有哪些领域概念?
系统的关键业务流程有哪些?关键业务流程是怎样?
系统的非功能性需求有哪些?
系统未来的发展规划是怎样?
技术学习
技术学习主要学习系统的架构、系统的运维以及如何实现。描述一个系统的架构可以使用五视图方法论。五视图分别是:逻辑架构、开发架构、运行架构、物理架构、数据架构。
1. 逻辑架构
逻辑架构着重考虑功能需求,常用表达图形:静态图有包图、类图、对象图;动态图有序列图、协作图、状态图、活动图。逻辑架构的核心设计任务是模块划分、接口定义、领域模型细化。
在学习过程中需要解答的常见问题如下:
有哪些子系统或模块?系统之间有怎样的关系?
对外上下游接口有哪些?对接人是谁?
关键业务流程怎么实现的?用类图、序列图等方式表达出来。
2. 开发架构
开发架构关主要关注系统源代码、第三方 SDK、使用的框架、中间件、工具包。
在学习过程中,会遇到以下常见问题:
代码在哪?
包怎么划分的?怎么分层?
用了什么框架、工具包、中间件?
依赖哪些平台?
3. 运行架构
运行架构着重考虑运行期质量属性,关注点是系统的并发、同步、通信等问题,这势必涉及到进程、线程、对象等运行时概念,以及相关的并发、同步、通信等。学习过程中的常见问题有:
系统能支撑多少 QPS?峰值 QPS 多少?
与上下游系统怎么交互的?同步还是异步?
4. 物理架构
物理架构的设计着重考虑安装和部署需求,关注点是目标程序及其依赖的运行库和系统软件最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性、持续可用性、性能和安全性等要求。
在学习过程中,会遇到以下常见问题:
系统如何发布部署?有哪些部署环境?是怎么部署的?
系统有多少台机器?
有没有容器化?
有没有多机房部署?
5. 数据架构
数据架构的设计着重考虑数据需求,关注点是持久化数据的存储方案,不仅包括实体及实体关系数据存储格式,还可能包括数据传递、数据复制、数据同步等策略。
在学习过程中,常见的问题如下:
数据存储在哪?用了什么数据库?
数据量有多少?是否有分库分表?
用了哪些 NoSQL 库?
有哪些数据同步任务?
大数据框架的使用情况如何?
除了学习架构,还要学习运维,系统运维重点关注什么时候会出问题,出了问题怎么解决。学习过程中常见的问题有:
什么时间容易出问题?
对关键功能是否有监控?
出了问题怎么解决?日志在哪?是否有全链路跟踪?是否有一些紧急操作,比如开关配置、降级、限流配置?
系统有哪些坑?
运营、客服反馈的常见问题有哪些?
实践
熟悉了系统的业务和技术后,就要实战了,通过实战进一步加深对系统的熟悉程度。实践可以通过做需求、修 Bug、重构等方式,亲自动手编码、调试、测试、上线。
以上就是今天的内容,希望能给你带来参考价值。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(6)
- 最新
- 精选
- 第一装甲集群司令克莱斯特外包人员走马灯,一手资料根本没有!一句话,看代码!1
- 姜姜熟悉系统的方法,主要分三部分:业务学习、技术学习、实战。
- caozhao熟悉 新系统的 思路很清晰
- 旭东(Frank)思路挺好,架不住这些资料有假或者根本没有
- Bravery168先从业务和系统架构建立起对系统的宏观认知,之后抓住关键部分从业务和系统实现层面进行深入探索。熟悉过程应该是宏观到微观,综合业务和技术角度。
- 钱非常棒,马上入职新的公司,正好需要,非常具有参考价值。 回想自己刚加入一家新公司,第一是认识组内人员,第二安装各种软件搭建工作环境,第三熟悉公司内的技术架构中间件等,第四通常是小组leader会给一些链接或文档去了解组内的大体业务,至于产品是谁?运营是谁?是不太清楚的,可能过几天就开始分配一些开发任务,说了惭愧,像作者说的这么系统全面的去了解一个系统,我目前尚未做到。 新的系统,我计划这么实践,去认识,感谢分享。
收起评论