2019年10月26日,由Testin主办的第二届NCTS中国云测试行业峰会在京召开。以“AI+未来”为主题,汇聚国内外测试领域知名专家学者、领先企业决策者、高层技术管理者、媒体从业者等,共话高端云测试技术,帮助测试从业者了解最前沿的行业趋势。以及最新的行业惯例。会上,京东零售技术与数据中心测试架构师任光印做了主题演讲《文化建设践行DevOps-Etsy持续交付之道》。任光印指出,“在Etsy,工程团队实施了各种文化建设,帮助员工成长,帮助公司成功,主要体现在四个方面:放权与信任;集体责任;持续学习与改进;相互监督与合作。一起走。”以下为任光印演讲实录:大家好,我是京东零售的任光印。听了陆依依先生的发言,我略微有些不以为然。陆依依先生刚才说了,我们的检测行业这十年没有变。其实我们还是能感受到很多明显的变化。至少,十年前我在考试的时候,每天五点三十分就可以下班了,不是吗?那我们几点了?技术变了,商业也变了。那么,我们的能力和效率跟上了吗?今天要和大家分享的话题是《文化建设践行DevOps-Etsy持续交付之道》。说到DevOps,我们往往会想到亚马逊、微软、谷歌、Netflix、AirBnb等先行者,Etsy其实就是先行者之一。可能大家都不知道,可能是因为这家公司的商业模式比较专业,所以很少有人知道。这份分析报告是我和我的朋友们写的。线下,我经常和朋友做一些相应的案例分析活动,学习这些公司的好案例,看到转型的机会和成长之路。不断学习,提高认识。今天要讲的内容分为5个部分,公司介绍,工程文化,商业模式,技术变革,质量保证,是一个2-3小时的案例分析报告,因为今天的分享时间只有40分钟,来tothescene主要针对测试领域的朋友。为此,我调整了讲述的顺序,以传递大家最关心的内容。给大家推荐一本书《Effective DevOps》,这本书的作者之一来自Etsy。首先跟大家分享一下“质量保证”这个话题。在Etsy,质量保证团队就是这样,鼓励大家不断学习、改进和交流。全公司也非常重视工作与生活的平衡,鼓励大家高效工作。公司一来不提倡加班,二来提倡更专注于工作,专注于最应该做的事情。通过不断学习,提高测试技能,改进测试策略,根据项目情况分配资源,质量团队通常包括PQ分析、QA负责人、项目经理、测试开发等角色。这就像陆依依老师刚才说的,现在是一个趋势,测试开发工程师的队伍在逐渐壮大。在Etsy中,测试了哪些内容?我们常见的回归测试,开发阶段的测试,以及针对测试范围、覆盖率、测试结果趋势等数据的一些测试活动,我们身边会有更多的外包资源,这些工作和我们现在做的类似,但是Etsy没有做这些事情,Etsy也没有做这样的测试。那你可能会问,这些东西跟我们很像,我们也觉得很正常,为什么Etsy没有做呢?那么,您如何确保Etsy的质量?在Etsy中,新功能和新产品是测试的重点,会有相应的探索性测试、集成测试、跨平台兼容性测试,特别关注那些对用户有影响的功能和变化。公司商业模式的核心是与社区紧密联系,同时及时响应和解决问题。不同角色的定义和培训也是公司非常重要的投资。让专业的人做专业的事,把事情做对,减少返工,这本身就是对质量的一层保障。从需求或者一个idea的产生,到最后的上线运行,每一个环节都会影响到最后的质量,也就是说每一个环节的每一个角色,这个角色的专业程度,都会直接影响到软件。,这个服务在这个生命周期中交付给下游的最终质量。当然,有一些最佳实践和一些良好的学习和成长,以及一些改进。价值驱动、目标的一致性和与社区的紧密联系,这三个部分也是我们团队工作的核心要素。让我们看看这种文化如何在工作中体现出来。在生产环境中,我们也会做大量的测试,排除部署项目中可能出现的问题。正常情况下,我们已经做了很多测试,部署到生产后应该不会再有问题了,但现实情况是每个模块或者变更都测试通过了,集成到一起就出问题了。无责无惧的文化,分析问题,找出根源,不重复同样的问题是我们的宗旨,不推卸责任。协作文化,高效反馈,每个员工的职业发展通道,激励和奖励机制,员工发挥各自能力的多种途径,自主性,高效互助。为什么说这样的质量保证在这家公司是可行的呢?良好的持续集成和持续部署流程,基于用户研究制作原型,在服务或产品上线时进行A/B测试,与用户持续沟通确认并收集反馈,通过大量实验证明我们是否做到了这一点这样的效果,支持实践,“重用所有有效的解决方案”,并通过信息传递降低试错成本。再说说一些公司的“那些文化”。说到文化,人们有时会想什么是文化?什么是好的文化?什么是坏文化?或者我们也可以理解为每个人的习惯,或者说是每个人都接受的习惯。这个习惯可能会帮助公司成长,或者帮助公司招到更多的人才。当然,一些不良文化也会导致人员流失或阻碍技术发展。工程师文化,简而言之,我们可以理解为自由和效率;如果我们不自由,至少,我们在做事的时候会限制我们的思维,如果不是为了效率的提升,那么我们的创新可能就很难不接地气,那我们为什么要做呢?自由度和效率被进一步细分。比如自由,我是一个自我驱动的人,比如灵活的工作时间和工作地点。有一些关于自我驱动的讨论,包括工程师文化。当我觉得这件事情有价值或者被大家认可的时候,我就处于一种自我驱动的模式,会努力把它做的更好。但是却给我提出了各种要求,“一定要996,回到家不能坐在这里苦干”。这时候不但没有叫我努力,反而影响了我的自驾。工作效率体现在哪里?我曾经工作过的一个公司,老板说:“放假不用找我请示,请示我就批了,所以不用批,但是你要发一个电子邮件让利益相关者知道。同时,信任是一种契约。不要破坏。”“CodeasCraft”是公司的核心文化。Etsy的目标是让那些工匠们,通过他的手工作品,为这些工匠们提供一个交流和手工艺品交易的环境。我们工程师也是,我们创造了这个工程师,我们用什么东西来贯穿我们的生活呢?该公司将“代码定义为工艺”。“Codeascraft”也是该公司的一项活动。这是每半个月举行一次的活动。本次活动将邀请业内或公司内部的一些大咖进行演讲。通过这个过程,我们会让整个公司提高,去交流,如果有好的方案,大家也可以有一些更深层次的合作等等。我们今天活动的意义也是一样的。让我们来看看这家公司请来的大咖们。在最右边的照片中,穿着格子衬衫的是这家公司的首席执行官查德迪克森。Arrival,为Etsy构建了这一系列的工程文化。“问题分析不责怪”的文化,我们很多公司都在做各种事情,比如说线上出了问题,我们要review,或者是出了大事故,我们要分析。我们在分析问题的时候,很容易牵扯到责任,我们分析问题本身,我们想知道这是怎么发生的,而不应该关注他是谁,为什么做这样的事情。我们在分析的时候,正是通过这种文化的实践,才能更好地挖掘问题本身是如何产生的。为什么我们不关注“谁造成了这样的问题”?因为问题本身,可能是系统设计的问题,也可能是各种深层次的问题,但是这个人遇到过这个问题。如果他没有遇到这个问题,那可能是你自己遇到了这个问题。因此,公司一直提倡不责怪问题分析。公司还有一个开源系统,就是专门做这件事的。目的是防止错误发生。我可以接受,但我不接受。再次出现重复问题。为了解决这个问题,公司真的做了一款三袖毛衣。其实在我们的印象中,我再笨,也绝对不会做出三袖的毛衣,但是他会把三袖的毛衣奖励给一些犯错的员工,犯错的员工呢?也许员工的错误是最令人惊讶的错误,而不是说这个人是最糟糕的错误。“工程轮岗”文化,2010年初,工程轮岗项目正值一年中的某个特定时间,运维可能会很累。这个时候运维人手不够,所以公司推出了这样一个活动,大家要学会做运维。运维很忙的时候,大家可以帮帮忙。后来公司发现,这样的活动不仅是在运维层面,我们所有的工程师岗位都可以做这样的事情。通过这次活动,我们可以让全公司和大家对他人的工作有更好的同理心,更好的理解。从整体上提高大家的合作意识和互助意识。最后,关于质量文化,这家公司正如陆老师所说,单元测试和代码测试覆盖率非常重要。当我们看到代码覆盖率的时候,大家都想到了一些东西,比如做大量的单元测试。我的报道很好,但是如果项目没有单元测试会怎样?不仅仅是缺少单元测试。如果不做单元测试,你会发现有些代码,甚至有些函数有几十行甚至上百行。事实上,这样的项目的可测试性很差。我们使用单元测试来让大家做更好的可测试性。这家公司多元化且包容。多元化是因为公司运营着一个社区,里面有各种各样的人,各种各样的情况都会发生。有不同的情况,比如不同性别的人,不同肤色的人,不同地域的人。通过公司包容多元的团队,营造更友善的环境,鼓励大家的创新与协作,交流一些想法。公司的六名管理人员中只有两名是男性。我们现在进入第3章,简要介绍公司。左图是Etsy的创始人RobCarlin,右图是同样是灵魂人物的ChadDixon。公司的创业宣言:“为热爱手工制品的人提供交易交流的场所。”如图所示,这些是公司的CEO们。核心灵魂人物ChadDixon于2008年加入公司担任CTO,并于2011年成为公司的CEO。在他任职期间,公司也发生了很大的变化,主要是在工程方面。2017年,西尔弗曼上台。公司诞生于Rob阶段,能力提升于ChadDixon阶段。年富力强之时,身怀绝技,却不知如何施展。这时,西尔弗曼来了。自从他上任以来,整个公司的股价一直一路攀升,直到现在。最后,让我告诉你公司工程文化的演变。公司主要有四大项目:1.去中心化与信任;2.集体责任;3、持续学习;4、相互监督,同行。其工程演变历程,公司成立于2005年6月18日,发展到2008年,公司逐渐从4人发展到30-50人。这时候也出现了沟通不畅,各部门各自为政的情况。在这样的情况下,2008年,公司觉得这样做还不够,管理层做出了调整。两位高管MariaThomas和ChadDixon负责运营,另一位负责工程。从那时起,工程师文化的演进,时不时地开始了他们的DevOps之旅。从每天的站会开始,先解决沟通问题,再建立良好的协作机制。进化路径分为五个部分。比如当时网站的稳定性不够好,所以做了一些改进,引入了持续部署。当时公司的一些不好的技术也被淘汰了,包括数据库层面的改造。关于公司的工具文化,简而言之,工具是我们很多文化和价值观的体现。工具只是一部分,只是一个窗口。通过这些工具的构建,可以确定一些不确定的事情。大家不断优化,迭代工具的情况。其实我们只是说了第一点。归根结底,为什么质量保证的方式可以这么好?这个是核心,就是公司的持续集成,持续发布,持续部署。事实上,它来自一个阶段到另一个阶段。解决了我们产品的快速创新,最重要的是解决了平均恢复时间,因为大家关注。在工程能力方面,MTTR是一个非常重要的指标。大家也可以看到这张图,它是一个连续的流水线,从最初的开发集成到最后的测试阶段,再到最后的上线,也就是说每个阶段往下游走的时候,任何一个环节都不会出现问题Move顺利进行下一步。也就是很好的告诉我们这个情况很好。最后看到的东西都是经过检验的,质量是达标的。当我们有很多流水线和很多任务做这个的时候是没有问题的,为什么最后制作的时候出问题了呢?这是否意味着我没有进行单元测试?还是我的覆盖面不够?也许是数据问题,也许是配置问题,是测试链路容量负载不匹配还是集成环境和生产环境不匹配导致的?如何解决这样的问题,如果我们努力去测试和改进,是不是就可以避免这样的问题呢?显然是不可避免的。既然无法避免,那我们的质量怎么保证呢?首先提到两个概念,一个是刚才提到的MTTR,一个是MTTD。我们上线之后,还是要做很多监控的工作,像每个公司都有一些预警/告警,就是说最后一个绿色的部分,绿色的部分上线之后要做的就是提高我们的MTTD,也就是说,当出现问题时,我会第一时间得到通知,以便我在第一时间采取相应的措施。如果我们一个月要部署的代码行数是50000行,如果按照之前的模式,不引入持续部署机制,可能开发了整整一个月,50000行代码就上线了最后在一起。最坏的情况是没有问题,最坏的情况是有问题。一旦出现问题,我们一次性交付50000行代码,修复时间会很长。如果我们用流水线的方式来做,拆掉很多很多的流水线去发布,这个时候我们可能感知到错误的可能性非常高,每次发布可能都是几十行,至少不会超过一百行代码,这样,一旦出现问题,很快就会知道问题,很快就能解决,很快迭代发布,问题就没有了。也就是说,我们的MTTR问题。这家公司每次发布部署很多东西,而且部署频率很低,大概一周两次,现在一天部署几十次甚至更多。对于大家来说,互联网行业一天50个deployment可能还是太少了。但是对于这家公司来说,这几年变化非常快,根据公司现在工程文化的发展不断学习。我年纪大了,我相信它仍然会做得很好。公司整个架构的演变是从2007年到2011年,即公司的主要开发语言仍然是PHP。随着人员规模的变化,逐渐沉淀出相应的工程师文化,无论是技术还是文化都在慢慢进化。最后是《运营模式》,会后大家一起看,因为今天时间不多,所以简单给大家讲一下。先简单介绍一下Etsy是做什么的。它是一家在线电子商务公司。它是一个标签。它的类别相对有限。本平台只售卖手工制品,不支持批量。开店必先做工匠,公司会审核。一旦他发现你以手工艺人的身份在这里开了一家店,卖的是中国义乌的产品,那店可能就关门了。批量买卖是不允许的,可能会涉及到很多方面,而且本站70%以上的卖家和买家都是女性用户,女生可能更在意唯一性等。最近的一些热点,关于这家公司的新闻还是蛮多的。公司做的很多事情不一定能充分保护买卖双方的利益。很多规则可能还是来自于整个社区的反馈。我也问了公司的收益率和市盈率,包括美股的数据。公司的市盈率似乎仍存在泡沫。感谢大家今天能来到这里参与这次分享,也欢迎大家多多交流,互相学习,共同成长!公众号文章:https://mp.weixin.qq.com/s/u0j-QNUdG8mcEqH33fhc4g
