深耕基础二十年
回顾IT技术发展历史,其每一个时期都有不同的焦点,往回推30年是高性能计算,推20年是搜索,推10年是云计算。先后在中科院计算研究所做超算,在http://ASK.com做搜索,在微软和阿里云做云存储的Jason自认为是一个职业选择上的幸运儿——高性能计算、搜索、云计算这三个关键技术的发展,他都未曾缺席。“到后面的话,AI和机器学习可能是另外一个新的技术发展点。”现在的Jason又成为了AI和机器学习的乙方,他所负责的存储产品,正支撑着大数据分析、AI、机器学习、自动驾驶等新型负载。
Jason在2008年加入微软Azure团队,参与了Azure代码的编写,包括后续的运维和线上故障排查工作。“因为我不是最早的那一波,所以只能算是参与了Azure从0.2到1的过程,最早的那波2007年就在团队里了。我觉得那几年我还是非常幸运的,能够在早期阶段参与到这样一个大的产品和技术体系的演进中。”
“我记得2012年的时候,我来阿里云这边面试,王坚院士问我说,你在Azure做了4年,你觉得你最大的成就是什么呢?我当时也没有怎么想,就说自己最大的成就是让这个系统变得更加稳定了一些。原来我可能一周要工作7天,每次出去的时候都要带着电脑一起,有时候可能开车开到半路就得找个星巴克去排查问题。2008年到2011年这种情况很多,到2012年我们系统基本上就稳定了,这种情况就变少了,可以变成(一周工作)说可能是6天或者5天,自己出去要带上电脑去排查问题的次数变得少一些了。”
“后来据说博士对我这个回答还是很满意的,说在系统的初期阶段确实有很多问题要解决,有很多坑要填。”
然而,拿到Offer的Jason并没有选择立即加入阿里云。“因为当时给我Offer的时候,有两个选择,一个是回到杭州,另外一个是让我回到硅谷,阿里云在硅谷有一支研发团队,想让我去带那个团队。”但他更倾向于留在西雅图。因此,直到2014年阿里在西雅图设立了Office,犹豫了两年的Jason才接过这个橄榄枝,不过,最后让他做下决定的,还是因为看到了云计算在中国的前景。他认为,相较于芯片、操作系统,云计算是一个很适合中国做并且能做得比较好的技术。
“但是今天我的认识发生了一些改变,其实芯片这个事情我们也可以搞一搞,像操作系统,阿里云也在做自己的操作系统。随着我们深入到芯片和操作系统领域,其实它可以把全栈站的打通做得更好。”
在阿里云的经历:三个重大决策和教训
从2014年到2022年,Jason已经和阿里云走过8年的时间,成为了阿里云存储负责人。在这个过程中,他参与过许多重要的决策,也获得了许多经验和教训,接下来,他将跟我们分享三个小故事。
- 2015年最重大的决策,派最精英的人去写SDK
飞天系统如雷贯耳,但2015年的时候,阿里云对象存储的业务发展并不如意。
“我们都认为自己的分布式系统很牛,我们的飞天操作系统很牛,我们的盘古很牛,我们的产品也就很牛,然后我们就推理出来说,因为我们有很牛的产品,我们的客户肯定会很喜欢来用。”
但是实际情况并非如此,那么,原因到底是什么?
“我们发现,我们后端是很很牛,但是我们跟客户交互的那些东西确实做得不好,SDK也不是很好,用户体验也就不怎么好。”
“举个例子,你可能花了一个月时间在后面做了一个优化,让整个系统的性能提高了50%,但可能就因为SDK里面某一段写得不那么好的代码,客户就有可能是拿不到这50%的(优化)。而我们后端这些做分布式系统的精英程序员体会不到这一点。”
所以,离客户最近的那一段的路需要非常好,这是阿里云存储团队在2015年获得的最大的一个教训。“就好像某个人有一个豪宅,但进去的路遍布荆棘的话,其实大家进去的机会也就少了,所以你必须要把这些路给修好,对不对?像我们的SDK,我们的控制台,这些东西实际上就是这些路。”
痛定思痛,阿里云存储团队在年底做出了2015年最大的一个决策——派最精英的人去写SDK,重点关注控制台的构建和响应时间,以及NPS,即客户愿不愿意把购买的产品推荐给其他朋友。“我们把最精英的同学放在那个领域去工作,让SDK和控制台真正能够让客户能感受到易用、高性能,然后我们在这些细节方面做得更好,后来我们的业务也就起来了。”
如果你也是一位开发者,还是一位后端同学,这个故事应该对你有所启发。从全链路角度出发,做好每一个细节,才能保证后端的优越能够被客户真正享受到。
- 2019年3月,阿里云存储团队的至暗时刻
2019年3月份,阿里云存储团队内部的至暗时刻。一个月内,阿里云发生了两起重大故障,一次是块存储EBCS在华北2地域可用区C出现了一个重大故障,导致服务中断几个小时,造成多个App和网站瘫痪。紧接着一周之后,阿里云对象存储OSS也发生了一次P1级的故障。
那一时刻,Jason真正地认识到了什么叫“基础不牢,地动山摇”,一旦基础设施底座出现了问题,将给上层客户带来巨大影响。“我们需要把系统做得更稳定,把我们的服务质量,把我们的快速反应能力,把我们的故障恢复能力提升到新的高度。客户把身家性命都放到了阿里云上面,我们肯定要通过技术和服务给他提供一个永不宕机的系统,这是我们的责任。”
哪怕是3年后的今天,整个阿里云存储团队都对这个月份记忆犹新。他们甚至会反复将这些案例告诉新来的同学,告诉他们,敬畏自己的每一行代码,每一个操作。
- 20201年,搜索推荐广告全面上云
如今,阿里巴巴集团业务,尤其是搜索推荐广告(搜推广)业务的全面上云,对整个阿里云特别是存储团队来说意义十分重大。
当初在做阿里云的时候,王坚院士有一个目标梦想,就是阿里云能支持多个搜索引擎,不仅包括阿里自己的搜索推广业务,也希望外部的搜索公司也能架构到阿里云上面,这意味着,云平台需要具备相应的能力去支撑搜索这个技术复杂繁重的业务。“实际上,搜索推广上云的过程有点曲折,我们从上云到下云再到上云,经过12年的发展才走到这一步,但最后我们在20201年证明这个东西是成立的,而且我们已经全部上云了,所以这也是在整个存储技术的发展里面非常可喜的一个成就。”
当前存储面临的挑战和有趣的发现
当前的存储技术已经获得了长足的发展,但一些技术趋势会带来一些新的挑战,需要通过全链路设计和架构的重构解决问题。
首先是稳定性,这一挑战长期存在。过去,系统的可用性可能3个9就够了,但如今它已经提高到了4个9、5个9,我们还不仅仅满足于此,期望能达到更优的稳定性指标。由于新设备的引入,新业务、新负载、新技术的不断面世,整个系统的架构都在发生着变化,对底层有了更高的要求。比如云原生带来了快速弹性的拉取,在没有本地存储内存加速的情况下,底层将遭到巨大的冲击。
换句话说,磁盘的物理能力是否能完美支持存储虚拟化的技术?
“虽然今天的磁盘容量已经变得很大,但如果把性能跟容量相除,你会发现一个有趣的现象,磁盘的单位容量上的性能实际上是在往下降的。”
Jason给我们举了一个例子:“比如,原来大家可能用的是4T的磁盘,几年前,它变成了8T,现在它可能是20T。而HDD磁盘的其他维度的指标基本上是恒定的,IOPS大概在120~150左右,带宽大概在150~200M左右。但磁盘的容量从4T到了20T,已经增加了4倍,但它另外两个维度的指标都没有变化,所以你如果把这些性能指标除以容量的话,你就会发现整个曲线是往下走的。”
如果把一块20T的盘通过资源的复用以及云技术,用多租户的方式分享给更多的用户,会发生什么?
“一块20T的磁盘,我给每个客户4T,这样就相当于5个4T的盘,但我每个客户都希望自己能享受到120~150的IOPS。但实际上这个盘的物理能力没办法支撑这样的存储虚拟化的1变5的能力的,所以今天对我们来讲这是一个很大的技术上的挑战,我们需要去解决。”
多租户的情况下还有资源性能隔离的需求,如何做好互不干扰的能力,如何把硬件的能力全部使用出来,如何降低成本,这都是存储领域的经典问题,只不过在今天这样大规模的云环境下面,所有的问题都被放大。
阿里云存储的进化方向
面对以上挑战,阿里云存储团队接下来的发力方向是什么?除了进一步提高系统可用性,Jason透露,他们将面向数据湖、机器学习、AI、自动驾驶、搜索推广等新型负载进化,一是对外发布一个更高速的基于盘古的分布式文件系统,该系统目前服务于阿里集团内部的搜索推广业务。二是继续做好并行文件系统CPFS,其在AI计算和自动驾驶场景都有落地应用。值得一提的是,阿里云自研的分布式存储系统“盘古”去年入选了世界互联网领先科技成果。另外,他们还将联合阿里云其他产品,给客户提供优质的数据管理和数据治理能力。并且聚焦高性能网络,自研网卡和磁盘,网络、磁盘和服务器之间的软硬一体设计的持续演进。
“其实我们在未来有两个主战场,一是向下做深基础,在芯片磁盘、网络和服务器设计方面不断创新,寻找全栈多点技术融合的机会,二是面向用户做产品设计。举个例子,阿里云、AWS过往在做EBS产品设计的时候,每一块盘都给一个固定的性能指标,如果用户要变更到另一个性能指标,就要进行变配操作,用时长达几分钟甚至十几分钟,十分影响用户体验。因此,阿里云重新设计后推出了ESSD Auto PL,即在设定的底线之上,可以进行无级变速;,也就是说,用户根据自身的业务需求,可以*上升和回落,不用再去过多考虑容量资源的调配。这个设计对产品和研发来说是一件极具挑战的事情,但也印证了阿里云自身的文化主张,把复杂留给自己,把简单交给别人。”
个人成长漫谈
在技术之外,Jason也给我们分享了他自身的一些小故事。
1.谈时间管理
由于在西雅图、硅谷和国内都有团队,Jason需要频繁往返于国内和西雅图之间,疫情之前,Jason每年回来4、5次,每次呆1个月时间,而在疫情之后,频率就变成了每年回国一次,呆3、4个月。
我们很好奇,在这样的情况下,Jason这样的大咖是如何做时间管理,怎样去高效工作的。Jason表示,自己也是程序员出身,后来才做的管理工作。在做程序员的时候,时间相对连续集中,除了自己写代码和调试代码的时间,最多需要参加一些设计测试,但在做了管理以后,一个最明显的变化就是会议的增多,有一些必须参加的重要会议。此外,还有一些在日历上显示不出来的时间开销,比如要花更多的时间跟团队的同学交流,以及跨团队的沟通。“我现在给自己定了一个小目标,每个月至少要跟5个不是直接向我汇报的同学沟通,这样的话,你可以了解他们的一些想法,也能了解这个团队。”
“其实还有一部分可以补充,你要花很多的精力去为团队或者为整个领域去寻找一些志同道合的人,要花时间去跟他沟通,给他讲你们的想法,等待合适的机会,让他们加入你的团队。”
2.谈压力
在繁忙的工作中,Jason面临着许多压力,最主要的压力还是来自于怎样保障系统的稳定性,给客户提供一个稳定可靠的运行状态。这一点看起来很简单,实现起来却非常难,特别是在超大规模的分布式系统里面。“当系统出现抖动或者小故障,各种不可预测的情况发生,客户的业务可能受损,我们怎么样能够快速恢复系统,对客户的影响降到最低点。很多时候我们是在跟时间赛跑,这是我当下最大的压力。”
当谈到是否有KPI的时候,Jason说自己的KPI非常简单——系统没有P1故障,永远在线,客户的数据在阿里云上不丢不错。
“基础不牢,地动山摇”,在交谈中,Jason多次提到这句话。
3.谈解压
Jason会从身体和心态两个方面去缓解自己的压力。平时,他喜欢一些体育运动,比如足球。在西雅图,他一周会踢两次,一般都是晚上踢,周五晚上正好是国内的周六凌晨,可以错开时间。随着球龄的增长,他在球队的位置不断后移,除了守门员,从前锋到中后卫都踢过。“这一块能够让自己的身体状态比较好,也可以应付更多压力,至少你得有一个好的身体去熬夜排查问题。”
在心态上,Jason建议用发展的眼光看待问题,当故障发生的时候,不是第一时间去责备人,而是去优化系统、流程、团队协作,等等,避免下一次故障的发生。,而后举一反三,排查其他模块和系统里是否有类似的漏洞以便改进。Jason曾告诉自己的团队,“一个强大的产品,或者一个非常强大的系统,它很多时候是随着故障而成长起来的。”
系统是在犯错中成长的,人也是。
“但是每一次故障对客户产生了的影响,我们也是非常心痛的,我们觉得这些事情其实可以做得更好,所以在这样一个不断相对螺旋上升的过程中,我们让整个系统能够达到我们想要的那种永不停机的状态,我觉得这种心态还是是对我们缓解压力还是有帮助的。”
4.谈学习
在工作之余,Jason也会给自己安排一些学习时间,关注USENIX、OSDPI、SOSP等*会议上发表了哪些Paper,Facebook(现在叫Meta)、Twitter、Amazon和Google等公司发了哪些工程方面的Blog。“InfoQ的很多文章我也看,还有极客时间,我觉得InfoQ还是一个非常好的社区、IT技术交流中心。有时候,我也会去看一些知乎上的问答,我觉得也是非常不错的。”
从国际性的*会议确实中可以找到一些前沿技术趋势,甚至能看到国家创新的聚焦点。我们也看到了一个积极的现象,目前,国内有许多老师和研究生,包括阿里在内的企业,在这些*会议上发表的高水平文章越来越多,这也反映出我国的研究水平的上升。
据了解,阿里连续资助了多届存储领域优秀论文的宣讲,Jason告诉我们,虽然见效缓慢,但是学术研究绝对是值得长期投入的,因为在很多时候,一种理论的突破才会让整个行业有更大的发展。达摩院的建设就是阿里在中长期技术研究上的投入,而阿里云存储团队本身也在做一些技术预研方面的工作,每年都会与多家高校合作,招收实习生,一方面希望给高校学生提供一个业界真实的工作环境,同时也希望通过一些联合研究项目,让高校师生更深入地了解工业界,衡量解决问题的方案。达摩院这样的机构或者组织越多,对工业界的突破越有利。
5.谈成就感
Jason认为,做工程师和做管理,从成就感的程度上看可能差不多,但感受到的方式不太一样。做工程师的成就感,来自于系统上线且稳定运行,服务了很多客户。而做管理者,更多是来自于团队发展,你看到团队的同学成长起来了。因为负责存储业务线,他还有一个成就感来自于客户的反馈,“客户觉得这个东西很好,我还想推荐给其他人用,我的这种成就感就会更多一些。”
6.谈选择
在谈到过往的重大抉择的时候,Jason告诉我们,自己也有一些迷茫的时刻,但不多。“其实很多时候你就像一个天平里面,只要在哪一边加一根稻草,就可能把你的迷茫给打破了。”
说到这里,Jason给我们讲了自己换工作的故事。他博士毕业后的第一份工作在ASK,Base阳光灿烂的硅谷,如果要去微软,就要搬到雨水和阴天都很多的西雅图,所以他有些犹豫。但一想到西雅图的房价比硅谷的房价要至少低一半,“我找到了一些心理上的平衡。”
7.谈目标
在工作上的目标,Jason给自己制定了OKR,其中有一个O是没有P1故障,以及一些很宏大的目标。“我们有些目标是实打实要完成的,有些目标就是一个牵引。”
Jason坦言,自己的个人目标其实也有一些没有实现,2021年,他给自己定了一个跑完365迈的目标,但最后大概只跑了100迈。
“我原来说每个月至少要跟5位不是汇报给我的同学沟通,我觉得这个也没有完成得那么好,大概完成了60~70%,也就是说可能平均下来每个月也就3~4位同学没到5位。”
团队发展尤其是海外团队建设方面的目标,Jason认为也没有特别达标,一方面是由于疫情影响,一方面是因为当下的技术趋势,整个海外人才市场竞争非常激烈。
2022年,Jason希望疫情能逐渐结束,争取多回国一些时间,此外,他也希望多增加一些和家人去休假的时间。
8.谈成长
2022年,极客邦的主题是“无限生长”,Jason分别从个人成长、技术成长、非技术成长三个维度来解读了这个词。
他认为,不管是在遇到不擅长的事情的时候,能够主动担当;,还是从各种各样的反馈中,拿到有用的东西,让自己变得更好;,又或是不局限于现有的思路,做产品创新,给客户带来更多价值,这都是无限生长。这和阿里内部推崇的“打破边界”有异曲同工之意。“从合作的角度来看,如果你做了一个东西,你不仅能自己用,还能推广给别人,让其他产品或者团队使用,让你的模块或者代码发挥的价值更大。”
“其实你如果去看那些成熟的技术的发展,整个团队实际上你都可以认为是在攀不同的高峰,就像我们做ESSDC这样一款产品,我们是业界第一个提出来做100 us(微秒)延迟个Microsecond的块存储团队,并且还立下了100万IOPS的目标,2018年,我们发布了ESSDC,我们把这个目标达到了,到目前我们也一直处在性能领先的地位。今年我们又给自己定了一个目标,延迟要做到80,我们还有一款新产品可以做到30。”
这种对技术的追求,也在鼓励着开发者们打破现状,做出创新,让自己跟着业界技术趋势去成长,把技术目标变成产品,让产品更加具备竞争力,服务好更多的客户,无限生长也体现在这里。
非技术方面的成长,则包括如何做项目管理、跟团队沟通、提高团队合作能力,将自己变成团队战斗力提升的驱动力。“我们在阿里云这边经常会讲一句话,就是要一起拼、一起赢。我觉得我们包括我的团队,或者包括阿里云的文化,技术文化或者组织文化,其实都跟无限生长非常契合。”
结束语
我们从交谈中发现,Jason是一位非常朴素的工程师,正如千千万万在基础软件领域默默坚守的从业者,他们的努力灌注出一代又一代坚实的底层基础设施,成为上层业务的强有力支撑,让企业在数字化转型浪潮中迎接未知的挑战。
他的成长经历也印证了我们的观点——底层未必不能做到顶层,国产基础软件领域大有可为。而长期以来,基础软件都是InfoQ重点关注的领域,越深入越能看见国产基础软件背后的巨大价值,这也是DIVE全球基础软件创新大会诞生的初衷。
本文为阿里云原创内容,未经允许不得转载。