17611538698
webmaster@21cto.com

程序媛成长纪:从DBA到研发工程师

资讯 0 2511 2018-11-17 12:03:01

computersystemsanalyst-57a230883df78c3276081090.jpg

编者按:某日于X信偶遇张亮兄弟,已经跳槽到某东了。且开源项目Sharding-Sphere风声水起。开源这件事,做一年不难,难得的是持续投入和品质,包括生态的养成。为了表达对于开源项目的支持,收录张亮兄弟女弟子潘娟投稿一篇,作为程序媛可能获得某些优待如(妹子独有的沟通优势又能推动项目推广、与启荣老板畅谈人生),但仍然要经历无数的虐(P1级故障、投诉、争吵与被尊重)、无数的跨越式成长(数据库、运维、分布式技术...),成功没有捷径......



十一的北京秋高气爽,坐在地铁上写下这些故事,愿与你产生共鸣,与我总结后,继续战斗。

起于DBA

契机

诚实讲,我一直不清楚自己想做什么。于是,研究生临近毕业,麻木游离在各大公司的面试中。感谢和启荣 (刘启荣,现京东金融运维副总监)的相遇,让我开启了DBA的航程。启荣老大是个高情商、接地气的老板。我是第一次遇到面试谈人生问题,不告诉面试结果,一言不合就让我来听他讲课的面试官。当时他讲到的数据库与DBA的世界,以及那种自由又充满生机的互联网交流氛围,让我意识到有些人是与众不同的,有些地方是心之所向的。

日常

DBA的工作是严谨、有趣、辛苦的。一个初出茅庐的丫头,突然闯入一个全新数据库世界,又空降在京东这样量级的平台上,所谓的数据库技术、业务架构、系统的视野与互联网的眼界,就像山呼海啸一样奔腾而来,以至于产生了一种真的扛不住的无力感。但是,为我抉择的负责,为大家给予我信任的回报,持有这样心理的我,开始疯狂地像海绵一样吸收着这海洋般的知识,并不断提升着自己的认知。一整年的周末都躲到公司无人的会议室啃着《MySQL技术内幕:innodb存储引擎》、《高性能MySQL》、工作笔记、Shell编程技术,去培养自己的数据库知识及运维技能。因为我知道,当一个人没有足够实力的时候,只有时间和努力才能让她蜕变,以及获得别人的尊重。
作为组里唯一的妹子,感谢他们只是把我当汉子用,而不是当牲口用。
 
很多夜间运维的活儿尽量不给我。不过我真心觉得,只有这些真刀真枪的工作才能见识真正的战场,只有这样的战场才能让战士迅速成长。所以我投入了这无尽的战斗中,看到过凌晨3点的月亮,也哭诉过整夜迁移无尽头的折磨和无奈。而第一次失误导致用户收到乱码短息、被投诉造成P1级别(最高P0)故障时,也终于知道什么叫电话被领导打爆。一个人自责地在冬天回龙观的大街上嚎啕大哭,不知所措,着急地想抽自己两嘴巴子!现在觉得,那场景非常类似电影里小姑娘被男朋友甩了的经典剧情。不过那种疼到骨子里的自责确实让我真切地感受到生产环境的重要性,以及DBA工作的极尽严谨,我输入的一条命令背后是千千万万与业务紧密相关的数据,是无数用户的使用与体验。好吧,更是我甩给老板的锅和整个部门战友们的KPI。感谢那一次次让我头破血流的南墙,因为它让我知道了做事的深浅与尺度,让我拥有了能够面对更大挑战的勇气和力量。

总结

这段时间让我成长为一个合格的DBA。除了掌握数据库知识体系及周围生态外,还积累了大规模数据库运维经验。此外,所谓的风险意识、快狠准和粗中有细的运维意识也开始慢慢建立。但我觉得有两个能力非常重要,那就是:作为下属对上级命令的绝对执行力,以及面对严苛环境的抗击打能力。

承于DevOps

