【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」出场人物: 08:10 小H,是巨杉数据库引擎研发的一名工程师。7:20 天还蒙蒙亮,小H就起床了,点亮了心爱的光剑,开始了新的一天。 在08:10时候,他已经洗漱完,锻炼好身体,倒好了咖啡。 整个…

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

08:10

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小H,是巨杉数据库引擎研发的一名工程师。7:20 天还蒙蒙亮,小H就起床了,点亮了心爱的光剑,开始了新的一天。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

在08:10时候,他已经洗漱完,锻炼好身体,倒好了咖啡。

 

整个春节由于疫情防控,他为国家做出了贡献,基本都宅在家里了。但是他觉得,宅在家里,也是一个挺好的春节。

 

小H查看了手机,发现一封未读邮件,显示是公司 Jenkins 系统发出。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小H打开邮箱,查看了未读邮件,是昨天新提交的优化代码 PR,导致了昨晚自动化测试系统中一个测试用例没有通过。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

09:15 

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

在平时,大家 9 点上班回到公司,各个小组都会在09:15自发地开一个简短的站立会,组内成员分别大致介绍一下昨天完成的工作内容还有今天的工作计划,然后大家开始了一天的工作。

 

现在,只是面对面的站立会,变成了“线上站立会“,大家依然按时登入小鱼易联的会议号。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小H在会上介绍了一下昨天提交引擎里 analyze 优化的代码,以及发现新代码会导致一些测试用例失败的情况。他打算今天将这个问题解决。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

09:25

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小N,是巨杉数据库的测试工程师。

 

早上刚刚拿出“小黄鸭“准备开始工作,她也收到了昨晚自动化测试系统用例失败的邮件。昨晚失败的测试用例,是她负责的。在刚才的站立会上,她计划今天和小H一起跟进这个失败用例。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

开完了早上站立会,她通过 VPN 远程连接公司内部的云桌面。

 

她通过自动化测试系统获取了昨晚测试用例失败的环境信息,然后通过 SSH 进入测试环境。

 

根据测试用例的错误信息,小N判断,应该是最新的数据库引擎中存在隐患,导致在特定的场景中会使得数据库执行命令不符合预期。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小N按照测试发现问题的流程,在 jira 系统中,给该引擎模块的研发小组组长提了一个问题单。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

09:43

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小X,是数据库引擎 analyze 模块的开发组长。他看到了 jira 系统给他发了一封关于昨天新合并的 PR 导致测试用例失败的问题单。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

他打开 jira 网页,浏览了一下测试的具体情况,明白应该是昨天优化的代码引入了新的问题,他将问题单转交给了小H,让负责模块的小H来负责解决。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

09:45

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

实际上小H在09:31开完早上的站立会,就已经通过 VPN 连接了公司内部的云桌面。他希望尽快弄明白昨晚测试用例失败的问题。

 

新版本的 analyze 模块优化涉及很多 class 文件的修改,代码编写和调整持续了几周,从早上看到失败邮件通知起,他就一直在回想可能是哪个方法忽略了调用,还是在哪个错误的地方错误地进行了调用?他不禁发出灵魂的拷问:“我究竟错哪了?”

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

这个时候,邮箱里收到了一条新的记录,是关于昨晚测试用例失败的信息,以及重现问题的步骤。他看着 jira 上的测试步骤以及错误输出,突然间,他好像明白了什么,又一头钻入了代码里。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

11:28

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小H通过 jira 问题单上的重现步骤,他发现了问题的导致,是因为原来的优化代码中,对一些特殊事件的处理得并不完整,所以才导致了问题。

 

他心里已经知道了如何 fix 问题,他希望下午能够和测试人员沟通一下他的解决方案。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小H在IM软件时组织了一个群,成员包括:小Z-该模块测试组长、小N-测试人员、小L-测试人员。小H希望能够在下午开一个讨论会,介绍昨晚测试用例失败的原因,以及希望测试人员构造更多的特殊场景进行验证测试。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

13:00

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

在中午时,小H为了能够更好地向测试人员介绍问题的原因以及解决方法,他自己先在画图工具上画了一个简单的程序逻辑图。

 

到了约定时间,小H在IM上发了一条会议号信息,方便测试人员直接登入。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

大家都陆陆续续拨入进来,小H向大家分享了自己的电脑桌面,开始为测试人员介绍昨晚测试用例失败的原因,以及接下来如何解决。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

在会议上,小H提出,应该就这个 analyze 模块,增加一些新的特殊测试场景,以便验证在更多极限的、特殊的场景里,该模块依然能够正常工作。小H向测试人员提出了2个他认为值得添加的特殊场景。大家在会议上讨论了一番,提出了更多的验证场景,以便更加全面地验证 analyze 模块的健壮性。

 

