O记数据库内部开发人员人员吐槽代码乱!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了O记数据库内部开发人员人员吐槽代码乱!相关的知识,希望对你有一定的参考价值。
O记数据库内部开发人员人员吐槽代码乱!
在ycombinator上看到O记码农吐槽O记数据库代码一团糟,个人认为有点意思。以下是O记数据库的情况。
O记数据库12.2 c接近2500万行C语言代码。
随便改一行代码就让1000+测试用例fail。好几代的程序员都在这个代码库上工作,当然大家deadline不同,所以也都在这一大堆辣鸡上添一些新辣鸡。
代码逻辑,内存管理,上下文切换非常复杂,由上千个flag控制。即使要理解一个宏的作用,也需要一到两天时间。
程序员经常需要理解20多个不同的flag值及其影响,才能预测代码在不同情况下的行为。猛的时候,需要理解100多个flag,才能做到这一点。
O记数据库之所以还活着并能持续运行的原因主要是有数百万的测试用例。
O记数据库开发人员生存环境如下:
- 开始解一个新bug
- 花两周时间理解20多个不同的flag如何共同导致这个bug
- 为新场景增加新flag,并增加新代码解决问题
- 提交代码,100-200台机器会编译代码,得到新数据库,然后运行测试
- 回家,明天开始做别的,运行测试需要20-30小时
- 重复以上过程,直到最终所有flag组合都正常工作了
- 总有一天0测试失败
- 为你的新代码增加100+的测试代码,为另一个运气不好的码农修你的bug做好准备
- 提交最后一轮测试,然后提交review。review本身可能需要等待2个星期到2个月。转到下一个bug继续工作。
- 过一段时间后(2个星期到2个月),代码会被合并到主分支
以上就是O记码农的生存环境。想像一下,开发新功能有多恐怖,开发一个小的新功能需要半年到2年(例如添加AD认证到认证模式)。事实上O能够工作就是奇迹了。
原帖评论区有人把锅扔给三哥,说都是三哥代码写的不好(不知读者是否同意,我认为三哥有责任,但是也不是所有的锅都是三哥的)。
另外也有人说,ASML也是这样的,O记还是有自动化测试,ASML啥自动化测试都没有。(译者:ASML是世界上最大的光刻机生产商,Intel,三星,台积电都是使用其光刻机,市场份额超过90%。)
ASML可能有1-2台用于测试的机器。这是即将发货但是尚未完成组装的机器,这些机器可以足够完成测试。ASML的c语言代码也有2000多万行,如果当天完成构建,那么当天晚上你的团队会有15分钟的时间测试功能,如果不幸没有完成,那么明天再来吧。
在ASML,你如果想要修复bug,首先需要在word文档中对其进行描述。然后提交给各种风险评估经理。他们会评估bug fix是否会在其他地方引起问题。然而没有自动测试,所以他们是以自己的经验猜测bug fix是否太冒险。如果他们觉得风险不大,那么你就可以在6个产品系列中做bug fix。完全没有自动测试。
没有别的公司能制造出ASML的光刻机,然而ASML的软件还处于史前时代。(译者:ASML在上个世纪90年代,干掉了佳能/尼康光刻机,感觉后两者的光刻机代码更是一坨屎。)
从上文反馈的ASML光刻机和O记数据库的情况来看,我们人类计算机技术的基础不太牢靠。
几千万行代码不论什么语言,应该都挺难在上面做开发的。一般的公司,几十万行Java代码也未必能很好的维护了。我初步看了下几个著名的开源项目,Linux内核现在大概是2000+万行代码,mysql 5.6有154万行,PostgreSQL有97万行代码,Hadoop有291万行代码,Kafka有34万行代码,Spark有40万行代码,从代码量看除了Linux内核之外,其他跟O记数据库都不是一个数量级的,而代码质量因为O记不开源,很难作出评价。对于商业产品有deadline压力,如何才能保证快速迭代过程中保证代码质量?
- 自动化测试(包括单元测试,集成测试)
- 人工测试
- 代码review
- 系统架构
- 良好的编码习惯
- SAAS产品与生俱来的优势(指灰度发布/随时回滚)
如果你觉得以上都有,那么各个选项起的作用是多大?
可能我们大部分人都没有维护过2000万行代码的产品,大家认为又该如何更好的维护这种代码规模的产品?
- 模块化
- 微服务
- 更好的测试环境
关于基础软件测试,我还想说一句,看完原文我去看了tidb的测试用例,初步统计也有1000万+的自动测试用例(当然一位光头大叔也透露买测试机的钱都花了上千万了,
并且还说这是小钱),个人以为从测试覆盖度来说,已经达到了一个稳定商业产品的要求。
本文部分内容译自ycombinator,并非是对O记的批判,相反个人以为O记做的还不错,国内很多公司未必能达到这个水平。本文主旨在讨论超大规模的代码库情况下,怎么保证产品质量和迭代速度,相信每个人都会有自己的看法。
为了方便大家观看贴图:
转载本文请注明出处,技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。
活动预告:
11 月 23 ~ 24 日,GIAC 全球互联网架构大会将于上海举行。GIAC 是高可用架构技术社区推出的面向架构师、技术负责人及高端技术从业人员的技术架构大会。今年的 GIAC 已经有微软,腾讯、阿里巴巴、蚂蚁金服,华为,科大讯飞、新浪微博、京东、七牛、美团点评、饿了么,才云,格灵深瞳,Databricks,等公司专家出席。本周购买可享门票88折优惠,高可用架构会员低至6折。
本期 GIAC 大会上,质量保障/DevOps/数据库 部分精彩的议题如下:
参加 GIAC,盘点2018最新技术。点击“阅读原文”了解大会更多详情。
以上是关于O记数据库内部开发人员人员吐槽代码乱!的主要内容,如果未能解决你的问题,请参考以下文章