契机
人工运维以及脚本运维已经无法满足激增的业务发展,对数据库运维要求出现多元化、多维度的需求。同时运维的边际效益日益凸显,于是整个运维部门开始向DevOps转变。而当时负责数据库工单系统自动化平台建设的前辈突然被借调,于是该项目基本停滞。那时,我心里小恶魔非常想让我主动请缨负责这个项目,但当时的我并没有多少项目开发经验,人微言轻。可是,依据当时部门发展风向,自动化是大势所趋,只有顺势而为,才能有机会获得大家的认可和肯定,此时若主动出击,便有可能危中求机。再静心分析,前期积累的大规模数据库运维经验,可以让我理解这个项目的核心需求和期望,而曾经和研发及运维同事的交往基础、妹子独有的沟通优势又能推动项目推广。于是在得到欢哥(周欢,现网联数据库负责人)鼓励和授权后,开始动手!正如那句话所说:并不是所有的比赛,都能允许你做好十足的准备。面对危机,有时候尝试放手一搏,可能会带来希望和转机。

日常

没有Python经验,我就死啃Python开发,并换工位到组里Python大神旁边,方便随时请教。大半年的时间基本处于封闭开发状态,实行小步迭代的敏捷开发方针。在地铁上分析需求、设计方案、构思代码。在公司跟老板明确需求、开发功能、解决Bug。周末则利用业务低谷,进行上线测试。此外,还要跨部门合作和推广。刚开始的时候,工作推动很难有进展。因为别人根本不听你说什么,任你焦急、愤怒,全都无济于事。越是想着如何说服对方,越只能得到升级版的争吵。后来渐渐意识到,不要尝试与他人争对错,因为根本没有对错。如何通过协商、退让达到双方共赢、双方满意的目的才是王道。同时,启荣哥告诉我互联网的三不要精神:不要钱、不要脸、不要命,我觉得很有道理。在一次次的沟通和打脸后,信任逐渐被建立起来了。对方尊重你,是尊重你的付出,尊重你的能力,尊重双方的利益。最终,数据库工单平均执行效率提高70%、非法工单拦截率为30%、工单正确执行率保持在99.99%的报告终于为这大半年的付出画上圆满的句号。

总结

这个阶段依据部门风向,从运维DBA转向数据库运维开发DBA,积累了项目开发经验,未卜先知的情况下,竟为后续转行打下基础。此外,跨部门沟通合作、推广也让我懂得了要学会选择和衡量、共赢与合作,并保持乐观平和的心态。

转于JAVA

契机

数据库自动化工单平台已取代人肉工单操作,发展趋于平稳,同时深感自己的圈子和视界太狭隘。就在这样浑水摸鱼的时候,启荣老板给我介绍了新的男神:张亮,原当当架构部负责人,热爱开源,怀揣着将Sharding-Sphere打造为业界一流的金融级开源分布式数据库中间件的梦想加入了京东金融。可能考虑到我DBA的知识积累和研究生英语水平,当然最重要的是我不要脸的人美心善。
 
所以,让我协助亮哥将Sharding-Sphere官档翻译成英文。开源、数据库中间件、微服务、分布式事务、数据库治理……一大堆新鲜的名词冲进我贫困的大脑,打开了更广阔世界的天窗,并对我产生强大吸引力。此外,当时平滑的成长曲线让我迫切想打开自己狭隘视野的枷锁。于是,我开始仔细分析现状:开源、分布式、微服务、Java开发等对我来说又是个全新领域,转行可能将抛弃部分积累的数据库行业积淀。不过,这些数据库运维经验,对全是Java开发以及架构出身的团队来讲,未尝不是一种互补的优势。同时,前期数据库自动化工单平台项目也能帮我做跨行的平滑过渡。思及此时,我终于跟启荣探讨了人生问题和情感问题,并转向了金融级开源分布式数据库中间件Sharding-Sphere的开发。

日常

