如何接手一个新系统

BitOrbit
• 阅读 115

在平时的工作中,接手别人的系统上一个一年还是会有几次的工作,本期我们就来梳理下,一般接手一个新系统都要从哪些方面来尽快熟悉下,保障自己不掉队。
接手一个新系统,一般要从这几个方面来熟悉:
一、业务知识;
二、技术知识:
1、逻辑架构
逻辑架构主要要了解以下这几部分:
1.1系统整体和每个子系统的架构图、核心领域模型;
1.2几块核心模块和业务流程、时序图;
1.3每个系统的上下游系统依赖、核心联系人、交互协议方式
2、开发架构
开发架构主要关注使用的框架、第三方 SDK、中间件、工具包
3、物理部署
4、数据架构
5、系统运维
下面我们就来详细看下每部分应该如何做:

一、业务知识

1、系统有哪些领域概念?梳理下系统的领域模型;
系统的关键业务流程有哪些?关键业务流程是怎样?
系统的非功能性需求有哪些?如性能、质量、扩展性、安全性等;
系统未来的发展规划是怎样?
2、系统有什么业务价值?有哪些指标可以衡量系统业务价值?
系统有哪些功能模块,大的模块系统的目标用户是?规划平均有多少人在使用?
高峰期多有少人在用?有多少 DAU(daily active user)、MAU(monthly active user)?

二、技术知识:

1、逻辑架构

逻辑架构主要要了解以下这几部分:
1.1系统整体和每个子系统的架构图、核心领域模型;
1)架构图主要描述总体架构、系统模块、子系统模块定位;
2)子系统模块主要描述子系统定位和其架构和子系统之间的关系;
3)系统集成关系:侧重跟外围系统之间的关联和交互;
4)核心领域模型可以按照ddd的模式来梳理,并和数据库的表对应;
5)网络架构图;
6)系统部署图;
1.2几块核心模块和业务流程、时序图;
1)每个大的功能系统操作页面、入口类和其业务流程图;
2)对应的接口或者入口类及从页面到数据库的线,从接口到数据的线、主模块设计细节图例如静态的包图和类图,动态的有序列图、协作图、状态图、活动图;
3)与其他系统之间关键流程扭转,状态流转图等;
4)本模块能做的需要监控的核心业务流程和其监控告警策略;
5)需要几个子系统间甚至系统间进行数据分析验证的数据库表和分析逻辑;
6)公共模块、核心模块或者影响面大的模块是哪些;
7)各个模块的非功能性现状大致是怎样的,例如:性能、扩展性、安全性等;
1.3每个系统的上下游系统依赖、联系人、交互协议方式
1)本系统的上线游依赖,内部交互方式是rpc、http、http?同步还是异步?联系人?
2)和外部交互的也需要整理进来,和各个核心交互能处理的阈值和失败处理方式(是指在正常情况下的阈值,非其他业务不运行,单独某个接口的处理阈值)

2、开发架构

开发架构主要关注使用的框架、第三方 SDK、中间件、工具包,具体如下:
1)使用技术框架、前端和后端都列;
2)对接使用的第三方sdk列表;
3)用了哪些开源工具包和对应版本号;
4)用了哪些中间件和其版本,还有对应的java引用的客户端类型,例如redis是Jedis 还是Lettuce 、还是Redisson ,中间件加载使用所在的包和类和其行业通用解决方案梳理,例如redis分布式锁的代码;
5)各个子系统依赖内部什么资源才能启动,
依赖公司内部或者其他平台的什么资源才可以正常运行核心功能,启动时间大致多少;

3、物理部署

1)系统如何发布部署?和系统各自有多少台机器?
2)系统怎么部署的?接入层,部署方式,如集群部署、分布式部署等
3)假设系统扩容,所依赖的资源例如网络、机器等申请多少,假设做异地多活或者单元化架构有哪些改造点

4、数据架构

1)所用的数据库类型,承担了什么功能,已经使用容量、总容量、告警类型和阈值,
可能的限制因素和数据硬件部署方式和软件架构,例如mysql的mma还是mgr还是mha等,有无和其他系统混合部署情况?
2)梳理表之间的E-R 图;
3)核心表现有数据量有多少?每日增量多少,业务投放对现有容量的影响?是否需要分库分表?
4)用了哪些 nosql 库?和1)一致的问题,是否有使用nosql做存储的情况;
5)有哪些数据同步任务?不仅本系统的主库从库同步和延迟,还有业务系统和大数据的同步和延迟情况,
和大数据同步后对方提供的接口是否有其特殊逻辑处理?

5、系统运维

1)什么时间容易出问题?对关键功能是否有监控?需要看系统有配置了哪些报警项,监控了哪些方面;
出了问题怎么解决?日志在哪?是否有全链路跟踪?是否有一些紧急操作,比如开关配置、降级、限流配置;
解决后怎样保障如何不出同样或者类似的问题,类似保障手册、应急预案、资损盘点之类的内容
2)研发同事总结的历史问题case;
3)运营、客服、技术支持、政府事务组、公关、财务、其他上下线游反馈的常见问题有哪些?
4)遗留线上 Bug 清单和 Owner 分配
有参考:如何熟悉一个系统?(内含知识大图) - 掘金

点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Peter20 Peter20
4年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
徐小夕 徐小夕
5年前
复盘node项目中遇到的13+常见问题和解决方案
笔者之前陆陆续续接手过几个nodejs项目,也参与过几个有点意思的nodejs开源项目,最近把其中遇到的一些问题和解决方案做一个梳理,避免大家继续踩坑.话不多说我们开始吧1.window和mac下设置NODE_ENV变量的问题我们都知道在前端项目中会根据不同的环境变量来处理不同的逻辑,在nodejs中也一样,我们需要设置本地开发环境,测
Stella981 Stella981
4年前
Python Challenge Level 18
初学Python,挑战一下流行的PythonChallenge,很不幸,卡在了18关~~被字符字节码之间的转换搞得焦头烂额,不过终于搞定了还是很happy的~~~主要的问题就是16进制形式的字符如何转成字节码(注意:不是encoding)如:\'89','50','4e','47','0d','0a','1a','0a','00
Wesley13 Wesley13
4年前
Vtiger CRM 几处SQL注入漏洞分析,测试工程师可借鉴
本文由云社区发表0x00前言干白盒审计有小半年了,大部分是业务上的代码,逻辑的复杂度和功能模块结构都比较简单,干久了收获也就一般,有机会接触一个成熟的产品(vtigerCRM)进行白盒审计,从审计的技术难度上来说,都比公司内的那些业务复杂得多,而真正要提高自己技术水平,更应该看的也是这些代码。vtigerCRM是一个客
Wesley13 Wesley13
4年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
4年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Python进阶者 Python进阶者
2年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这