在会议上,测试经理小Z让小N负责完整新的测试用例设计与开发,小L负责后续的测试验视工作。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

15:54 

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小N从会议结束后,就开始了新的测试用例设计与开发。由于刚才已经在群里充分地讨论了新的测试场景,所以新测试程序的设计和编码都很快。

 

小N完成了程序编码后,看了一眼时间,15:54。

 

“嗯,不错不错,效率可以”小N心想。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

16:13

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小H修改完代码,长长地伸了一个懒腰,心想:“终于写完了”。

 

小H对调整的代码本地编译了一个测试版本,根据昨天失败的测试步骤模拟了一遍,测试通过。“太好了,果然是这块出现了问题”,小H心想。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

代码测试通过,就可以往下走提交流程了,小H将代码上传 gitlab,并且向组长提交了一个PR请求。

 

同时小H在 jira 上,将本次遇到的问题详细的记录下来,包括:问题分析诊断,修改方案和后续验证方案。小H在 jira 上重新将问题单转交给组长小X。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

16:21

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小X留意到了 jira 的推送消息,他登陆 jira 查看了小H对问题的分析,感到非常满意。他在 jira 上将问题单移交给了测试组长,希望他能够分配测试人员完成回归测试。

 

同时,小X在 gitlab 上通过了本次代码的PR 合并。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

在小X通过了本次 PR 后,Jenkins 系统自动触发了更新编译动作,开始为后面的回归测试提供测试版本。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

17:20

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

在16:23 时候,测试经理小Z已经将 jira 问题单的回归测试分给了小N。

 

在16:51 时候,Jenkins 对最新的代码编译完成,小N从 Jenkins 系统中,拿到最新编译的测试版本,开始进行回归测试。

 

小N执行刚才写好的新增测试用例对新版本进行验证。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

新增测试程序全部通过,测试的结果也和下午开会时小H介绍的情况一致。昨天出现的问题已经得到了解决,并且新版本引擎在更加特殊的场景里也能够保持正确。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小N使用新增测试用例对新版本引擎测试都通过后,在 gitlab 上向测试经理提交了一个新增测试用例 PR 请求,并且在 jira 上也将问题单重新发回给测试经理。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

17:52

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小Z在17:23时候留意到 jira 的邮件提醒,打开 jira 页面查看了一下问题单进度,发现进展还是挺迅速的,看来这个问题单,可以在今天完成,小Z在 jira 上将问题单移交给小L,希望她对新增的测试用例进行重新验视,还是再次对新版本进行验视确认。

 

小L看到小Z发给她的测试单时候,已经17:30了。她快速浏览了一下 jira 问题单的流程,也开始对新引擎进行正确性再次验视。下午的讨论会,小L也参加了,所以测试进展顺利,17:52就完成了所有新版本引擎的验视,新增测试用例也符合下午开会的讨论场景。

 

她快速地在 jira 上提交了再次验视的说明,将问题单重新发回给测试经理。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

17:55

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小Z再次打开 jira 的问题单页面,小L已经完成了再次验视工作,看起来一切都非常顺利。

 

小Z再次检查了一下 jira 上整个问题单的始末,看起来问题确实得到了很好的解决。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

他关闭了问题单,也在 gitlab 上通过了新增测试用例的 PR。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小Z心想:“这个问题单就这样结束了,从 Begin 到 Close,一天的时间,时间过得真快“。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

20:17

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小H登上了公司的分享平台 Confluence,他希望记录下来这段时间来对引擎 analyze 模块的优化想法。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

不断地整理想法,不断地思考优化,这个习惯小H已经保持很久了。他觉得这样很充实。一点一点的记录下来自己的优化心得,梳理数据库引擎中的逻辑处理,他觉得很有意思,也希望将这个感受分享给公司的其他兄弟。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

21:00

Jenkins 系统自动开始每日构建,对所有新PR 进行编译。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

22:37

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

多伦多时间 09:37。

 

小D是巨杉多伦多实验室的一名研发工程师。在早上的09:15,他们多伦多的团队也如常地开了一个简短的站立会。其实在上班路上,小D已经从邮箱里看到了关于 analyze 模块新PR合并的消息,他打算今天先 review 一下小H新提交的代码。

 

在 SequoiaDB 核心的引擎开发流程里,一般安排两个研发人员组队负责项目,小H是 analyze 模块的主要开发者,小D则负责代码 review。这种开发模式,既能够保证每次 PR 合并的代码质量,也能够在突发情况时,由 plan B 人员快速接管该模块的开发和维护工作。

 

小D通过 VPN 连接到公司内部的云桌面,从 gitlab 上查看最新的代码。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小D知道小H有在 Confluence 记录分享的习惯,看了小H对 analyze模块的分析和修改建议,结合着代码里的注释,小D明白了之前的代码里确实缺少了对特殊场景的处理。

 