前期对官档的翻译工作,让我对Sharding-Sphere的核心功能,产品定位有了比较全面的理论层面认识。于是开始从源码层面入手,修改小的Bug,编写测试用例,到后来负责一整块的内核功能。在亮哥的指导下不断深入Sharding-Sphere,并对编码又了新的理解。它绝对不是故步自封,随心所欲地编写,而是存在规则和逻辑的简洁优雅编码之道以及重构迭代的价值意义。函数与函数之间的空行、段首多少空格、变量名字命名这些在常人眼里无足轻重的事情都会被亮哥格外重视,他对设计和代码120%的要求让我对细节有了100%的注重。从GitHub代码提交记录可以看出整个变化的步伐,从平缓的小步改造,到后期的模块开发(见下图)。
 
坐在工位上看似发呆地进行思考设计、逻辑整理。获得对整套业务逻辑的深刻理解,便觉得酣畅淋漓;通过DBA视觉和亮哥交流需求,得到新的启示和想法,便觉得颇有意义;而更多时候是一个人进入所谓的”心流”,将脑子里勾画出架构用代码去渐渐实现,那种忘记周遭,沉迷于代码与音乐世界,又让人感觉时光飞逝。当真正想做一件事情、对其充满兴趣的时候,才会知道什么叫乐此不疲。

 

 
此外,也开始逐渐走向台前,对外分享,建立影响力。通过认识大牛,同样开阔了自己的眼界并培养行业灵敏度。京东在线平台的分享扩大了Sharding-Sphere内部影响力;参加火币、饿了么、贝壳金服的交流分享则了解大家对数据库中间件的认识和需求;担任2018 ODF数据库大会的主持,重新看到数据库的行业发展;担任ServiceComb交流活动的主持,则能感受到开源的力量。一次次活动经验,也是一次次小小的积淀,慢慢让自己懂得了分享的价值,并建立对外影响力。感谢各位大牛的提携之恩,也感谢启荣总,亮哥给予的一次次分享交流的机会。其实,每个人都有自己独特的优势,多多分析总结,因地制宜,合理运用,才有可能百尺竿头更进一步。

 

部分分享照片
 
总结

这一阶段对内低头磨炼开发之道以及学习架构重构,并了解开源、分布式、中间件的架构体系。对外积极交流分享,培养行业影响力,锻炼表达能力。对时间自由掌控,对事情要求极致。

合于?

当下,仍需不断对所在行业的宽度、深度进行积累。在数据库中间件、DataBase Mesh、开源方面投入主要精力。在亮哥带领下将Sharding-Sphere做到理想高度(P.欢迎关注https://github.com/sharding-sphere!)。同时,也希望自己多思考,多磨砺下品性,把控前进方向,明确目标。然而现实很骨干,浅薄的我还在探索之中。对于未来,如果你的高度不足以支撑你当下的选择,不如借鉴下大牛和前辈的思考,站的在那个高度的他们的指点或许会给你打开新的天窗。

一路成长,总结其原因,我觉得主要有三大点。第一,感谢我上面提到的各位老板能给予我机会、能放权让我去做事情、能宽容我的傲慢与偏见;第二,感谢京东的大平台,能让我结识到这些大牛前辈,能让我看到不断变化进步的世界,并推动我不得不去自我提升;第三,则是感谢自己,懂得思考并及时按照发展调节方向,唯有全力以赴、放手一搏才能危中求机。

我会在这个领域走多远多高,我能拥怎样的生活, 能写什么样的故事,又能和哪些人一路相伴?对于未来,现在的我也同样没有答案。只是,曾经一步步扎扎实实的探索确实让我有了更坚强的意志和勇气去面对必须要面对的现实。愿这一路的小小故事,能给正在阅读的你一些思考和想法,并引起你的共鸣。倘若如此,也不枉这个十一假期一次次的码字和修改,也不枉右军老师的邀请。我相信每个人都有自己的故事,每个人都是独特的你!
 
 

作者介绍:
潘娟,京东金融高级DBA,主要负责京东金融生产数据库运维及数据库平台、中间件开发工作。多次参与京东金融6.18、11.11大促活动的护航工作。曾负责京东金融数据库自动化平台设计与开发项目,现专注于Sharding-Sphere分布式数据库中间件开发。乐于在数据库、自动化、分布式、中间件等相关领域进行学习和探索。


 本文来源:21CTO 社区战略合作伙伴:技术琐话(TheoryPrctice)。

评论