如何熟悉一个陌生的业务系统

本文指导如何快速熟悉接手的新系统,强调业务理解的重要性,包括业务背景、系统概览、使用情况和业务流程演练。同时涉及技术层面,如技术架构、存储、系统交互、运维部署,以及如何通过监控和用户反馈来诊断问题。
摘要由CSDN通过智能技术生成

       

目录

一、业务层面

        1.1 业务背景

        1.2 业务系统概括

        1.3 使用情况

        1.4 业务流程演练

二、技术层面

        2.1 技术架构

        2.2 存储层

        2.3 系统交互

        2.4 运维部署

        2.5 系统问题

三、总结


        不知道你有没有这样的经历,以前维护某个系统的同事因为某些原因不在维护这个系统了,那这个系统就没人维护了,这时公司决定让你接手去维护它,承担起它的日常业务运营和迭代,这时你会怎么做才能快速的熟悉一个默认系统呢?当然这过程肯定会有交接文档,但是这种文档也不一定完善,需要你自己去摸索。

        今天这篇文章就带你了解如何快速熟悉一个默认的系统。

一、业务层面

        在熟悉一个系统前,一定要先熟悉它的业务,技术不是最重要的,因为实现的手段很多,切不可本末倒置,否则你就容易陷进技术里去,无法窥探整个系统的全貌。

        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等情况。通过监控收集到很多报警问题,就可以从这些报警入手,了解问题所在,一步步深度代码细节,分析问题原因。

三、总结

        最后总结一下,要想熟悉一个陌生的系统首先要从业务入手,切不可操之过急一上来就深入到代码层面去看代码实现,通过业务北京、使用用户、业务流程等就能知道这个系统的价值所在。

        业务了解后在技术层面在了解系统架构、存储层设计、系统交互、运维部署等等。这里我想提醒你一下,不要过分纠结于技术的实现,要活学活用,不要嫌弃你的前辈怎么这样那样,获取是特定环境的限制。

        还有最最关键的一点,不要忽略人的重要性,如果这个系统还有其他同事经手过,要大胆的向其请教,甚至用一些“非正常手段”在也是可以的。

往期经典推荐

手把手教你实现服务高可用性-CSDN博客

深度剖析Gateway在微服务治理中的关键角色-CSDN博客

MongoDB 索引全攻略_mongo 创建索引-CSDN博客

TiDB存储引擎TiKV揭秘_tikv tidb-CSDN博客

走进 Mybatis 内核世界:理解原理,释放更多生产力-CSDN博客

  • 15
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超越不平凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值