失败是成功之母,一名开发工程师的工作经历.doc

失败是成功之母,一名开发工程师的工作经历.doc

ID:27904922

大小:602.00 KB

页数:6页

时间:2018-12-06

失败是成功之母,一名开发工程师的工作经历.doc_第1页
失败是成功之母,一名开发工程师的工作经历.doc_第2页
失败是成功之母,一名开发工程师的工作经历.doc_第3页
失败是成功之母,一名开发工程师的工作经历.doc_第4页
失败是成功之母,一名开发工程师的工作经历.doc_第5页
资源描述:

《失败是成功之母,一名开发工程师的工作经历.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、失败是成功之母,一名开发工程师的工作经历  上周我和同事们简单地聊了聊我们工作中搞砸的那些事儿。如今早已不再犯那些错了,所以想起过去就觉得很好笑。但是笑归笑,其实当时犯的这些错让我们受益颇深。    分享自己犯错的经历至关重要,能让别人从中吸取经验教训,而且可能让他们工作起来更上手。我在这儿记录了几条自己最近犯的错。为什么有那么多生产数据库被误删?  几个月之前,Reddit上发了一篇文章,写的是一个入门级开发人员在上班第一天就误删了生产数据库。我们看到类似这种有人犯了特大的、不可磨灭的错误的文章,都不免心生畏惧

2、。我们意识到自己并不是没可能犯那种错——大多数时候都是悬崖勒马。  我在干第一份工作的时候,有一个高级数据库管理员在上班第一天就误删了生产数据库,这种例子简直比比皆是。工作团队用一周前旧的数据库备份帮他弥补了过失,让他保住了工作。如今十年过去了,都仍用这件事拿他开涮。  今年年初有天早上,我被叫去调查一个客户生产中出现的问题。他们本来要针对一小部分用户进行产品的β测试,但是他们的网站首页突然什么都显示不出来了。我猜想可能是系统有bug或者有漏洞所致。  我登录进生产机器,调出数据库,发现articles表是空的。

3、OK,这证实了网页显示空白的情况。  用户表里面还是有用户的,这就奇怪了,所以我们丢了所有的articles,但起码他们的测试用户仍有他们的账号,我们可以解释说是这是个测试版,而且这种事情时有发生。  接下来一会儿我就犯迷糊了。我记不清楚自己干了什么,我认为自己不会蠢到在控制台窗口输入了删除表中用户的指令,可情况就是这样——现在既没有articles表,也没有用户表。我呆坐着,感觉有点震惊。  然后我的大脑高速运转,开始想办法修复问题。我真的删掉用户表了吗?是的。我们运行备份数据库了吗?没有。该怎么向客户解释呢?

4、我不知道。  我记得自己去找了项目经理,坐在她旁边解释事情发生的经过,articles表中没有数据了,所以网站看上去是空的。哦对了,我还误删了用户表。现在他们需要重新邀请所有的用户——如果他们还能想清楚用户都有谁的话。哎呀。  我回到自己的座位上,感觉深受挫败。  但是我觉得事情有些蹊跷,我们怎么可能一开始就丢了所有的articles表呢?于是我继续深究下去,一方面是因为难以接受这个结果,一方面是想挽回颜面。之后过了一小会儿,我注意到了关键问题。  服务器上还有另外5个数据库,其中一个的名字和我正在看的那个数据库

5、的名字非常相似。  我一检查,发现articles都在里面,用户表也完好无损。事实证明是因为配置发生变化,无意间让它变成了生产数据库,导致网站指向了全新的数据库。我在里面看到的那些用户呢?种子数据罢了。  真是如释重负!一早上神经紧绷、胃酸翻涌,搞得我浑身不适,但好在我们“修复”了所有的数据,并且找到了问题真正的症结所在,没有提前宣布误删数据库的坏消息。  这个小插曲让我们受益良多,最简单的一个就是:现在我们总是在给数据库做备份……这可能是我们开发人员最有效的胃药。总赶进度,却从来赶不上进度  我最近所犯的另一个

6、突出错误没那么戏剧化,实际上是由一个个小错误最终累积造成了大麻烦。  我们项目开发的一大挑战就是时间紧张(但也不全是?)  第一次开会时,我们一致觉得项目需要的时间比我们能够拿出来的时间多了一倍。从项目一开始,截止日期就步步紧逼,所以我们三下五除二就通过了认证环节,以便进入客户真正关心的功能环节。  我只是之前在一个单页app中落实了一次认证,但仍然没有彻底理解app各部分是如何协调的。  尽己所能用最快的速度把app赶出来,就是大错特错,我漏掉了一些非常重要的东西:  用户在登陆后,是通过cookie来加载的,

7、但是我的app页面没有给加载提供等待时间,而是根据事件顺序来决定先后的,所以服务器会回复说你没有权限。这种错误很少见,而且很难再出现,因为大多数情况下事件都是按照正确的顺序来完成的。  而且认证环节也从不检查用户令牌是否失效,如果你不经常访问网站,当发现了没法登上网站后,就需要注销登录再重新登进去。  令牌应该在每次发起请求时都进行更新,但我从来都没有时间去理解这些规则。所以这里又产生了时间问题。如果我们一次同时发出几种请求,收到的回复取决于他们到来的顺序,那将来发送请求用到的令牌就是错的。  我们卯足劲赶进度,

8、但最终所用的时间还是要比给定的时间多一倍。区别就是我们开发出的app里面漏洞更多了,然后甚而要花更多的时间对漏洞进行追踪和修复。  工作中的失误让我尴尬不已,在大家面前感到十分羞愧,因为我把一切都搞砸了。  我要说一点:从那之后,我开始花时间学习认证机制,现在已经理解了OAuth,、JWT、刷新令牌和失效。我仔细阅读了许多库里别人写的认证代码,而且建立了基于几种不同语言版

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。