目录
不知道你有没有这样的经历,以前维护某个系统的同事因为某些原因不在维护这个系统了,那这个系统就没人维护了,这时公司决定让你接手去维护它,承担起它的日常业务运营和迭代,这时你会怎么做才能快速的熟悉一个默认系统呢?当然这过程肯定会有交接文档,但是这种文档也不一定完善,需要你自己去摸索。
今天这篇文章就带你了解如何快速熟悉一个默认的系统。
一、业务层面
在熟悉一个系统前,一定要先熟悉它的业务,技术不是最重要的,因为实现的手段很多,切不可本末倒置,否则你就容易陷进技术里去,无法窥探整个系统的全貌。
1.1 业务背景
每个系统都是为特定的业务服务的,所以要了解系统是为公司的哪个业务板块服务的,在公司处于一个什么样的地位,通过这个系统能实现什么业务目标,有什么样的价值,如果公司离开了这个项目会产生什么后果,会有多大的影响,了解清楚了这些就了解了系统的重要性。
1.2 业务系统概括
如果你的公司注重文档管理的话,那一定会有项目的流程图、用户手册、需求文档等等,不过一般的公司可能没有那么全面的文档。通过相关文档,可以梳理出一个业务图谱,比如电商领域的用户下单流程等,这样对于业务的各个模块就能大概了解业务的全貌。
1.3 使用情况
首先要明白这个系统是一个什么样的系统,是为谁服务的,目标用户是谁,是 C 端服务,为广大用户服务的,还是 B 端服务,为公司内部员工服务的抑或是管理层才会关注的,这样就了解了用户的结构分布。
其次要看下这个系统的流量情况,UV、PV、QPS等,流量反应了这个系统的重要性,如果系统只有公司的管理层才会关注,那这个系统的这些指标肯定都比较低,甚至几天都没人访问。
另外还需要关注下系统的异常情况,如果流量还可以但是系统的异常很多,那可想而知你接手这个系统的难度会比较大。要将这些问题收集起来,这也是以后你入手的一个方面,要将这些问题处理掉。
1.4 业务流程演练
如果这个系统有复杂的业务流程,只看文档不一定了解的全面,这时就需要实操一下。按照系统设计的业务流程,模拟执行一些典型的业务操作,如客户开户、订单创建、库存查询、报表生成等,熟悉实际业务操作过程。这有助于理解系统的实际应用场景和用户需求。没走一个环节都要明白相关的流程是什么样的,这样有助于你快速上手一个系统。
二、技术层面
上面对业务有了一定的认识,接下来就要看技术是如何实现的了。
2.1 技术架构
首先需要从宏观层面看系统的技术架构是基于什么实现的,使用了哪些中间件,比如Kafka、RabbitMQ、Redis等等。系统由哪些子系统组成的,比如订单系统、评价系统等。系统是通过何种方式实现远程调用的,内部代码的具体结构等。
如果了解了架构后,思考这些技术使用的是否合理,有没有更好的替代方案。
2.2 存储层
一个系统必定会有自己的业务数据,要了解这些数据存储在了什么地方,使用了什么存储介质,比如MySQL、Oracle、TiDB,数据库中有多少张表,都有哪些表,那些表是核心业务流程的表,数据库每天的访问量,每天增加的数据量,同时需要关注下是否有慢查询等问题。
2.3 系统交互
现在的系统都不是独立的,完全考自己就能完成的业务非常少,经过微服务拆分后,服务的依赖关系很复杂,这时要了解系统的上下游都有谁,谁调用了我,而我又调用了谁,同时依赖的外部服务要能区分出哪些是强依赖那些是弱依赖,而且还要知道所依赖服务的职责是什么,同时还包括交互协议、问题沟通渠道等。
2.4 运维部署
系统应用部署到了哪里,是不是双云部署,部署中有多少容器,以及容器的信息,如何实现负载均衡,系统目前的关键指标,比如CPU、内存、磁盘I/O等,要了解目前所能承载的最大流量已经瓶颈点。
如果是 Java 语言开发的系统,还需要了解使用的是哪个 JDK 版本,堆内存等多大,使用的何种垃圾收集器等等。
要了解系统使用的数据库的容量,主从同步等关键机制。如果使用了 Kafka 消息中间件,要梳理出 Topic 以及其分区数量,有没有积压等情况。如果使用了 Redis,要了解其部署的事什么架构。
2.5 系统问题
如果可能的话要收集用户的反馈,知道用户使用系统时存在什么问题,后续进行优化升级。
除了用户的角度,还需要关注系统的很多指标,通过监控梳理出系统是否存在问题,比如慢查询接口、慢 SQL、bigKey等情况。通过监控收集到很多报警问题,就可以从这些报警入手,了解问题所在,一步步深度代码细节,分析问题原因。
三、总结
最后总结一下,要想熟悉一个陌生的系统首先要从业务入手,切不可操之过急一上来就深入到代码层面去看代码实现,通过业务北京、使用用户、业务流程等就能知道这个系统的价值所在。
业务了解后在技术层面在了解系统架构、存储层设计、系统交互、运维部署等等。这里我想提醒你一下,不要过分纠结于技术的实现,要活学活用,不要嫌弃你的前辈怎么这样那样,获取是特定环境的限制。
还有最最关键的一点,不要忽略人的重要性,如果这个系统还有其他同事经手过,要大胆的向其请教,甚至用一些“非正常手段”在也是可以的。
往期经典推荐
深度剖析Gateway在微服务治理中的关键角色-CSDN博客
MongoDB 索引全攻略_mongo 创建索引-CSDN博客