内容提要
本书着眼于Serverless方向,重点介绍FaaS的架构和实现原理。本书从Serverless的理念和基础知识出发,介绍业内具有代表性的Serverless产品,进而引出字节跳动函数计算产品ByteFaaS,并介绍ByteFaaS的基本能力和特点,以及整体架构等;详细介绍传统FaaS架构,包括FaaS控制面、FaaS数据面、FaaS运行时、FaaS触发器、FaaS弹性伸缩等核心组件的设计与实现;阐述FaaS助推PaaS演进的思路和技术实践,并延伸到FaaS轻量级函数与云边一体;介绍Serverless在字节跳动的落地实践和对Serverless未来的展望。
本书对Serverless领域的用户、开发者和架构师而言都是一本不错的参考图书,希望阅读本书可以激发读者拓展Serverless领域的热情,共同建设Serve-rless生态。
前言
云计算是把基础设施抽象成服务便捷地提供给使用方,开发者利用云计算提供的各种能力,组合之后用来支撑业务逻辑的表达。Serverless进一步抽象,将所有服务器配置、维护、更新、扩展和容量规划都交由Serverless平台处理。Serverless在字面上表达了“Server+Less”的理念,希望开发者逐渐不需要关注服务器,只需关注业务逻辑,以达到敏捷开发、高弹性、低成本的目标。
Serverless理念结合业界实践,包含函数计算(FaaS)、特定应用Serverless(BaaS)等产品形态,其中FaaS作为各个基础组件的“黏合剂”,支撑了Serverless的计算体系,是整个体系最重要的组成部分。字节跳动有大规模实践FaaS的经验,希望通过本书系统的分享,向读者展示字节跳动在Serverless领域的核心技术和大规模实践。
本书的内容组织
本书共11章,着眼于Serverless方向,重点介绍FaaS的架构和实现原理。我们建议读者先阅读前两章,了解相关背景,再开始学习FaaS的工作原理和系统实现。
● 第1章简要介绍Serverless基础概念和理念,列举Serverless技术特点、技术能力和应用场景。在阅读第1章时,读者可以结合日常的开发工作进行联想,形成对Serverless应用的初步认知。
● 第2章首先列举几个具备代表性的业界产品和开源项目,帮助读者感受不同产品的发展历程和侧重点;然后进一步引出字节跳动函数计算产品ByteFaa-S,并针对其架构和应用规模等做整体介绍,帮助读者具象地理解Serverless在实际场景中的落地形式。
● 第3章详细介绍FaaS控制面,包含多地区统一控制面、容灾设计、发布上线体系、可观测性以及开发体验等方面的内容。
● 第4章详细介绍FaaS数据面,从数据面整体架构出发,对函数实例管理、函数流量调度、函数冷启动优化、函数代码分发等方面展开介绍。
● 第5章详细介绍FaaS运行时,包括平台提供的函数运行时、函数运行时隔离技术以及函数运行时性能优化等方面的内容。
● 第6章详细介绍FaaS触发器,包括HTTP触发器、服务发现触发器、定时触发器等,并针对字节跳动应用规模非常大的MQ触发器场景进行重点介绍。
● 第7章详细介绍FaaS弹性伸缩,包括其策略设计、指标系统设计、系统的分片架构等内容。
● 第8章详细介绍FaaS助推PaaS演进,包括利用FaaS开发原生应用的解决方案、多协议支持、融入字节跳动微服务治理体系ByteMesh以及异步长任务支持等内容。
● 第9章详细介绍FaaS轻量级函数与云边一体,包括轻量级函数、WebAssembly轻量级函数运行时、JavaScript轻量级函数运行时、精简架构、云边架构、存储服务以及开发者工具方面的内容。