码农张坐在电脑前,一边百度一边安装着自己一直使用的 VIM/Sublime/MySQLWorkBench/Foxmail. 慢慢地对 Mac 系统也熟悉了起来,不再那么战战兢兢的。
“ 下班后,所有人到会议室进行技术复盘会议 ”。蒋小悠在名为「Bug 俱乐部」的 QQ 群里面发布了一条消息。码农张好奇对点进了蒋小悠的 QQ 个人页面,扑哧的一声笑了出来,原来程序媛也会比剪刀手拍照啊。
扣篮周发过来一个 Gitlab URL,说:” 这是我们主要的 CodeBase, 你先熟悉一下。等会你登录禅道,我已经给你分配了两个小任务,不着急的,慢慢来。我可不敢把你给逼跑了,你可是钦定对好苗子嘞 ”。最后这句也不知道是不是嘲讽,管他嘞。把代码 clone 下来用 vim 打开开始阅读起来。
这是一个基于 ThinkPHP 的 Web 项目,胡乱了点击了几个文件,发现代码风格还算统一,但仍然可以明显对看出是不同人写的。扣篮周没有说更多的话,码农张自己按照习惯看了起来,先从 Controllers 目录一个一个的看,遇到不明白的函数调用就点进去,发现越转越晕,真实企业项目和自己平时写的小玩意复杂度确实差别很大,觉得自己的经验不够用了。扣篮周犹如神仙,在他在一筹莫展的时候,轻飘飘对发来一句,说:先看 Models, 整理几个核心的 Model, 理清系统大概架构,代码实现细节反而其次,在需要的时候再深入去看。我们这里主要是 Users,Messages,Orders,Transactions,Products,Listings,Discounts 这几个 Model。把这几个 Model 的之间的关系弄明白基本就有了大概的理解。
按照扣篮周的方法,一边看,一边打开 Sublime 记笔记,真是有如神助,几个核心 Model 的关系很快就理清了。原来再复杂的系统,基本模型也是很简单的。心里对扣篮周很是佩服,心里暗暗想着什么时候也可以这么厉害。就这样一个 Model 一个 Model 的看着,将他们的关系都记录在 Sublime 里面,很是津津有味。
“ 走,开会了!”
要不是扣篮周拍了他一下,码农张沉浸在 Model 之旅还无法出来。
蒋小悠把电脑 Airplay 到大屏幕,几个人围在会议桌坐了下来。
小悠站起来来到大屏幕旁边,指着屏幕说:” 这次事故一共引起了系统宕机超过 1 个小时,属于重大 A 级事务。从运维的角度看,主要原因是由于 Memcache Server 没有正确的预估使用量以及合理对配置引起内存超限,造成不停地使用交换空间,性能被极大的拖慢。同时,我占据主要的责任,我应该从运维层考虑到这种问题的发生,配置 Memcahce Server 对 Max Memory Limit 参数。”
“ 之所以会造成 Memcache Server 对异常使用,是因为有人恶意在不停的刷新登录 Access Token, 造成了异常的 Memcache Server 使用量。如果我们尽早的引入了 Rate Limit Module 则不会发生这个事情。”
扣篮周一边说,一边把电脑屏幕转向众人,说:” 今天,我们只是临时的写了一个简陋的流控系统,我们应该使用 Ticket Bucket 技术方案对动态流控系统,并且将流控系统从应用层代码迁移到 Nginx 层,这样可以同时保证 FPM 进程的安全。我和新来的张同学会负责这个项目。”
扣篮周说完,看了我一眼,投来了期许的眼光。
“ 我想我们应该在 Staging 环境启动自我黑盒攻击测试。这样我们就尽快对发现潜在的系统风险,而不是等到别人发现,那个时候已经给公司造成了不同挽回的损失。”
一直坐在旁边的胖子杨慢声细语的说道。
大家一言一语的表达自己的观点。码农张心底想着:做实际项目和做学生项目真的不一样,要考虑的问题之前都没有意识到。但是一想,又确实是问题。
“ 说得好!”
不知道什么时候靠在门口的刘哥鼓掌说:” 一次事故不可怕。我们可以从中学习到更好的经验。于自己,是提高的基础,于公司,是将产品打磨得更好的必经之路。工程师,就是用来犯错的。时间也不早了,大家也早点回去吧!”
回过神来才发现已经到了 8 点钟了。大家也离开了办公室,向地铁站或公交站走去。一路上,码农张心里都在念叨刘哥的那句:” 工程师,就是用来犯错的。”
回到住处已经 9 点半,楼下的饭店已经关门,烧了一壶开水,就着几片面包就算交代了晚餐。
打开电脑,看了一回 ThinkPHP 的文档就睡了。
这一天大家默契的配合和晚上的主动承担责任都让码农张觉得这个团队可能是来对了。