👌如何快速熟悉一个复杂的系统

👌如何快速熟悉一个复杂的系统?

这个问题,是一道开放性的问题,很多小伙伴在面试的时候,尤其是一些高级的岗位,会被面试官问到,其实像这种问题,面试官的目的就是看你对于此是否有一定的方法论沉淀,如果平时只是一直在写crud,那么对于这种问题,一定是没有思考过的。通过此也能筛选出一些人的区分。

鸡翅老哥曾经做过好几次的大型项目的系统交接,每次交接都是对于一个系统从陌生到熟悉的过程,要进行快速掌控的过程。在这个过程中,你会遇到文档资料不全,原交接人可能直接离职了,找不到人。交接人没时间讲解业务等等等难受的问题,这个时候都是要靠自己来花时间处理。今天鸡翅老哥给大家沉淀一些方法论。

本篇文章的背景,我们就以一个背景来展开描述:一个大型的电商项目进行交接,你是其中的交接负责人,你该如何做?以及如何快速熟悉系统。

盘资源,盘权限

在进行系统交接的时候,我们一定要做好的一件事就是和原来的团队,确认当前大项目所需要的各种清单,例如代码库,数据库资源,redis资源等中间件情况,网关域名资源等等等。这个时候要建立表格,确保交接人和被交接人,一项一项的都要进行check,防止遗漏,不然交接完之后,再发现缺东西,那就直接难受了。

盘优先级

一个大型的项目是由很多子系统组成的,我见过最多的是100多个微服务应用。如果这么多的应用,全部由团队来进行熟悉,那就累到死了,一定要知道哪些是核心应用,哪些是非核心,我们可以编号,p0,p1,p2这种,这个过程和原来的团队要做好沟通,也为后续的熟悉做好基础。

盘业务

从看的见,摸得着的层面盘清之后,就可以开始盘业务,这个过程要依靠原有团队的讲解,以及沉淀的业务文档来进行学习和梳理。如果二者都没有,那么恭喜,步入地狱难度,需要自己通过体验产品,来划分出模块,盘出整个业务,这个地方也是有技巧,首先要划清用例者,用户身份,运营身份,等等各种身份,基于身份的形式,体验产品的整个流程并形成自己的认知业务文档。

盘技术栈

从这个地方开始就是熟悉系统的流程,先去熟悉技术栈,都是采用的什么语言,什么中间件,什么开源,基于什么样的形式进行交互,这个过程从核心系统开始,看pom文件,配置文件来了解其中的技术点。比如看到mq,大概就能猜到项目里面有异步的数据流交互,看到es,猜测这个应用是具备大数据量的处理和查询。

盘入口

什么叫入口呢,controller,对外提供的rpc,http能力,定时任务,这些都是入口,从入口来入手业务逻辑是最快的一种方式,所以先找项目的统一对外出口,不然直接看内部的逻辑,是会发懵的,比如从一个controller开始看起,就知道了这个项目对外提供的是什么模块,什么功能。方便我们去理解。

盘数据流

有了入口之后,其实我们已经大概知道该系统提供的能力是什么。在通过入口进行再深一层的看,就知道数据的流向是什么情况,在这个过程中,其实可以初步梳理出一个功能整体的系统交互和数据流向。这也是最耗时间的一个环节。

盘核心和易出问题的点

我们一个大项目的交接会有很多项目,如果挨个都看,不分优先级的去看,是很耗费时间和精力的,所以按照核心应用开始,以及找出平时容易出问题的点的应用,这种的收益是最大的。时间是宝贵的,我们也应该从这方面来进行熟悉。

盘细节

细节就不用说了,有了上面的这些铺垫之后,接下来要做的就是一个模块一个模块的整体的代码逻辑梳理,切忌每一行代码都看,要看核心的,简单的地方,了解数据流的大概即可。这样我们可以快速交接项目。

 wechat
天生我才必有用