前言
风起云涌的云计算,在以虚拟化和容器化为技术特征的“资源云化”阶段,极大地简化了基础设施运维。如今,在以Serverless新理念标志的“应用云化”阶段,云计算的目标是进一步简化云开发,屏蔽云端分布式系统和中间件等的复杂性。Serverless不但能使开发者聚焦业务逻辑以实现跨越式生产力变革,而且以极致弹性和免运维等优势帮助应用降低成本、开发增效,已成为云计算“下半场”中各大厂商和开源社区竞相拥抱的战略方向和新兴技术。甚至伯克利在《简化云编程:伯克利视角下的Serverless计算》一文中预言:Serverless将会成为云时代默认的计算范式,并取代Serverful(传统云)计算模式,而其商业模式变革也被生动地类比为从传统的“租车”服务发展为真正随用随付的“计程车”服务。
广大开发者、科研人员和信息专业的本科生与研究生应该如何把握快速发展的Serverless技术浪潮呢?最为行之有效的方法之一是,通过完整剖析一个有代表性的Serverless平台的设计思路和实现方案,来深入学习和掌握Serverless的技术原理与架构精髓,这亦是本书创作的初衷。本书以华为2012实验室研制的分布式内核——华为元戎在Serverless方向的创新探索为例,详细阐述了新一代Serverless编程模型、高性能运行时、后端服务对接等一系列关键技术,并深入剖析了华为终端云基于Serverless实现快速开发和上线翻译业务的端到端商用案例,帮助读者从理论走向系统实践,身临其境地体会如何灵活运用Serverless高效构建应用。
本书的第1章重点介绍了Serverless的基础知识、关键技术和生态现状。通过对第1章的阅读,读者可以了解Serverless如何解决微服务实施的痛点,了解当前典型的Serverless平台(如Lambda)和开源系统(如OpenWhisk)等的差异化设计,以及Serverless的周边组件,如开发与部署框架、事件总线、函数工作流等,进而通过总结当前Serverless系统的不足之处及下一步技术探索方向,为读者设计Serverless应用架构提供启发和技术参考。
本书的第2~5章详细介绍构建新一代Serverless平台的核心技术。第2章以华为的华为元戎为例介绍新一代Serverless平台的设计理念与技术架构,第3~5章分别对一系列核心技术展开剖析。其中,第3章介绍有状态函数编程模型的设计原理和技术实现,并通过生动的场景案例展示有状态函数编程模型的用法与优势。第4章分析如何在函数运行时中优化冷启动、弹性伸缩和函数调度的性能,并提供具体设计方案和范例性能评测。第5章涉及用函数对接各种BaaS服务的通用框架,以华为元戎的Event Bridge和Service Bridge为例分别详解云上各种服务如何规范化触发函数,以及在函数中如何标准化调用各种后端服务,如云存储和云数据库等。
完备的后端服务如云托管、云数据库和云存储等也是Serverless平台必不可少的组成部分,因此第6~8章介绍了华为终端云为用户和开发者提供的配套服务。其中,云数据库服务是一款Serverless化的数据库,提供简单易用的端/云SDK,适用于移动应用、网页和服务器开发,方便应用数据在各个客户端之间、客户端与服务端之间自动保持同步,帮助应用开发者快速构建安全可靠且多端协同的应用程序,从而让应用开发者聚焦业务逻辑,无须关注后端系统的复杂搭建、用户数据的安全保护、多端数据的同步及服务器部署维护等,可显著提高业务构建、部署和运营效率。云存储服务用于图片、视频、文件等内容的上传、下载、归档和备份等。相比于传统的存储服务,云存储服务具有支持断点续传、网络加速、可靠安全和弹性伸缩等特性,更适合移动应用的文件管理。云托管服务为开发者的网页内容提供快速和安全的全球托管服务,支持自定义域名和证书管理,开发者只需提供申请的域名,无须关注CDN加速和SSL配置,通过控制台一键发布版本即可向全球用户分发网站内容。
虽然Serverless平台为开发者提供了一系列开箱即用的云函数和后端服务,但是开发者在尝试用新模式构建实际业务时难免会面临各种挑战,例如,业务函数的划分粒度和策略、由数据变更触发的业务流程执行及事件驱动编程等。鉴于此,本书的第9~10章以华为的实践为例,从技术选型、架构设计到业务函数的划分,再到云函数、云托管、云数据库和云存储服务的搭配使用和代码示例,对基于Serverless技术构建的翻译服务进行端到端完整解析,让读者能够快速学习和全面掌握如何运用Serverless技术高效构建应用。
“众人拾柴火焰高”,感谢华为公司2012实验室中央软件院分布式与并行软件实验室的大力支持,以及华为元戎团队的不懈投入,感谢华为终端云同仁们的倾力贡献和紧密协作。大家共同践行了“研发一代、应用一代”的务实创新精神,促成了本书中的Serverless架构和技术从原型逐步走向商用,未来更加可期!感谢电子工业出版社的宝贵建议与细致工作,这保证了本书的质量和尽早问世。另外,本书部分内容参考了公开资料和网上调研成果,在此也对相关参考文献的作者及同行致以诚挚的谢意。
由于水平有限,加之Serverless技术日新月异且应用领域广泛,书中难免有疏漏和不足之处,恳请广大读者批评指正,以便我们在后续版本中改进,并共同推动Serverless生态的蓬勃发展!