腾讯实习总结
介绍:这是关于暑期去腾讯实习项目的总结复盘
项目:实习内容、心得、启发的总结与反思
技术栈:PHP,CodeIgniter(MVC 框架),MySQL,vue,iview UI,axios。
腾讯实习总结
岗位:
TEG技术工程事业群/网络平台部/网络运营中心/运营开发组/运营开发岗
背景:
网络平台部是负责整个腾讯公司网络相关的东西。网络的生命周期很长,到硬件,到软件,到架构,到机房运营,到网络运营。我在的中心是负责网络运营的,例如做些机房管理、网络架构设计,专线扩容/切换,变更管理(例如设备升级等)等等。我们组是负责做一些关于网络运营管理工具平台的开发(devOps模式,开发的平台跟用户的业务逻辑完全区分开),当出现网络设备系统升级等变更需求时,此时平台可提供通用的流程模板,用于用户自定义处理方案,从而执行网络变更。(里面涉及错误流程的紧急回退等等)
工作需求:
为了进一步提升NC变更平台的问题复盘效率以及实现追溯模板历史能力,我们需实现NC平台的模板日志功能,能够记录变更模板的创建、信息修改以及生成对应模板版本,并且能对比出不同模板版本间的数据差异。同时,日志功能需可视化展示。
(除了查看模板日志,日志记录的新旧数据及其差异等,还可能希望当遇到因修改模板导致的变更流程出现问题时,能够快速还原修改前的模板版本,因而我还实现了模板旧版本的回滚功能。)
难点:
2.1 复杂的实际项目
之前我只学习过前端(vue技术栈),没接触过后端方面的技术细节,而NC项目是基于PHP+CodeIgniter后端框架的后端渲染的web系统,这对我的代码开发是一个难题。因此我花了几周时间,学习掌握了后端方面的知识并写了个web开发demo,从前端到后端及数据库真真正正理解了web开发的整个流程。接着接触NC这种复杂的实际项目,结合业务文档,阅读项目代码,理解代码块功能,我才对NC项目有了一个比较整体的理解。后面进行日志功能的开发时,就比较顺手了。
2.2 日志功能中的对比模板差异功能
对于用户来说,更关注于不同模板版本间的数据差异,而NC模板由于其可用户定义的灵活性,使得它的数据构成十分复杂,对比找出差异是一个难点。我是通过不断分析模板数据对象构成成分,逐项遍历地,逐层次地对比,发现各层级差异,最后把整个模板差异信息给汇总一起,并用表格可视化地展示给用户具体是什么变量在哪个位置做了什么操作,从什么状态变为了什么状态,从而才实现差异发现功能。
成果
实现了整个日志表功能:
“日志记录”功能。记录变更模板每次新建、修改、回滚、删除操作以及对应的模板版本。
a) 对于第一次创建模板,保存后,由于没有修改前的模板信息,则标记为“创建”,并保存在日志表中。
b) 每次修改模板并保存后,会把修改前后的模板信息保存到日志表中。并标记为“修改”。
c) 对于模板回滚,会把回滚前的当前模板信息和要回滚的模板信息保存在日志表中,并标记为“回滚”。
d) 对于“创建”状态,旧数据中的“查看数据”和“回滚”按钮、“查看差异”按钮都被禁用,而新数据中“查看数据”按钮可用。对于“修改”和“回滚”状态,四个按钮都可用。
e) 对于“已删除”状态,是模板执行“删除”操作,此时,日志会记录,并且禁用该模板的所有日志记录的“回滚”功能(模板处于不可编辑状态)。
“查看日志”功能。在变更模板查看视图中,点击“查看日志”,可跳转日志视图,查看当前模板日志信息和一些可执行操作。
a) 日志表信息展示。以分页表格进行展示同一模板id的日志信息,表头有日志编号、模板id、模板编号、操作人、操作时间、操作类别、旧数据、新数据、数据差异。
b) 其中,操作类别主要有创建、修改、回滚、删除;对于旧数据,有“查看数据”功能和“回滚”功能;对于新数据,有“查看数据”功能;对于数据差异,有“查看差异”功能。
“查看数据”功能。跳转到查看数据视图,以变更模板查看视图(只读,不能对模板信息进行修改),去展示某次日志记录的新/旧数据,包括日志编号、日志类型(旧/新数据)、模板信息(基本信息、全局变量配置、屏蔽工具配置、EOP工具配置、实施操作模板)。
“回滚”功能。将当前模板数据被替换为在日志表选中的某个模板旧数据,并有回滚信息提示。
“查看差异”功能。将日志记录中的模板新旧数据的差异信息,在日志表视图展示出来,并标记差异存在的位置,变量,操作类型,旧状态和新状态。
还实现了其他的需求优化工作
1、新增屏蔽规则的日志相关
2、把物理删除转为逻辑删除
3、netops流程接入NC平台
实习收获与体会
1、接触复杂的项目,设计了前端、后端、数据库等知识,加深了我对整个web开发的理解。
2、工程化,学了代码的规范,便于团队人员的代码开发效率。此外,还有业务解耦性。
3、阅读项目代码时(阅读之前肯定得看项目设计文档、说明文档),首先,看大概框架结构,有哪些部分组成,各个部分的整体功能是什么,每个部分里面具体可以做什么(主要的功能),细节的小的功能先不看它怎么实现,大致看它的功能和代码逻辑即可。这样,就有一个整体的观念。然后再根据整个数据流向与网页对应关系,去理解代码项目的每个功能方法。
4、多从用户的角度思考。例如在实现模板差异列表展示的时候,用户是看不懂英文标识,我们应该添加转化后的中文翻译。
5、以后要熟悉使用公司开发的平台工具。
6、复盘思想,目标是解决什么问题,怎么做,做的过程遇到什么问题,怎么解决,后续还需要做些什么等。每次做完一个需求,可以自觉地做一个ppt复盘总结自己的工作,5W1H原则。
7、ppt的制作,尽量以图表的形式展示,不要太多非必要的文字,少于40%的文字介绍。
8、IDE快捷键的使用,能够提升工作效率。
自我评估
优点:具有良好的学习能力,能短时间学习掌握新知识并快速接手项目,理解业务以及代码需求开发;良好的问题分析与解决能力;注重自我反思复盘与知识产出。
缺点:实习过程中对PHP的编程熟练度和对业务理解深度还可以进一步提升。
下一步规划
通过实习,我深刻明白,为了以后能更高效地团队协作,我应该一方面提升自己的技术能力,另一方面是去加深负责项目业务以及相关业务的理解深度,这样才能更好理解业务需求。此外,保持不断学习才能不断进步,例如还得后端方面的技术要更深入一点,在整体对web开发有个较深入整体的基础上,再不断探索学习前端方面的知识,例如JS性能优化,学习跨平台工具,学习react框架,学习typeScript等。