做者 | 杜欢(阿里巴巴高级前端技术专家)、王文婧
前端
导读:云 + 端模式成为当前前端开发的新风向,由此而来的 Serverless 正帮助前端工程师提高开发能力和效率。近日在 2019 ArchSummit 全球架构师峰会北京站,阿里巴巴高级前端技术专家杜欢(风驰)接受了 InfoQ 记者的采访,为咱们详细梳理了阿里巴巴近两年使用云 + 端的 Serverless 来探索前端演进过程的经验和体会。
Question:杜老师,您好!请您介绍一下您的从业经历,以及目前在阿里云战略 & 合做部负责的工做。jquery
杜欢(风驰):目前我在阿里云战略合做部,负责阿里云的开发者业务,更多的是在考虑怎么在云的时代帮助整个广大的开发者社区和生态可以在成为云时代原住民开发者的状态下,有个更好的开发环境。数据库
Question:您从事前端工做多久了?对这个行业有过哪些困惑与思考?后端
杜欢(风驰):我其实进入到前端行业仍是颇有趣的一个过程,我最先是在 2001 年左右开始接触到 Web 开发。那个时候,就是作网站,作网站前端、后端、数据库,而后发布运维都要作。那个时候其实也没有如今这么多岗位,基本上就一个岗位——开发,全部的事情都作。前端工程化
后来随着公司业务的拓展,开始去接一些 Browser 端的工做,当时有一个词叫作 BS,它和 CS 是对应的,CS 叫 Client Side,就是客户端。Client 和 Server,就是客户端和 Server。BS 是 Browser 和 Server。从那个时候开始,这种 BS 结构的应用出现,这种结构的出现其实当时是为了解决开发成本和部署成本的问题。就是有些企业想作一个系统,这个系统能够很容易地让整个企业内部不一样的团队、不一样的角色很好地利用,部署的成本不要那么高,开发成本也不要那么高。浏览器
因此那个时候开始有这种业务类型出现,这种业务类型操做的主要界面就在 Browser 端,那 Browser 端就会遇到一个很大的挑战,也就是说,你的操做行为、表现、习惯跟原来传统的客户端软件开发的那种操做体验是不太同样的。由于 Browser 是浏览器。浏览器里边就是颇有限的几个元素 API。而后主要客户就会提一些要求说,你须要帮我把传统的那种体验交互保留下来。由于对我而言,我只是换了一个软件提供商,可是我和个人同事在使用的时候不能有什么感知,对他们来说应该是同样的。安全
那个时候遇到的挑战是,在浏览器里如何实现和传统的开发软件里的 UI、组件同样的行为。举个例子,好比说你在搜索框里输入任何一个字符,它会有下拉提示,这是很是常见的一个 UI,但在那个时候是没有的。这个 UI 至今也是没有原生提供的,都是前端去模拟出来的。性能优化
因此那个时候我作的就是这些事情。作着作着,我发现挑战很是大,至关于你要彻底模拟出一套传统的开发体系里的整个 UI 体系。那个时候就想,我能不能把这个作得更好一点。因此慢慢地开始加入到前端的一些社区。认识了当时的一些朋友。就这样进入到前端行业,一直作到今天。网络
Question:前端的发展很快,在研发体系的升级上,阿里云是如何部署的?前端工程师
杜欢(风驰): 前端升级确实是让人又爱又恨的。并且这种升级,在我看来,好比说框架层,它可能要解决的是一些新的研发形态,可是对业务而言,它其实并无很大规模地解决上一个阶段遇到的问题。
举个研发效率的例子,好比咱们如今作工程化、框架的演进,和最先用 jquery 的时候,相对业务而言,有什么变化吗?没有什么变化。并且有时候反而使你的整个协同成本、交付成本、人力成本在必定程度上变高了。由于你引入了工程的概念,你就要去作工程化,工程化不是全部人都能作得很深刻。由于工程化自己就是一个领域,因此你又得为了把工程化作好去准备一些特定的侯选人,组建一个团队。相对来说,你又多了一批作业务的人,业务流程又要变慢。原来可能你在 UI 上作完,JS、HTML、CSS,你怎么作立刻就能够看到。如今你是看不到的,你写完以后要编译,工程化和编译完以后,你可能才能看到。
我想表达的是,前端不断地在演进,它实际上是更精细化了,质量更有保障,在必定程度上效率可能也有提高。可是从更宏观的角度,从业务的角度来看,它可能不必定真正解决了业务痛点。就好比说今天咱们提到,有的业务指望是,人一进来立刻就能干活,干完活立刻就能上线。从业务的视角来看,前端这几年的演进可能还不是一个终态,它处在一个摸索的阶段。
Question:因此就像您说的,工程化如今尚未达到它的预期效果?
杜欢(风驰): 咱们认为,工程化的出现和持续演进将来必定是能帮到业务的,可是它还在摸索的阶段。自己作工程化须要消耗人力、资源,包括流程的新增,这些其实在这个阶段是会下降业务交付效率的。因此咱们也不能说它不对,由于它毕竟有一个发展的过程。只是在它尚未到达终态以前,无论是框架仍是这种工程化的这种演进,相对来说都是比较痛苦的。
可是将来若是终态来临,随着将来结合云原生 Serverless,从写代码到最终发布一体化的时代来临,可能全部的问题就迎刃而解了。
Question:我以前采访过一个专家,他说,前端工程化就是在作“消灭”本身的工做,您怎么看?
杜欢(风驰):我是这么理解,若是是消灭本身,那意味着,前端这个岗位目前作的事情将来会有一个东西替代它。
那今天前端的岗位在作什么事情呢?核心是在作用户交互行为的开发,在广泛的基础上,若是加上业务的特性,用户交互行为就会有不少定制化的东西。再加上,由于每个业务都要差别化才能生存,尤为是 to C 的产品类型,它必定会在用户侧寻找和竞品的差别化,用户侧更多的表现就是怎么让用户看起来更舒服,操做起来更舒服,整个体验更好。这些每每会表如今真正的用户交互行为上的差别。
这里有一个矛盾的点,抽象出来的那些东西,经过工程化确实能以必定的手段来替代,可是差别化的东西怎么来作,是否是可以彻底替代,这个还很难说,至少今天尚未一个你们都以为可信的方案说可以替代掉。就像今天的企业级定制开发也是相似,之因此叫定制开发,就是它至少在提定制的这个时间点,没有一个可抽象、可覆盖它的一个通用的东西,要否则它就不须要定制了,就用通用的就行了。
因此我以为工程化可以消灭那种通用抽象的东西,可是定制的东西至少目前来看还不能,除非将来机器学习演进到可以理解真正不一样的需求,而且可以把这种需求跟现有的技术体系、科学体系完整地连接起来的时候,那我以为是有机会的。
Question:阿里经济体的前端技术架构是什么样的?它经历了哪些发展阶段,能否提取几个重要的时间节点谈谈?
杜欢(风驰):阿里经济体的前端在必定程度上,至少能表明国内的前端行业发展的阶段。首先,据我所知,在国内,前端这个岗位最先就是在阿里出现的。那个时候为何会出现前端?已经从原来的全部的应用由一我的开发变成一种用户需求导向,用户以为你这个应用虽然好,可是操做起来不好,或者整个体验很差,因此能不能有人把这块作得更好?因此在业务的需求下产生了职业精细化的要求。这个精细化的需求在前端岗位诞生的时候,它的核心是把结构、表现、行为这三者作精细化的处理或演进。这是这个岗位诞生之初阿里前端在作的事情。
后来随着业务体量逐渐增大,开始覆盖到的人群,以及人群所在的地理位置都不太同样的时候,愈来愈多的来自网络比较差的环境的用户会说,打开特别慢,体验很差,那个时候又经历了作性能优化的时代。性能优化主要的目的是,让不一样的地理位置的用户都可以以最好的速度访问到咱们的业务,让你们的体验尽可能是最好的。
第三个阶段,Node.js 的出现,为咱们前面谈到的工程化提供了基础。由于作工程化意味着你要去作编译、文件处理,操做一些事情,这些东西须要有一种能力让它可以跑在本地,跑在系统里面,不仅是在 Web 页面上。Node.js 当时帮助前端有能力作这件事情,而后开始演进出前端如何进一步地把行为、样式、结构分离,如何作模块化的设计、模块化的开发。拆开以后,这个页面你就看不到了,你想看到,怎么把拆开的东西从新聚合起来?那个时候就是经过 Node.js 作这种总体的工程化。
第一更精细化,第二更精细化以后,可以把它编译在一块儿,可以看到,同时去解决或优化和原来后端的协同方式。其实在这个阶段以前,前端和后端的协同方式是比较粗暴的,是那种交接式的。就是前端作完页面,而后把产物交接给后端,后端拿着前端作的页面,在那些特定的区域操做,好比说一个表格,表格里面应该有数据,前端会填一些假的数据在里面占位,后端再把真实的数据塞在里面,那是最先的阶段。有了工程化体系以后,前端和后端的衔接就能够经过 API 的方式来作。在有 API 以前,前端能够去模拟这个假数据,经过约定的 API 规范之类。这是第三个阶段,就是工程化带来的这种更精细化的设计、模块化的设计,以及这种先后端协同的演进。
再日后的演进就是无线时代,前端开始向混合开发模式演进,好比几个框架的诞生。阿里内部也诞生了一些框架,好比你们知道的 Weex,最近的 Rax 等等。这是在 all in 无线业务背景下前端的演进。阿里内部有不少中后台的业务,它有不少相对固定的结构形态,其实咱们在工程化上又进一步演进了,就是诞生了这种中后台的研发模式。这种低代码的研发模式,更多地体如今页面的搭建,当咱们有足够多的设计资源,已经抽象好的、比较通用的、设计好的模块,那么就能够简单地经过一些框架,把这些模块组装在一块儿,而不用写代码,或者写不多的代码。这是中后台的演进。
如今,结合云的到来,企业但愿经过云去提升效率。这只是一个愿望,必定要通过一个技术的演进才能落地。相应地,从今年年初到“双 11”,咱们整个阿里再一次演进了本身的技术体系,升级到了 Serverless 的研发体系。它不只能够帮助前端完成面向用户交互的开发,还可以完成整个应用的开发,整个应用的开发基于云计算的实时弹性的能力可以快速作好,而且可以真实地在线上服务好“双 11”这么大的流量,真正帮助企业实现用云来快速商业化、节约成本的初衷。
Question:阿里是何时开始采用 Serverless 的?
杜欢(风驰):2017 年,阿里就开始讨论这个事情,正式启动是在 2018 年。阿里内部因为开发环境、网络的客观缘由,暂时不能直接使用阿里云的公共资源,因此咱们要内部实现一套公共云上有的 Serverless 的能力,因此咱们在 2018 年本身建设了这么一套能力。2019 年,咱们开始作上层研发的架构和模型,到今年“双十一”咱们正式投入使用。
Question:云 + 端是一个老生常谈的话题,阿里云的云 + 端和其余企业的云 + 端有哪些不一样之处?
杜欢(风驰):为何今天云出现了这么久,你们提云 + 端也提了这么久,提 Serverless 也提了有一段时间,可是真正的实践那么少呢?由于在研发实践当中仍是须要很挑战的一些东西去帮助它推进。
第一个是顶层的设计,由于你是研发生态,而不是简单地利用云的能力去作一个任务,这是不同的两件事情。若是是利用云的能力去完成一个任务,这个很简单,不少人都在用。可是如今真正利用云 + 端,利用 Serverless 的能力去帮助本身提高研发能力是没有的。问题就在于你们都缺少对整个研发架构的改变。由于你要真正利用它,研发模型要发生改变,研发的流程链路也要发生改变,这个你们没有参考。
今天阿里做为前期的实践者,愿意分享本身的设计,为你们提供参考,将来真正要在本身的研发体系里实践,大概要怎么设计,有哪些环节,哪些关键节点,哪些特征等等。第二个是真正的实践,若是阿里巴巴也只是停留在设计上,没有拿本身的业务去实践,我相信你们也缺少信心,也可能会认为这只是咱们的想象,可是今天咱们真正地经过“双十一”这个很大的场景来考验。
其实我相信这可以给到整个行业一些信息,咱们不只在思考和设计整个 Serverless,整个云 + 端落到真正的研发模式上,同时咱们也经过本身的业务去验证了咱们的设计是可行的。最后咱们也但愿,不只是分享咱们的架构设计,将来咱们本身内部的整个研发平台能有机会经过阿里云开放给整个行业,让外面整个开放的生态也可以使用。你们都使用同样的方式、同样的平台、同样的架构。
Question:正如您所说,今年“双 11”是 Serverless 在阿里的第一次大检验,取得了振奋人心的效果,可是这个过程中确定会有一些坎坷,您能分享一下这方面的经验吗?
杜欢(风驰):最痛苦的仍是 Serverless 底座的建设。我花了比较多的时间和你们讲为何不要去自建这一层的缘由是,由于落地和实践 Serverless,不是一个技术诉求,而是一个业务诉求。为何?由于云自己是帮助企业用低成本高效快速地实现商业化,技术只是为了让这个业务诉求落地,是这样的一个关系,因此说若是没有 Serverless 底座是很痛苦的一件事。而且若是它的能力不行,基本上也是不可用的,由于落地 Serverless 意味着你的全部服务都是跑在上面的。若是它挂了,你的业务也挂了,没有人愿意这样。
Question:因此说,小企业可能不太适合作 Serverless?
杜欢(风驰):小企业最好不要本身去建设 Serverless 底座资源能力。第一,存在技术上的挑战;第二,存在资源规模化的挑战。由于 Serverless 的核心要素是,它是按量使用的,按量使用意味着若是今天的量很小,你就用不多的资源;若是今天的量很大,就会给你调不少资源。“双十一”的时候,流量都是亿级的流量,若是你的企业内部没有按亿级作单位的这种流量的机器资源,你怎么去调度这些资源给他人使用呢?你没办法实现按量调度。因此小企业,或者不具有这种资源规模化的企业,不须要去自建 Serverless 能力,不是说不能去实践 Serverless,能够用公共云,好比说用阿里云或其余的云。
咱们遇到的最困难的也是这个事情,就是内部研发网络环境和生产运行网络的问题。咱们也是不互通的,咱们内部也很难直接在公共云环境去使用阿里云这些已有的能力。咱们其实花了一年的时间,在阿里内部推进不一样的团队去建设 Serverless 底座。这是第一个我认为比较挑战的点。
第二,整个研发模型对研发体系带来了挑战。其实不少时候这种东西一出来,看起来是帮助前端拓展了边界,拓展了价值能力,可是相应来说,后端同窗可能第一反应就是,那这是否是把我革命了?我就不须要干活了?其实不是这样的。好比阿里的导购业务就是取数据展现的场景。这种事情让一个后端来作,没有任何技术价值、技术沉淀、技术成长,可是现有的研发模式就是须要有后端同窗进来开发。因此其实对他们来说,Serverless 研发模式的演进有助于帮助他们往更底层演进,让他们聚焦于真正须要作技术研究的部分。好比,这些数据的能力、服务的能力,怎么作得更好、更扎实,这是咱们指望看到的。可是这个研发模式乍一看,若是你们没有深刻了解的话,就会认为对整个研发模式、研发流程挑战很大,那么就须要去和你们沟通、布道,讲它对每一个岗位会带来的价值。
第三,回到前端来说,这个东西虽然看起来很美好,但若是你真正下决心要进去,对每个前端来说,是撕裂的成长。由于咱们要开始知道这个业务是什么,为何要作这个业务,这个业务到底服务谁,关键的指标是什么,怎么作。这个时候他已经从前端变成一个业务的功能,整个业务都是他去开发、交付。
这是从技术准备、研发体系的协同,到前端岗位的挑战三个层面的难点,是我以为印象比较深入的,多是将来你们在实践当中都会遇到的。
Question:我在网上了解到,有人说 Serverless 存在不适合长时间的运行应用,彻底依赖第三方服务,缺少调试,还有构建复杂等缺点。您认同这些观点吗?对于那些尚未涉足 Serverless 的人,您能够帮助他们辨清这些概念吗?
杜欢(风驰):我以为没有什么对错。它只是提到了一些特征,可是我也想从特征的角度给你们鼓鼓劲。好比说今天 CNCF,就是云原生在推的事情,核心就是 Serverless。Serverless 的核心特征是什么呢?第一,按量。也就是说,先不要站在技术的角度去看,站在业务角度,它是按量的,按量就意味着,对于业务而言,它是最好的资源使用方式,既不会带来浪费,也不会不足。第二,计费方式。如今不少的方式是你买的多浪费,买的少就不够,并且须要再补买,很难把它和你的应用扩容上去。Serverless 的计费方式是按量走的,用多少付多少。另外,它是平台承载的,由于平台的实时弹性,帮助了用户实现按量诉求。
第二,关于技术实践上的复杂,我以为也只是一个阶段性的现状而已。今天整个行业尚未一个开箱即用,或者说比较成熟的研发框架或研发体系、研发平台出来,你们都在一个摸索的阶段,就包括咱们本身也是刚刚摸索实践出来,而且也还不算是成熟,咱们也还遇到不少要去继续推进解决的问题。因此我是这么看,先从业务的角度去看,它必定是一个最佳的路径。阶段性的痛苦确定是有的,因此没有什么对错。
Question:目前国内外 Serverless 实践存在怎样的差距?
杜欢(风驰):相对来说,国外的整个开发生态就时间上要比国内领先一点,缘由在于国外的主流云厂商对整个 IT 行业,对整个开发生态的布道作了不少工做。国外的开发生态对云原生,对 Serverless 的接受度和实践比咱们要好不少,而且也早不少。对他们而言,这是一个先发优点。提供的早,就意味着实践的多,而后你们对整个 Serverless 的通用性的东西,好比通用的研发环节可以去作一些沉淀和抽象,因此诞生了一些像 Serverless.com 这些 Serverless 的开发框架。他们更多地是站在一个第三方的公共框架的角度来看,你可能既能够用这个云厂商,也能够用那个云厂商,基于个人框架能够快速地去作,基于个人框架,框架天然会有些约束,你跟着这个框架的要求去作一些动做,而后你能够去实践,真正实践这个 Serverless 在业务里面落地,这是一些现状。
那咱们今天在作的也有点相似这个事情,可是咱们可能不只仅是一个开发框架,而是但愿把整个开发平台都开放出来。因此你们不只仅是说云层面,函数层面能够按照咱们提的建议去作,你甚至能够直接在咱们上面去作,咱们但愿是这样。
Question:明年 Serverless 有哪些更细粒度的技术值得关注?
杜欢(风驰):当 Serverless 整个研发模式大概成形以后,接下来就是实践。在实践的过程中,对渲染层、服务层、函数运行时、框架这几层可能会有一个更深刻的实践,产生更细节的一些需求。我理解从明年开始,可能就是很是 detail 的垂直分层演进了,可能会有更多的这类内容产生,好比服务编排是如何演进的,函数运行时是如何演进的,性能是怎样提高的,稳定性是怎样进一步保障好的,就是又会回到一个大的运维架构演进的阶段。
Question:最后一个问题,您预测将来 5 年,前端行业会有什么变化?您所在团队目前有没有针对这些技术判断作出一些布局?
杜欢(风驰):今年阿里经济体的其余几个大的方向,好比前端智能、搭建等,这些都有可能串联起来,成为影响整个前端行业发展趋势的一些因素。但我今天讲的更多的多是整个研发生态的变化,将来的研发模式使前端能够供整个业务,具体到每个环节,好比前端可能经过 UI 的智能化,让本身释放出来,经过一些成熟的视觉物料、前端物料,以及服务的物料,经过 AI 的辅助,快速地把一些本来须要前端去开发的一些模式化页面模块,经过 AI 的方式自主生成。
运维这块可能随着云原生能力的不断加强,工程化能力的补充,将来有可能进入到 NoOps ,就是不须要运维,只须要关注好一些数据。由于整个弹性会跟这些数据运行的实时数据关联起来,去作不一样的变化。
因此总体而言,将来五年对前端而言是能力价值进一步放大的五年,云上 Serverless 开发能力将成为前端的“金手指”,企业愿意去组建一个由云端的应用用开发工程师构成的研发团队,经过研发团队结合整个云的研发体系,快速地交付它的业务。同时在这个过程中,结合智能化进一步提升生产效率,多是这样一个趋势。
若是你对于 Serverless 和函数计算感兴趣的话,欢迎钉钉扫码进入交流群。
做者介绍:
杜欢(风驰),阿里云战略 & 合做部 / 高级前端技术专家。目前在阿里云"战略 & 合做部"负责阿里云开发者业务,阿里巴巴经济体前端技术委员会委员,阿里巴巴经济体前端 Serverless 研发升级项目负责人。此前就任于雅虎、思科等公司。
阿里云 - 云原生应用平台 - 基础软件中台团队(原容器平台基础软件团队)诚邀 Kubernetes/容器/ Serverless/应用交付技术领域专家( P6-P8 )加盟。
工做年限:建议 P6-7 三年起,P8 五年起,具体看实际能力。
工做地点:
简历马上回复,2~3 周出结果。节后入职。
基础产品事业部是阿里云智能事业群的核心研发部门,负责计算、存储、网络、安全、中间件、系统软件等研发。而云原生应用平台基础软件终态团队致力于打造稳定、标准、先进的云原生应用系统平台,推进行业面向云原生技术升级与革命。
在这里,既有 CNCF TOC 和 SIG 联席主席,也有 etcd 创始人、K8s Operator 创始人与 Kubernetes 核心维护成员组成的、国内最顶尖的 Kubernetes 技术团队。
在这里,你将同来自全球的云原生技术领域专家们(如 Helm 项目的创始人、Istio 项目的创始人)密切合做,在独一无二的场景与规模中从事 Kubernetes、Service Mesh、Serverless、Open Application Model ( OAM )等云计算生态核心技术的研发与落地工做,在业界标杆级的平台上,既赋能阿里巴巴全球经济体,更服务全世界的开发者用户。
技术要求:Go/Rust/Java/C++,Linux,分布式系统
lei.zhang AT alibaba-inc.com
“ 阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,作最懂云原生开发者的技术圈。”