穆萨妹编者按:尽管绝大部分后端的组织工作并不牵涉server,但前段时间一年serverless那个词语和其引发的热切的探讨,深深地刺痛了腾讯高阶后端控制技术研究者伐薪。做为碰触后端二十载的老合作开发,伐薪认为serverless可能会是接下去引发后端应用领域颠覆性变动的控制技术众所周知。
那时,伐薪将为我们剖析serverless的产业发展史产业发展民主化和对后端的负面影响,期望对后端技师略有启迪。
左图是serverless 那个词前段时间5年在 google 的搜寻态势,可以看见前段时间一年已经达至颠峰。
产业发展史上后端应用领域的关键控制技术民主革命
Ajax 的问世
先来简述呵呵后端控制技术应用领域的关键产业发展史结点,第二个结点是2005年,google的Jesse James Garrett 刊登了一则该文——《Ajax:Web应用应用领域程序的新方法》,首度正式发布了Ajax 那个捷伊词语(精确说并并非捷伊控制技术,而已捷伊词语),彼时我还大三大三,尽管ajax并非什么捷伊控制技术,而已对XmlHttpRequest等控制技术的包装袋,但那个控制技术被google宣传品后正式成为亚洲地区web合作开发的典范,间接地推动了富插件应用应用领域(RIA)和白眉林应用应用领域(SPA)的盛行,这些应用应用领域大多具有柔滑般新体验(局部创下),并始终充斥着web 2.0的产业发展,ajax的受到重视,使后端js的组织工作更加复杂和关键,专业分工越来越细,间接地推动了专职的后端合作开发人员这一角色问世,在此之前,web合作开发并不区分服务端和浏览器端的组织工作,因此ajax是后端应用领域的第一次关键事件。
Nodejs 对后端规范化和工程化的推动
接下去对后端变动最大的一个里程碑事件是2009年问世的 nodejs(包括common js及npm)的出现和流行,它对后端应用领域的关键意义并不仅仅是让后端可以快速用js写server那么简单,个人认为它最大的贡献反而是commonjs、npm和其便捷合作开发新体验推动的后端工程化,它使后端开始从刀耕火种的和传统软件工程格格不入的部署方式,产业发展为接近传统企业应用应用领域的研发模式,在此之前,后端合作开发在资源引用、依赖管理和模块规范上缺乏有效的工具和标准,但nodejs盛行以后,基于commonjs的模块及npm的包部署和依赖管理正式成为主流(类似java的maven体系),并问世了多种基于nodejs合作开发的cli工具辅助后端合作开发(如grunt、gulp),npm目前是亚洲地区最大的包管理仓库,并且正式成为后端项目的包依赖管理事实标准。而webpack的出现,又使后端代码的部署更加简便,让后端可以以类似java jar包的形式正式发布应用应用领域(bundle),而不管项目中是何种类型的资源。
React 的组件化及vdom理念
第三个颠覆性事件是2013年开始出现的react,尽管web components标准在此之前早已正式发布,但真正让组件化理念受到重视并且应用应用领域最广的库是react,它还至少有两点特性足以让它正式成为产业发展史上最具前瞻性的后端库,第二个特性是vdom的出现,在此之前,所有的ui库,都直接与dom关联,但react在UI创建与渲染引擎之间,增加了一个中间层——vdom(一个使用轻量级json描写UI结构的协议),除了改善了其本身的dom diff性能之外,还有一个重大意义就是UI的编写与渲染开始分离,一次编写,多端渲染的UI得以实现,那个多端包括server端、移动端、pc端和其他需要展示UI的设备,后的react native和weex都是这一分层思想的受益者。
除了vdom之外,react还有一个关键的理念非常超前,即UI是一个函数(类),函数输入一个state,一定返回确定的视图,在此之前,绝大部分框架和库,都会把UI分离成一个html片段(通常支持模板写法以渲染数据),一个为该html片段绑定事件的js,尽管这样比较好理解,但react对UI这种抽象却反映了UI的实际本质,并且这种函数式理念,在后面可以看见,将与faas及serverless控制技术产生美妙的碰撞。
react 的问世对此后,甚至此前的框架和库都产生了深远的负面影响,包括不限于angular和vue都陆续采纳了它很多控制技术思想,并且正式成为后端合作开发应用领域目前已经趋于稳定的屈指可数的几个控制技术选型众所周知。
再来总结呵呵,ajax使后端的角色逐渐分离出来,nodejs推动了后端的合作开发模式向传统编程语言靠近(工程化),react的出现,基本结束了后端常常对后端”控制技术变动快“的吐槽,至此,后端的控制技术体系逐步成熟和标准化。
serverless 理念与后端的关系
那么为什么说下一次对后端控制技术应用领域有较大负面影响的理念是serverless呢,事实上,尽管serverless那个词语由亚马逊提出来还不到几年,但那个理念并并非什么爆炸性的新理念,在早期,cdn还不普及的时候,web技师会把js资源和视图文件(可能是静态也可能是动态的)传到服务器,那个时候后端是需要关心服务器的,但cdn及回源策略的普及,工程及搭建系统的大规模使用,使后端可以快速把一个js或者静态文件扔到cdn结点,通过回源机制(cdn回源到一个动态服务),半动态的视图层渲染也正式成为可能,在这整个过程,后端合作开发无需关心任何服务器的知识,也不知道cdn有多少结点,怎样做负载均衡,做gslb的,也不需要知道qps多少,一个cdn可以放各种业务各种合作开发的资源,可以说cdn是serverless理念的的先行者。
回到应用应用领域部署,在前几年nodejs刚盛行的时期,已有合作开发者意识到应用应用领域与机器的部署与运维成本对业务方会是个问题,出现了一些容器化的思想,比如cbu在15年出的naga,在那个naga容器里,业务逻辑是一个个插件,容器负责请求的路由分发,负载及稳定性管理,业务方只需要编写并上传最直接的业务代码即可,对业务方来说是实现了serverless的理念,因为naga的维护者帮你解决了部署及运维的问题。
再说对后端息息相关的页面搭建系统和bff层,无论是各种搭建系统(如斑马、积木盒子、TMS),还是基于graphQl的平台,还是通过web ide快速编写api gateway的产品——如cbu的mbox,都让业务合作开发只关心业务逻辑,无需关心部署运维知识,它们一定程度上体现了serverless的理念。
serverless 将对后端的负面影响
综上所述,后端早已与serverless产生了联系,但很多人还没感知,接下去,serverless显示化地爆发将给后端带来更为深远的负面影响,主要体现在三个方面。
后端将会重新回归到web应用应用领域技师这一职能
在最前面说了,后端是社会分工的细化,大约起源于2007年左右,在此之前是没有专门的后端合作开发角色的,通常称作web技师或网站技师,早期的网页大多是服务器渲染,使用asp、php、jsp等server page控制技术,js仅仅是web技师需要掌握的小小技能众所周知,但随着web 2.0及互联网、移动互联网、电子商务的产业发展,需要专门的人专注于编写具有很好兼容性和新体验的UI,因此逐渐产生了专注于浏览器及移动端的后端技师。
但后端控制技术应用领域逐渐趋于稳定,充斥着十几年的产业发展,各种开箱即用的库、垂直方案和工程手段唾手可得,甚至目前出现了一些辅助工具可以把设计师的视觉稿生成UI代码,后端可以安心并且以非常低的成本编写UI和业务逻辑,而不用耗费大量精力在选型、造轮、还原视觉、处理兼容性、性能优化、调试和部署上,这种情况,前后端工种分离造成的协同成本反而放大了,因为在前后端角色分离的情况下,后端往往还会充当bff层的角色,比如为后端表现层封装各种api gateway,经常出现相互等待、联调协议的情况,而且bff层通常而已一些数据的加工,其他的角色经过短期的培训可以快速上手,因此后端始终在尝试接入到server端的bff层。
在15年后端开始推广使用nodejs来部署应用应用领域,穆萨内外也出现了不少nodejs的框架,如业界的express,在生产环境,包括给买家、商家和内部人员使用的系统,有不少使用了nodejs,但到今年2019年,再来简述呵呵,发现那个数字并没有超出预期。
造成这一现象的原因,个人认为归根到底还是因为分工太细导致的后端对服务器知识的缺乏,nodejs本身的定位是服务器控制技术,本质上在服务器要面对的问题与java无异,现有的后端jd招聘的人才,鲜有能在服务器上组织工作游刃有余的人,除非专门招的nodejs人才,server服务的长期运行会暴露很多问题,比如接口很慢,民主化core,cpu飙升,内存泄漏等,另外负载均衡、扩缩容,高并低延等知识,绝大部分后端都是没有这些经验的。
云计算的本质就是要让业务合作开发专注于业务逻辑,业务之下的硬件及软件设施都是按需采买,开箱即用,而serverless理念及相关控制技术,将使合作开发人员不再需要关心应用应用领域及机器的问题,甚至连流量能不能撑住也不用关心了,它能自动扩缩容,因此,未来web合作开发人员的运维成本会大幅降低,后端也可介入到bff层的合作开发,而后端可以聚焦于数据处理、业务逻辑与算法。
这一变革符合研发效能提升的背景,未来的云设施将会做得非常厚,非常专业、稳定,而前台合作开发人员可以快速地,最低成本地在云设施上建立业务逻辑,后端和服务器的后端(对整个请求链路来说,后端是相对的,只要离客户请求更近的角色都可以称自己为后端),分工将没那么明确,以前的浏览器端的后端,将逐步承担一部分服务器端接入层和bff层的组织工作,返璞归真,回到产业发展史上曾经的web合作开发技师角色,这是对后端最大的一个变革。
当然,serverless控制技术让后端回归到传统的web层,不代表后端不用掌握服务器知识了,掌握操作系统内核及网络编程知识仍有助于你编写高性能、高可用的业务应用应用领域。
实时SSR将正式成为展示端UI的主要合作开发模式
最早的web合作开发,其实处理UI都是以服务器渲染为主,比如perl、php等动态网页控制技术,但在后端逐渐正式成为一个工种开始负责了绝绝大部分UI合作开发,并且控制技术域逐渐缩小到插件范围后,网页静态化和插件的渲染逐渐正式成为主流。
但这种模式对用户新体验肯定是有问题的,导致了较多的白屏时间,而由于捷伊后端库如react和vue在vdom这层的抽象,服务器渲染的控制技术成本更低,因此SSR在前段时间几年,又逐步开始盛行。
但SSR的难点恰恰是前面说的,服务器端人才的匮乏,尽管nodejs和vdom的普及提升了SSR的实施效率,但由于服务器知识的缺乏,通常只有少部分具有综合知识的后端会深入的实践这一应用领域。
serverless控制技术的普及将把那个问题消除掉,借助于serverless控制技术,后端可以快速搭建一个ssr的场景,在服务器取数,在服务器渲染,直出html给到插件,而不用关心那个渲染服务能否扛得住流量,会不会挂掉,这些事情云设施供应商会去解决。
在前面说过,react有一个核心理念就是把UI看成函数,如果说一个页面是多个组件组成的,那一个组件是函数,我们可以把一个页面看成是多个函数的组合,不同函数的组合,组合成不同的导购场景,如果把一个函数看成一个微服务,一个场景就是微服务的聚合,这恰恰是faas的理念。
通过serverless低成本地实时ssr,可以让客户新体验更好,借助算法和大数据,还可以快速实现UI的千人n面,构建真正的导购大脑。
基于场景的云合作开发(web ide)将正式成为主流合作开发模式
在提到serverless控制技术的时候,有一个关联的应用领域不得不提,那就是web ide,很多互联网大型企业把一个web ide当成了云的基础设施并且大力投资,这是为何?个人认为有两个原因。
第二个是因为serverless目前在业界使用以垂直场景为主,他们有一个共同点,就是代码足够标准、规范,场景较为垂直,代码复杂度并非很大,而且借助web ide可以快速地与云平台结合,做到一键正式发布,因此这种场景,是比较适合轻量的在线编码到部署全链路打通的。
另一个原因是,目前所有的云设施解决的是业务运行问题,但软件合作开发有一个非常大但大部分人可能会忽略的痛点,那就是环境问题,相信很多人都有那种clone别人的项目但废了九牛二虎之力都无法启动的问题,因为要装各种环境啊?另外就是和别人联调的时候,是并非因为各种环境部署缺失的问题,联调效率很低?
借助容器如docker等控制技术,软件的运行及调试环境,可以快速地移植给别人复用,而目前基于js的代码编辑器已经非常强大,vscode editor就是基于js编写并且沉淀出一个库 Monaco Editor,因此可以说,绝大部分认为web ide可能在语法提示、智能感知上比不上本地ide的想法是过时了。
同时web ide可以快速地与平台集成,深入定制,打通业务平台,一键部署,极大地提升研发效率。
web ide还能解决跨地办公的问题,因为解决了环境准备这一老大难问题,你可以在家里,在公司,甚至在火车上,快速编写并交付代码。
因此未来的paas平台,都将关联一个深度定制的web ide,需要编写业务逻辑时,一个连接跳转到web ide即可编码,完全无需关心本地环境问题,做到真正的envless。比如你要合作开发一个TMS模块,那么点击”新建“,跳到了web ide,代码会帮你初始化好,点击运行,会在云端启动服务器运行该组件,编写好后,一键即可正式发布到TMS。
对于各种faas、api gateway系统和其他云服务,都会一样,web ide将正式成为企业云化的基础设施。尽管穆萨云目前还未正式发布媲美cloud9和coding.net的web ide,但很欣喜地看见集团内部已经涌现出一些优秀的产品,如aone的ide,和数据平台的app studio,其新体验已经接近业界顶级水准。
结语
在云计算应用领域,serverless将会掀起一场民主革命,即使看起来与这一应用领域关联不大的后端,也会经受即ajax、nodejs和react后的又一重大变革,你做好应付了吗?
最后,打个小广告:穆萨 CBU 控制技术部目前正在招聘2020届毕业的实习生和组织工作2年以上的社招同学,涵盖后端、java、移动和算法等,请有意者发简历到[email protected]。CBU 最为熟知的品牌是 1688.com 。目前2B业务迎来捷伊增长期,1688网站的交易日峰值已经超过100亿,除了批发货源以外,CBU还提供采购协同SaaS、企业服务、新制造等2B业务。
你可能还喜欢
点击下方图片即可阅读
为拯救爸妈朋友圈,达摩院造了“谣言粉碎机”