大家好,欢迎来到IT知识分享网。
工程师最重要的工作就是写代码。针对代码管理,Facebook做了很多工具,这里解释部分工具供参考。Facebook的代码库管理是通过一种叫GIT的开源管理系统,为此开发了一些工具来集成GIT。比如,一个工具是在提交代码之前自动的检测所修改的代码是否符合公司代码规范,如果不符合,该工具会自动警告,但把决定权交给工程师。Facebook提倡对修改的代码写测试案例,在代码提交时会自动检测是否存在覆盖这些修改的测试案例,如果没有,会警告,但工程师仍然可以强制提交。但这种情况下代码若出错给网站带来巨大危害的话,工程师可能会被严厉批评,因为这本是可以避免的错误,是人性的狂傲忽视了工具的提醒。在代码审查(Code Review)方面,Facebook做了一个可视化的工具,现已开源,叫Phabricator [1];工程师可以在页面上非常方便的针对每一段(单行或者多行)代码进行交互讨论;负责审查的工程师可以接受代码改变,可以提出疑问要求原作者继续修改,可以提出自己不适合以推出该代码审查,等等。只有代码被明确接受之后才能被工程师提交到服务器端的代码库,这一点集成到提交工具中强制执行。基本理念就是凡是被很多人不断重复的好的习惯,要将其自动化,绑定到工具之中。以“Don’t make me think”的方式来推广好的practice。
Facebook的代码发布是灰度发布,所以做了一个方便设计灰度发布的工具。在这个工具中,工程师和产品经理(也可以授权给其他非研发人员)可以设计新产品发布的目标人群特点(比如年龄,性别,地域,教育,等等方面做出限制)及发布的人群比例(在0-100%之间自由调整),所有的改变不需要代码的改变,只需要在工具页面上点击鼠标即可,让灰度发布变得很轻松。
发布的过程由一个利用点对点(BitTorrent)算法实现的工具进行多线程同时发布,对于更新几十万台机器只需要几十分钟。由于是不间断的发布,对公众的服务不可以停,所以Facebook会将一部分的机器从公众服务状态中拿下来,更新之后再放回,然后继续下一批,知道所有机器都被更新。这样就可以保证在任意状态都有足够多的机器来支持用户访问。整个工程都是通过工具来自动实现。而监控这个发布工程的进展,也有一个工具检测并且将其进度可视化,你可以很方便的看到哪些服务器更新了,现在正在更新哪些服务器,整个网站的进度是百分之几,等等。
发布之后的数据监测更是重点。 Facebook做了很多工具让数据监测变得容易。数据收集只要1-2行代码即可完成,数据的整理分类存储皆在后台的上万台服务器上自动完成,数据的可视化报表只需要通过一个页面工具点点鼠标设置即可即时生成,而不需要任何代码;数据波动的自动警报也可以设置,可以自动发邮件发短信,可以要求24小时全球轮班的站点稳定工程部门(Site Reliability Engineering)按照你既定的反应方案,直到最后打电话给你,直接把你从床上拽起来。在4年半内这样的事件发生在我身上至少有10次了。
还有一种工具是人为的,我们组经常用。就是把最最重要的目标及相关的任务,目标日期,负责人等性息写到白板上挂到我们最近的墙。每天一抬头就可以看到,每次开会都会路过,时刻提醒我们最最重要的事情是什么。这种工具对我们组非常有效。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/174329.html