序三
Serverless将成为微服务架构的终极模式
计算范式演进的最终目标是为开发者提供高阶编程抽象,从而将他们从烦琐的工作中解脱出来,更加专注解决业务本身的问题,进而使得开发者可以方便地使用更高效(往往也更复杂)的算法,或者解决更大规模的问题。在过去的数十年中,为了应对应用快速大规模发展的需要,我们的软件开发模式从客户端/服务器模式(C/S),发展到模型/视图/控制(MVC),再到面向服务的架构(SOA),直至当前的微服务;应用的类型也从单体的企业应用,演化到大规模的分布式微服务应用。每一次这样的演进,都给我们的开发范式带来更大的灵活性,更高的可伸缩性,以及由此带来的性能提升,但是却使得开发范式本身变得更加复杂。相比数十年以前的单体应用,开发、调试、部署和维护大规模分布式微服务要复杂和困难许多。这不仅造成开发者的学习曲线相当陡峭,而且开发、维护一个微服务架构往往需要较高的初始成本。这种情况对于中小型应用是非常不友好的,这些应用的开发者在项目初期就需要面临两难的选择:要么在创业之初就承担昂贵的开发成本,要么在发展到一定规模之后承担痛苦的重构。云计算技术发展之初,尽管通过计算资源的虚拟化和池化,降低了我们部署应用的成本,但并没有从本质上解决上述计算范式演进面临的问题。而当前,伴随着企业数字现代化进程的加快,越来越多的应用“为云而生”,因而旨在简化云开发、方便构建分布式应用的新一代“云原生”Serverless技术应运而生了。
在华为2012实验室,有一支长期研究分布式并行和云计算技术的团队。从2017年起,他们就开始对Serverless技术进行深入研究和探索,从架构到理论,再到系统实现。华为元戎[1](分布式内核)就是他们在过去四年中不断求索的成果。何为Serverless?从狭义上讲,就是面向“函数”的计算(或称“函数即服务”,FaaS);从广义上讲,还包含函数可以调用的一系列后端服务,如对象存储、数据管理、增长运营等。相比业界类似的Serverless技术,华为元戎首次将“状态”纳入函数计算的概念体系,从而可以方便高效地实现多函数协同的、复杂的有状态服务。同时,华为元戎进一步提出了统一、标准化的后端平台概念(Event Bridge和Service Bridge),不仅方便函数和后端服务的集成,而且有助于Serverless应用的跨云部署。可以说,华为元戎将Serverless技术推进到了一个新的高度。2020年,通过各方通力合作,华为终端云服务推出基于华为元戎的Serverless解决方案,面向广大的开发者提供开发、构建、增长/运营及质量分析等一系列服务。本书通过对华为Serverless技术剖析,深入浅出地讲解了Serverless的原理、架构、系统实现,以及相应的关键技术,并列举了若干实战示例,帮助读者深入理解和学习Serverless技术。
值得一提的是,Serverless技术本身也是在持续发展的。从某种意义上讲,Serverless将会成为微服务架构的终极模式。那时,应用的模块化、独立部署、可扩缩、高可用和云计算技术可实现高度统一和深度结合。最终通过Serverless技术,云原生应用将会像单机应用一样可以简单便捷地进行开发,同时拥有高性能和高可扩缩的能力,从而彻底解决前文提到的云时代计算范式演进的困局。这种“单机思考,集群并行执行”的体验会深刻地改变云原生应用的开发模式,实现跨越式的生产力变革。正如伯克利RISE Lab主任Ion Stoica教授所言:“Serverless将会成为云时代默认的计算范式,并取代Serverful的计算模式”。我们希望借助本书,为广大的读者和工程技术人员提供一些灵感和启发,共同促进Serverless技术的进一步发展。
华为分布式与并行软件Lab主任 谭焜博士
[1]唐·柳宗元《剑门铭》:“鼖鼓一振,元戎启行”,其中元戎是“大兵车”,在本书中寓意为分布式并行系统“大军出行”,打造新时代的Serverless 架构与技术。