程序员节,网易杭研四天王揭秘如何炼成“码神”
熟悉网易发展逻辑的人知道,这是一家不追逐风口、注重发展质量的公司,上游技术、全球化和信息消费升级,被掌舵者视为未来数字经济值得关注的三个领域,公司在教育、文娱、物质/信息消费升级及全球化发展等方面早有布局,而技术创新,一直是公司发展的基础。
2019年,中台在数字经济领域受到了空前的关注,作为集团的“创新中台”,网易杭州研究院趁势推出了支持在线业务中台和数据中台建设的技术产品,网易轻舟微服务平台和网易猛犸全链路数据中台。这些产品已经成功应用于网易内部的严选、音乐、教育、传媒等业务,以及德邦快递、工商银行、名创优品、温氏股份等第三方企业。杭研一线技术研发人员已经为中台支撑技术奋战多年,本文邀请四位已经封神的研发人员现身说法,揭秘他们如何支撑中台建设,拥抱数字未来,同时完成个人的封神大业。
冯常健:相信云原生,降维打击一切难题
网易杭研云计算技术部架构师 冯常健
信仰:云原生
战绩:DevOps平台,Serverless容器,轻舟微服务
绝招:升维思路
2012年,对服务端技术情有独钟的冯常健迈出校门,遇上了开始组队研发私有云的网易杭研,他选择加入其中,开始了分布式架构的职业人生。冯常健认为,这份工作不涉及太多具体业务的开发,是个人能力提升和职业发展的最佳选择。
而后7年,冯常健先后负责或参与了云管平台,云消息队列,自动化部署系统,Serverless容器云,以及轻舟微服务平台等一系列产品的研发。成就是甜蜜的,比如自动化部署系统成为网易内部统一的DevOps平台,覆盖了网易内部几乎所有Java应用的部署(也支持非Java应用);Serverless容器帮助业务方实现280%的部署效率提升,相比友商相同形态产品的发布早3年;率先解决Service Mesh(服务网格)落地的性能等问题,让网易严选Service Mesh更顺畅地升级。这也让冯常健更加相信云原生技术的潜力。事实上,在当前业务中台建设的讨论中,云原生、微服务被列为核心支撑技术。
当然,技术研发总会伴随着一些痛苦,比如做容器的时候,编排工具究竟如何选择。幸运的是,在杭研公技体系下,冯常健得以将痛苦转化为成长的养分。其一,杭研并行支撑多条业务线,决策者坚持以业务为导向,以应用为中心,在关键技术路线上很少看走眼,如Kubernetes。其二,技术领导者非常开阔的技术视野,让冯常健获得了很多的机会去做业界前沿的基础设施和服务端架构技术研究,并从中积累经验。“从2014年开始做容器和Kubernetes,2017年跟进Istio和Envoy社区,探索Service Mesh架构,这几年云原生技术的浸染对我个人的技术提升是决定性的,让我受益匪浅。”冯常健回忆说。
对于下一阶段,冯常健希望通过将一些云原生技术成果向集团内外输出,促进网易集团技术栈向云原生方向升级,并向业界输出网易技术和经验,实现价值最大化。比如在容器化方面,帮助业务方重构基于容器的研发运维流程,提升应用交付效率,降低IT成本,形成应用容器化的集团标准化;在Service Mesh架构方面打造严选等落地案例,通过将微服务架构支撑能力下沉,减少业务开发的技术关注点,更专注业务,提升服务研发效率,帮助集团业务向下一代微服务化架构转型;在Serverless方面做一些探索,寻找前端、大数据业务等场景进行落地尝试,等等。
可以预见,云原生技术推广的过程不会一帆风顺。不过,已经身经百战的冯常健相信自己和身后的团队可以应对各种挑战,他也总结出了解决难题的独门技巧:采用升维的思路,对难题进行“降维打击”,这些思路通常来自于流行开源技术背后的理念。比如API的设计,采用命令式的API设计方法,对故障重试、幂等保证,异常分支等比较难处理,如果转变思路采用声明式API,将边缘触发转化为水平触发,通过一个Operator组件去调谐状态,很多传统命令式设计方法中存在的难题自然迎刃而解了。再比如传统服务端框架解决问题通常是提供SDK或者侵入业务代码,这种模式对研发的复杂度会随着服务规模、框架种类、开发人数等因素线性甚至指数级上升,而采用一种能力下沉的服务网格思路,把框架能力、SDK均下沉到独立组件里,实现全链路压测、中间件升级、服务治理等技术场景就有了常数复杂度的可能性。
徐城利:不要为了新技术而新技术
网易杭研云计算技术部架构师 徐城利
信仰:软件网络+硬件优化
战绩:VPC
绝招:积累,积累,积累
和不少80后在文曲星的启蒙下走上程序员之路一样,徐城利也是这样开始了他的编程故事。在初中时代,他看见同学在文曲星上玩用BASIC写的小游戏,感觉很新鲜,于是也尝试自己去写。现在回忆,文曲星上的程序很简单、原始,但却为他打开了一扇大门。从那以后,用代码去构筑世界、影响世界的想法在徐城利的心底萌芽,不断生长。
怀着这样的理想,徐城利在毕业后加入了网易杭研。在他看来,杭研作为网易公司的孵化器,能够接触到很多前沿的新技术、新想法、新项目,并且这些新东西能在公司各个互联网业务中得到实践应用,这让他有更多的机会重温少年时的那种感觉。其次,杭研的氛围对工程师非常友好,从上到下都是一种开放和自由的态度,不论是新人还是有经验的,都被鼓励去不断地探索和突破自己的技术和业务瓶颈,非常有利于个人能力的提高。
2012年,网易杭研为提高资源利用率、满足业务资源快速交付需求,开始在内部提供云计算服务,其中云网络作为核心技术之一,必须有人负责研发。原本做服务端开发工作的徐城利兴奋了起来,他喜欢挑战这个新项目,同时他也有操作系统、网络等相关经验,于是就加入了云计算团队,开始了两代云计算网络的研发,实现了单VPC 30000虚拟机的规模,并且云网络也成为网易杭研云原生、微服务平台优于同类产品的一大助力。
7年的经历,让徐城利感触颇多。他认为,云计算的工作是一个循序渐进的成长过程,非常注重平时的积累,唯有如此,才能克服那些高难度的挑战。以云计算1.0到2.0的迭代为例,1.0时期存在一些限制和瓶颈,例如网络规模无法满足要求、SNAT很容易卡死等,同时一些业务期望的的专线、高性能网络节点等功能也提供不了。徐城利和他的团队花了一年时间,在总结之前的经验和实践的基础上,重构实现了2.0网络。相较于上个版本,2.0网络不仅在规模和性能上都实现了一个数量级的增长,而且提供了VPC互联、物理专线、高性能网络节点等功能。
当然,2.0网络也不是终点。徐城利指出,现在的网络对每个人还不够透明,无法准确地知道当前网络上跑着什么流量、每条路径上的性能状态如何,所以,后续的一个重要目标,是能够对整个网络有足够清晰的视图,并在此基础上优化资源、运维、问题诊断等工作。
另外,软件实现的网络功能,可定制性强,灵活敏捷,但在高性能、低延迟、稳定性等方面有一些不足,部分对性能极为敏感的场景下,可与可编程交换机、智能网卡甚至FPGA等方案相结合。
谈到培养解决难题的能力,徐城利再次强调平时积累的重要性:一方面要持续深挖,对自己负责的业务有足够的理解;另一方面知识面也要有足够的广度,对行业、关联业务、以及基础的操作系统、网络、算法等有较为系统的了解。只有做到这两点,才会有足够的视野和能力去解决问题。
一个可行的方法,是平时积极地接纳和尝试新的技术、工具,理解内在的思想和方法,有些可能是新瓶装旧酒,但有些也会包含有用的内容。技术人要学会将这些归纳吸收为自己的东西,并结合到实际情况来使用,而非为了新技术而使用新技术。
蒋鸿翔:问题有多大,收获就有多大
网易杭研数据库内核和数据仓库平台负责人 蒋鸿翔
信仰:专业底层技术
战绩:数据库内核,大数据平台
绝招:基础扎实+经验积累
2019年,蒋鸿翔迎来了自己在网易杭研的第9个年头,个人的“变量名”不知何时已从“小蒋”升级到“老蒋”。回忆当初的选择,他说,自己的兴趣在于底层技术,网易是国内外领先的互联网公司,而杭研是网易内部唯一一个注重底层平台技术转化并赋能业务的部门,这里有非常好的技术氛围和工作环境、人性化的管理,更重要的是,这里有大的平台供你施展,对于做技术的人来说,一个足够大的平台来给你提供更多的技术上的挑战,是一件非常令人兴奋的事情。
9年时光,老蒋的喜怒哀乐伴随着业务线上问题的发生与解决,尤其是数据库内核、大数据平台相关的技术难题——最近的数据库榜单争议足以让大家感性了解数据库技术的复杂性,而基于分布式多节点的大数据技术,问题发现和定位的难度也可想而知。圈里人清楚,要做好这两种技术并且为业务创造价值,真心不是一件容易的事情。但老蒋补充道:“如果哪天你碰到特别难解决的Bug或者特别大的技术挑战,那么,一定地,你解决问题后的成就感也是特别巨大的。”
老蒋已经记不清当了多少次救火队长,但一些成就感巨大的场景让他记忆犹新。如磁盘损坏情况下约8TB游戏数据的恢复,老蒋和战友们数夜分析MySQL源代码后,耗时近一个月一点点把90%多的数据从损坏的文件中提取出来,并由此掌握了从原始文件恢复数据库数据的技术。如从零接手HBase并实现QPS从2000到40000的跃进。当然还有网易猛犸大数据平台整体的稳定性提升,这涉及到Hadoop、Spark、Impala、Kudu等几十个组件,老蒋和团队还通过组件版本更新迭代、运维平台的搭建以及更丰富、全面的报警监控手段等工作,实现了可用率的大幅提升。
对于下一步的提升,老蒋规划了如下的核心目标:
需要在数据库、大数据某些领域技术上的突破
业务层面的更细粒度的保障
多接触业务部门,参与业务技术共建,加速平台技术与业务的融合,并形成有效的解决方案
在他看来,参与业务技术共建非常重要,毕竟一种技术的输出只能解决一些业务部门一个点的问题,如果能形成统一方案输出到公司内部各个业务部门,那就解决了公司内部一条线上的问题,再通过多种不同的技术输出,就可以来解决公司内部基础技术面的问题。这,其实也是“杭研公共技术”(或者说“网易创新中台”)理念的缩影。
何李夫:技巧来自于实践经验的积累
网易杭研数据科学中心软件工程师 何李夫
信仰:分布式
战绩:分布式Redis缓存服务,Apache Kudu Committer & PMC
绝招:一万小时定律
何李夫毕业于浙江大学电子信息工程专业,毕业前夕学校组织参观了一批杭州本地的高新科技企业,这些企业的高度信息化的生产方式以及他们所创造的巨大价值,让何李夫感到十分震撼,于是他立志从事产品/技术研发的工作。
工作之后的何李夫,一直活跃于编程一线,时至今日初心未改。加入网易之前,何李夫主导设计并落地了中国新三板交易所核心交易系统项目。项目的交付给何李夫带来成就感的同时,期间解决过的问题也激发了他编写更强大的系统、学习更前沿的技术的兴趣。经过深思熟虑之后,何李夫加入了网易杭研。他认为,从网易的发展势头来看,网易杭研具有互联网领域深厚的技术实力,特别是在大型分布式系统的架构、海量数据的处理技术上,杭研的需求与努力方向,正好与他的个人目标相互重叠。
何李夫选择网易杭研,杭研大平台回报他的信任,就是交给他重要的任务。在这里,何李夫完成了他最引以为傲的两项工作,即负责开发和维护分布式Redis缓存服务NCR,和新一代存储平台Kudu。对于NCR,他解决了高可用、高可靠、平滑扩展的技术实现,4年来,该系统在网易私有云平台上得到了大规模的应用,支撑了100多款产品。
至于Kudu,则是构建开源大数据实时数据仓库的必要组件,也正是它支撑起了考拉等业务的数据中台实时数仓的建设,也得到了规模化的应用。比如考拉业务的实时流量数仓,音乐业务的实时计算平台,底层都有Kudu的支撑。
在Kudu的开发过程中,何李夫的多项贡献也得到Apache Kudu社区的认可,成为了Kudu项目的Committer和PMC成员。对于所取得的成绩,除了杭研前辈的指引,团队沟通交流的氛围,何李夫归功于实践,“技巧来自于实践经验的积累,我相信一万小时定律(不管你做什么事情,只要坚持一万小时,基本上都可以成为该领域的专家)。”他说。
当然,何李夫不满足与此,下一个阶段,他希望在维护好线上应用的前提下,继续开发具有重大价值的特性,保障并提升业务的丰富性。