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

news2025/2/24 8:24:33

       

目录

一、业务层面

        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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1613654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

真实世界的密码学(三)

原文:annas-archive.org/md5/655c944001312f47533514408a1a919a 译者:飞龙 协议:CC BY-NC-SA 4.0 第十一章:用户认证 本章涵盖了 认证人员和数据之间的区别 用户认证,根据密码或密钥对用户进行身份验证。 用户辅助认…

4.21java聊天室项目小结

基本完成了用户的登录注册功能,可以实现用户账号登录和邮箱登录功能,忘记密码通过邮箱发送验证码找回,注册账号功能,并传递给客户端更新数据库的表内容 注册功能: 注册成功后密码进行MD5加密并通过服务器保存到数据库…

Python 密码学实用指南(全)

原文:zh.annas-archive.org/md5/fe5e9f4d664790ea92fb33d78ca9108d 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 密码学在保护关键系统和敏感信息方面有着悠久而重要的历史。本书将向您展示如何使用 Python 加密、评估、比较和攻击数据。总的来说&…

Java学习Go(入门)

下载Go 《官网下载golang》 直接点Download,然后根据你自己的操作系统进行下载,我这里以win10为例 安装go 默认安装到C:\Program Files\Go,这里我们可以选择安装到其他盘,也可以选择默认安装。初学者建议直接一路next。 安装完…

07节-51单片机-矩阵键盘

文章目录 1矩阵键盘原理2.扫描的概念3.弱上拉4.实战-实现矩阵键盘对应按钮按下显示对应值4.1配置代码模板 5.键盘锁 1矩阵键盘原理 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式 采用逐行或逐列的“扫描”,就可以读…

2024团体设计天梯赛(部分题解)

目录 个人总结: L1-1 编程解决一切(5分) AC代码: L1-2 再进去几个人(5分) AC代码: L1- 3 帮助色盲(10分) AC代码: L1- 4 四项全能(10分) 代码:(9分) L1-4 别再来这么多猫娘了…

【大语言模型LLM】-大语言模型乐园,高效办公不迷路!

🔥博客主页:西瓜WiFi 🎥系列专栏:《大语言模型》 ❤️感谢大家点赞👍 收藏⭐ 评论⭐ 🎥大语言模型LLM基础-系列文章: 【大语言模型LLM】-大语言模型如何编写Prompt? 【大语言模型LLM】-如何…

Pytorch第一部分数据模块

数据划分: 从数据集中将数据划分为训练集,测试集,验证集 # -*- coding: utf-8 -*- """ # file name : 1_split_dataset.py # author : tingsongyu # date : 2019-09-07 10:08:00 # brief : 将数据集划分为训…

20.Unity飞机大战游戏

1任务:使背景图动起来 2任务:飞机换帧动画 3任务:让飞机发射子弹 4任务:敌机出现 5任务:控制飞机 6任务:游戏碰撞逻辑 7任务:另外两种类型的敌机 8任务:拾取奖励物品换枪 9…

230基于matlab的布谷鸟(COA)多目标优化算法

基于matlab的布谷鸟(COA)多目标优化算法,以 满意度、成本、时间、质量为目标的多目标优化求解代码。程序已调通,可直接运行。 230 matlab 布谷鸟(COA)多目标优化 - 小红书 (xiaohongshu.com)

操作符不存在:sde.st_geometry ^ !sde.st_geometry建议 SQL函 数st_intersects在内联inlining期间

操作符不存在:sde.st_geometry ^ !sde.st_geometry建议 SQL函 数st_intersects在内联inlining期间 问题:最近在使用SQL图形处理函数处理图形时,莫名奇妙报如下错误,甚是费解 于是开始四处"寻医问药" 1、nav…

叶子相似的树

题目链接 叶子相似的树 题目描述 注意点 给定的两棵树结点数在 [1, 200] 范围内给定的两棵树上的值在 [0, 200] 范围内 解答思路 深度优先遍历按顺序找到两棵树各自的叶子节点并存储到两个list中,随后比较两个list是否相同即可 代码 /*** Definition for a b…

mysql基础20——数据备份

数据备份 数据备份有2种 一种是物理备份 一种是逻辑备份 物理备份 物理备份 通过把数据文件复制出来 达到备份的目的 用得比较少 逻辑备份 逻辑备份 把描述数据库结构和内容的信息保存起来 达到备份的目的 是免费的 数据备份工具 mysqldump (3种模式&#x…

力扣283. 移动零

Problem: 283. 移动零 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义一个int类型变量index初始化为0; 2.遍历nums当当前的元素nums[i]不为0时使nums[i]赋值给nums[index]; 3.从index开始将nums中置对应位置的元素设为0; 复杂度 时间…

【数据结构-树和二叉树-森林-哈夫曼树】

目录 1 树1.1 树的描述(基本术语) 2 二叉树(树的度最大为2)2.1 注意事项-五种基本形态2.2 二叉树的抽象数据类型定义 3 二叉树的性质3.1 两种特殊形式的二叉树-重点会计算3.2 题目练习: 4 二叉树的存储结构4.1 顺序存储…

卷积神经网络(CNN)基础

目录 卷积神经网络介绍 卷积神经网络原理 卷积层:通过在原始图片上平移来提取特征 激活层:增加非线性分割能力 池化层polling(下采样层):减少学习参数,去掉不重要的样本,降低网络的复杂度 卷…

面试(06)————MySQL篇

目录 问题一:在MySQL中,如何定位慢查询? 方案一:开源工具 方案二:MySQL自带慢日志 模拟面试 问题二:这个SQL语句执行很慢,如何分析的呐? 模拟面试 问题三:了解过索引…

【GlobalMapper精品教程】076:基于高程和影像数据创建电子沙盘(真实三维地形)

影像与数字高程模型叠加,可以构建三维真是地形。本文讲解在Globalmapper中基于高程和影像数据创建电子沙盘(真实三维地形)。 文章目录 一、加载数据二、创建三维网格三、三维叠加显示一、加载数据 本实验的数据(配套实验数据资料包中的data076.rar,订阅专栏,获取全文及数…

Java Web 网页设计(1)

不要让追求之舟停泊在幻想的港湾 而应扬起奋斗的风帆 驶向现实生活的大海 网页设计 1.首先 添加框架支持 找到目录右键添加 找到Web Application选中 点击OK 然后 编辑设置 找到Tomcat--local 选中 点击OK 名称可以自己设置 找到对应文件夹路径 把Tomcat添加到项目里面 因为…

分享几个申请免费SSL证书的平台

随着数字网络蓬勃发展,人们在享受互联网时代带来的便利生活外,网络安全问题也是日益变得严重;越来越多企业或个人选择通过安装SSL证书来保护网站的数据安全和提高企业的品牌形象,好在很多证书服务机构都有提供免费SSL证书申请的服…