小D在 Confluence 上给小H 点了一个赞,并且留言:“Nice work ! May the force be with you :)  ”。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

0:00

Jenkins 系统开始自动测试流程,同时也自动启动了混沌测试。

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

5:00

Jenkins 系统结束了所有的测试流程,向研发工程师/测试工程师发送测试结果邮件。

 

 

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

8:15

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小H还是像往常一样已经起床、洗漱,他查看了一下 Jenkins 凌晨发出来的邮件,所有的测试用例都通过了。

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

小H打开电脑,心想:“今天该写新模块的入门使用文档了。嗯,今天又是元气满满的一天”,May the force be with you! 

 

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

 

附录:

    本文介绍研发流程

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

     远程协作工具列表

【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录「终于解决」

 

 

后记

 

本文根据巨杉数据库远程办公期间的一个真实处理流程整理,文中的工程师和工作流程均是公司远程办公的真实流程状态。

 

作为自研技术公司,巨杉数据库成立9年以来,在研发体系、自动化测试、多地工作协调和用户支持服务等方面,搭建了完善体系,积累了丰富的经验。我们在非常时期将会保证提供一如既往的服务和支持,同时保证我们的技术研发进度不受影响。

 

在疫情期间,许多科技公司也受到影响,大部分工程师都采用远程在家办公。虽然不能和医护人员一样冲在前线,但是大家都用自己的努力,一直在后方支撑着前方所有的“战疫”,保证了技术不断档!

 

科技向好、科技向善,科技创新的最大价值从来不是公司的利润和市值,而是帮助用户提高生产力,改善人们的生活,促进社会的发展进步。

 

我们也借此,向广大努力奋斗的科技工作者致敬!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9819.html

(0)
上一篇 2023-01-31
下一篇 2023-01-31

相关推荐

  • Ubuntu下安装SQLServer[通俗易懂]

    Ubuntu下安装SQLServer[通俗易懂]安装过程中遇到的问题 1 sqlcmd -S localhost -U SA 时报错 Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server :…

    2022-12-20
    155
  • 使用Python Numpy生成高效随机数

    使用Python Numpy生成高效随机数Python Numpy是一个基于Python语言的开源科学计算库,其最重要的特点是提供了一种多维数组对象(ndarray),用于高效地存储和操作大型数据集合,同时还提供了大量的数学函数库。

    2024-01-11
    119
  • 实例解析丨一文搞定GaussDB CM服务异常[亲测有效]

    实例解析丨一文搞定GaussDB CM服务异常[亲测有效]摘要:本文主要为大家带来如何处理GaussDB CM服务异常问题。 本文分享自华为云社区《【实例状态】GaussDB CM服务异常》,作者:酷哥。 首先确认是否是虚拟机、网络故障,底层故障处理 PID

    2023-06-19
    151
  • Python控制语句:elif的妙用

    Python控制语句:elif的妙用Python是一门易学易用的编程语言,它拥有非常强大的控制语句,其中之一就是elif语句。elif语句是if语句的衍生,它可以让代码更加简洁高效。

    2023-12-10
    112
  • Python变量:在代码中存储值

    Python变量:在代码中存储值
    在编写Python代码时,经常需要在代码中存储值,这就是Python变量的作用。Python变量可以存储不同类型的值,包括数值、字符串、列表、元组等。在Python中定义变量非常简单,只需要给变量赋值即可。比如:

    2024-01-21
    96
  • 初识你名,久居我心,人间有趣,因为有你_gauss软件

    初识你名,久居我心,人间有趣,因为有你_gauss软件摘要:GaussDB(for Cassandra)是一款基于华为自主研发的计算存储分离架构的分布式云数据库服务。 本文分享自华为云社区《华为云数据库GaussDB(for Cassandra)揭秘第…

    2023-04-12
    160
  • MySQL8新增降序索引[亲测有效]

    MySQL8新增降序索引[亲测有效]MySQL8新增降序索引 桃花坞里桃花庵,桃花庵里桃花仙。桃花仙人种桃树,又摘桃花卖酒钱。 一、MySQL5.7 降序索引 MySQL在语法上很早就已经支持降序索引,但实际上创建的却仍然是升序索引,如

    2023-05-15
    171
  • Python绘图教程

    Python绘图教程Python作为一种高级编程语言,被广泛应用于各个领域,其中,Python绘图也成为了其重要应用之一。Python绘图能够直观地展示数据,使得用户可以更加直观地了解数据分布和数据趋势。同时,Python绘图还可以被用来制作信息图、展示统计数据等。Python绘图能够操作的图像类型包括可视化、绘制区域、控制坐标轴和标签等众多操作。

    2024-06-10
    54

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注