首页>参考读物>计算机科学与技术>计算机网络

Serverless从入门到进阶:架构、原理与实践
作者 : 方坤丁,孙远高 著
出版日期 : 2021-06-02
ISBN : 978-7-111-68255-4
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 292
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

内容简介
这是一本从产品和技术两个维度全面讲解Serverless的著作,涵盖Serverless的架构设计、技术原理、开发流程、实战案例等4大核心主题。作者是腾讯云Serverless的高级产品经理和高级研发工程师,从零开始参与了腾讯云Serverless项目的建设。
全书共15章,内容从逻辑上可分为五个部分:
第1部分(第1章) Serverless基础
主要介绍了Serverless的概念、发展历程、基本特点、应用场景、框架和生态,以及它为开发者、企业和云计算带来的作用和优势。
第二部分(第2~4章) Serverless架构和原理
首先介绍了Serverless的整体架构,以及其中的FaaS架构和BaaS架构,然后深入分析了FaaS层好BaaS层的底层原理。
第三部分(第5~9章) Serverless开发流程
从上下游生态的视角讲解了如何开发和部署一个完整的Serverless应用,包括开发、调试、测试、部署、CI/CD、运维等全生命周期的各个环节。
第四部分(第10~14章) Serverless实战案例
涵盖了Serverless的典型应用场景并提供丰富的实战案例和Z佳实践,包括如何将传统的Web服务迁移到Serverless架构、Serverless SSR应用场景、全栈后台管理系统和基于热门语言TypeScript开发的短链接服务等。
第五部分(第15章) Serverless趋势预测
首先介绍了当前学术界在Serverless领域的研究方向、重点以及取得的成果,然后介绍了伯克利大学对Serverless未来10年发展趋势的预测。

图书特色

腾讯云Serverless项目早期参与者撰写,基于腾讯云、阿里云和亚马逊云等多个云厂商的产品和技术
从产品和技术两个维度展开,全面讲解Serverless的架构设计、技术原理、开发流程、实战案例

图书前言

为什么要写这本书
2009年,加州大学伯克利分校发表了一篇论文,预言云计算将是未来重要的技术趋势。十年后的 2019年,该校对Serverless技术再次进行预测,认为Serverless技术是未来十年的技术趋势。Serverless计算被认为是云主机、容器之后的第三代计算形态,而Serverless和云平台的结合,也让该技术得到了前所未有的延伸和迅速发展。那么,为什么业界对这项技术如此看好?Serverless究竟有什么魔力,能同时获得工业界和学术界的青睐呢?
笔者身为云计算行业的从业者,初识Serverless是由于工作原因。Serverless相关产品是云平台服务的一部分,能够以解决方案的形式供客户使用,笔者也因此很荣幸地接触到了不同行业、不同需求的客户。在深入了解Serverless的过程中,笔者进一步感受到了Serverless概念之宏大,覆盖范围之广泛,便对这项技术产生了热情,并真正爱上了它。就如同所有改变世界的技术一样,这项技术在一定程度上实现了范式转变(paradigm shift)。就像在200年前,人们畅想出行未来的时候只能想到一匹跑得更快的马,而汽车横空出世,彻底改变了人们的出行方式。Serverless技术在一定程度上通过弹性伸缩、按需付费等特性,赋能开发者和企业,通过降低成本、提升效率的方式,实现了云计算的革命和企业数字化的范式转变。
在2019年10月,全球最受欢迎的开源框架Serverless在国内率先支持了腾讯云的部署。作为第一批测试验收该能力的人之一,笔者犹记得使用Serverless命令行工具几秒钟就部署完了一个对象存储桶时那种奇妙的心情。通过用户友好的交互式页面和大量的默认配置,Serverless框架结合云基础服务,真正实现了自顶向下的服务构建,改变了传统自底向上的思路,让开发者和企业可以更关注业务逻辑的实现,无须管理、配置和运维底层资源。这正是Serverless的迷人之处。
当然,Serverless技术也并不是“银弹”,在上下游生态中,在开发到发布的整个生命周期中还有许多能力需要补齐,因此企业在技术选型的过程中往往要考虑优劣,选择适合自身场景的方案。但在技术选型时,选择一个面向未来、持续受到关注和发展的技术则是对企业非常有利的。笔者可以自信地说,长期来看,Serverless 技术绝对值得企业拥抱,值得开发者学习。
国内目前关于Serverless技术的参考材料和实战案例依然有限,因此,本书将结合云计算及Serverless,通过阐述Serverless的技术原理、优势和特点,和读者一起探索为什么说Serverless技术是未来的趋势。此外,通过介绍Serverless架构包含的内容,让读者对该架构及上下游依赖有更加清晰的认识,并全面了解构建一个企业级完整Serverless架构所需的能力。最后,本书结合Serverless典型场景,带领读者基于Serverless架构实现具体的应用案例,从而在实践中感受这项技术的强大、便捷和易用。
读者对象
根据不同的场景和需求,推荐以下人群阅读此书。
大公司的开发、运维人员,ToB方向产品经理和运营人员等。
前端工程师、全栈工程师。
云计算、SaaS行业从业人员,如架构师、商务经理、售后支持人员等。
相关专业的高校学生和教师。
IT行业咨询师、分析师。
对Serverless感兴趣,希望独立开发应用的爱好者。
本书特色
完整介绍Serverless架构,内容涵盖腾讯、阿里巴巴、亚马逊等多个云厂商的产品,并对它们进行横向对比和分析。
知名云平台提供商腾讯云Serverless高级产品经理和高级研发工程师联合撰写,包含丰富的客户场景和最佳实践,可以为有相似需求的企业提供实战参考。
深入浅出地讲解Serverless技术的发展、原理和特性,针对Serverless中的FaaS和BaaS概念进行分析和介绍。
提供丰富的实战案例,覆盖Serverless典型应用场景,包括SSR、AI、物联网等。
结合Serverless开源工具、上下游生态,打造完整的Serverless开发流程。不仅介绍了最受欢迎的开发平台Serverless框架,还提供了多种CI/CD解决方案,包含Travis CI、GitHub Actions、Jenkins、Coding DevOps等。
如何阅读本书
本书内容从逻辑上分为四个部分。
第一部分(第1章)Serverless基础,主要介绍了Serverless的概念、发展历程、基本特点、应用场景、框架和生态,以及它为开发者、企业和云计算带来的作用和优势。
第二部分(第2~4章)Serverless架构和原理,首先介绍了Serverless的整体架构,然后深入分析了FaaS层和BaaS层的底层原理。
第三部分(第5~9章)Serverless开发流程,从上下游生态的视角讲解了如何开发和部署一个完整的Serverless应用,包括开发、调试、测试、部署、CI/CD、运维等,全生命周期的各个环节。
第四部分(第10~15章)Serverless实战案例,涵盖了Serverless的典型应用场景并提供丰富的实战案例和最佳实践,包括如何将传统的Web服务迁移到Serverless架构、Serverless SSR应用场景、全栈后台管理系统和基于热门语言TypeScript开发的短链接服
务等。
第五部分(第15章)Serverless趋势预测,首先介绍了当前学术界在Serverless领域的研究方向、重点以及取得的成果,然后介绍了伯克利大学对Serverless未来10年发展趋势的预测。
勘误和支持
由于作者的水平有限,编写时间仓促,书中难免会有一些错误或者表述不准确的地方,恳请读者批评指正。为此,我们创建了一个GitHub项目https://github.com/yugasun/serverless-book/issues,读者可以将书中的错误或者遇到的任何问题创建为GitHub issue,我们将在线上为读者提供解答。书中的全部源文件除可以从华章网站(hzbook.com)下载外,还可以从GitHub下载。本书涉及的所有源码均在GitHub开源组织Serverless Plus中(https://github.com/serverless-plus),我们也会将对应的功能更新及时发布到GitHub上。如果你希望和作者进一步交流,可以发送邮件到邮箱 tinafangkd@qq.com 以及 yuga_sun@163.com。期待能够得到读者的真挚反馈,并在交流中与大家共同进步。
致谢
感谢肖雨浓、罗茂政、张浩、黄文俊、卢萌凯、李啸川、王俊杰、刘传、蔡卫峰等腾讯云的同事对我们提供的支持和指导,本书的内容和许多案例都源自腾讯云团队的经验积累。作为直面客户的平台提供方和一线开发者,腾讯云团队更能深切感受到行业发展之快,需求之强烈,腾讯云的存在也让Serverless行业更加繁荣,未来可期。
感谢机械工业出版社华章分社的编辑杨福川和韩蕊在这段时间对我们的支持,他们的帮助和指导让我们能够顺利完成书稿。
最后感谢所有在我们创作过程中提供支持和鼓励的亲人和朋友。
谨以此书献给广大Serverless的开发者和爱好者。相信我们每个人贡献出的微小力量,能够照亮Serverless的前路。

上架指导

计算机/云计算

封底文字

随着这些年各云厂商的持续投入,业界对Serverless技术的认知也越发深刻,“Serverless化程度”逐步成为衡量各技术型产品是否先进、是否易用的重要标准。本书介绍了Serverless的历史和架构,尤其对FaaS技术进行了深入浅出的讲解,非常适合对Serverless感兴趣的人士阅读。
—— 罗茂政 腾讯云微服务产品中心副总经理

我职业生涯的大部分时间都在不同的云厂商和科技公司从事Serverless架构相关的工作。如果你正在寻找一种使用简单、操作便捷、易于扩展的云架构,那么读这本书就对了。本书的作者在Serverless领域深耕数年,是该领域的专家。十分推荐Serverless相关人士阅读本书。
—— 肖雨浓 云计算行业专家

我们认为Serverless是继虚拟机、容器之后,第三代通用计算技术,也是腾讯云战略级投入的技术赛道。本书能让读者快速熟悉Serverless技术。本书作者是国内前端、Serverless技术领域的积极布道者,我希望更多开发者参与到Serverless技术的推广中!
—— 张浩 腾讯云Serverless产品负责人

Serverless是整个计算领域的变革,绝不只是作用于某一种场景或者开发语言。此书亦是秉承了这种理念,全面地介绍了Serverless的技术原理、各种应用场景和使用方法。本书作者是国内Serverless领域较早的开发者,这本书是他们工作内容的沉淀和结晶。
—— 王俊杰 前腾讯云Serverless技术专家、前百度技术经理

作者简介

方坤丁,孙远高 著:作者简介
方坤丁
前腾讯云Serverless高级产品经理
腾讯云Serverless项目的早期参与者,有多年云计算相关产品的策划经验,对云计算行业有深刻理解。在Serverless 方面有丰富的经验,是Serverless Framework/Components等开源项目活跃贡献者,曾负责负载均衡、消息队列和云函数等产品,致力于Serverless架构中解决方案的推出和落地。熟悉 Apache Kafka、Nginx 等中间件。
曾任2018 Kafka Meetup深圳站组织者,2019 KubeCon Serverless专题演讲嘉宾,2020 QCon+及Next.js Conf演讲嘉宾。

孙远高
腾讯云Serverless高级研发工程师
熟悉Serverless架构和工程化实践,专注于Serverless开源生态建设,参与从零开发和建设腾讯云Serverless开源项目。Serverless Framework/Components开源项目的活跃贡献者,有丰富的Web开发实战经验和丰富的云计算行业经验。擅长前端工程化建设、前端自动化部署。

图书目录

前 言
第1章 全面了解Serverless 1
1.1 什么是Serverless 1
1.1.1 初识Serverless 1
1.1.2 Serverless特性举例 2
1.2 Serverless的发展历程 3
1.2.1 Serverless的产生 4
1.2.2 Serverless发展里程碑 5
1.3 Serverless的优缺点 7
1.4 Serverless的应用场景 9
1.5 Serverless框架和生态 10
1.6 本章小结 11
第2章 Serverless架构 13
2.1 Serverless架构概述 13
2.1.1 Serverless = FaaS + BaaS 13
2.1.2 传统应用架构分析 15
2.1.3 典型Serverless应用架构 16
2.1.4 Serverless架构与传统架构 17
2.2 FaaS架构介绍 17
2.2.1 FaaS架构组成 18
2.2.2 FaaS架构执行流程 18
2.3 BaaS服务介绍 20
2.3.1 BaaS服务的产生背景 20
2.3.2 BaaS服务的分类 20
2.4 Serverless服务构建的思维方式 21
2.5 本章小结 22
第3章 Serverless原理详解:FaaS层 23
3.1 事件模型 23
3.1.1 FaaS事件模型 23
3.1.2 常见触发器介绍 25
3.2 错误处理和重试机制 26
3.3 生命周期 27
3.4 冷启动优化 28
3.4.1 冷启动的产生 29
3.4.2 平台侧冷启动的优化 31
3.4.3 用户侧冷启动的规避 31
3.5 部署第一个Serverless实例 32
3.5.1 部署Hello World函数示例 32
3.5.2 参数定义 34
3.6 运行时和自定义运行时 34
3.6.1 运行时和自定义运行时的概念 35
3.6.2 自定义运行时示例 37
3.7 本章小结 39
第4章 Serverless原理详解:BaaS层 41
4.1 Serverless接入层:API网关 41
4.1.1 基本概念 42
4.1.2 网关和FaaS的联动 43
4.2 Serverless和存储 45
4.2.1 基本概念 46
4.2.2 对象存储 47
4.2.3 文件存储 49
4.2.4 存储和FaaS的联动 52
4.3 Serverless和数据库 61
4.3.1 基本概念 61
4.3.2 数据库和FaaS的联动 62
4.4 Serverless和消息队列 67
4.4.1 基本概念 67
4.4.2 消息队列和FaaS的联动 69
4.5 Serverless和日志服务 71
4.5.1 基本概念 71
4.5.2 日志服务和FaaS的联动 73
4.6 其他扩展能力 74
4.7 本章小结 76
第5章 Serverless开发工具及调试能力 77
5.1 Serverless Framework 78
5.1.1 YAML配置文件 79
5.1.2 什么是Serverless Plugin 79
5.1.3 什么是Serverless Component 80
5.1.4 Serverless Plugin与Serverless Component 81
5.1.5 安装和使用 81
5.1.6 Serverless Component部署原理 82
5.1.7 版本对比 84
5.2 Apex 85
5.2.1 安装使用 85
5.2.2 实时日志 87
5.2.3 监控数据 87
5.3 Serverless云端调试 88
5.4 本章小结 92
第6章 Serverless排障 93
6.1 Serverless监控及告警 93
6.1.1 基础指标监控 94
6.1.2 应用级别监控 94
6.1.3 Serverless告警 99
6.2 Serverless日志 100
6.3 本章小结 102
第7章 Serverless CI/CD 103
7.1 CI/CD概念和介绍 104
7.1.1 持续集成 104
7.1.2 持续交付 105
7.1.3 持续部署 105
7.1.4 CI/CD的优点 106
7.2 Serverless CI/CD介绍 106
7.3 CI/CD工具介绍 108
7.4 GitHub Actions 109
7.4.1 基本概念 110
7.4.2 创建第一个工作流 111
7.4.3 Workflow文件 114
7.4.4 Serverless结合GitHub Actions示例 116
7.5 Coding DevOps服务 123
7.6 AWS CodePipeline服务 126
7.7 本章小结 127
第8章 Serverless工作流 128
8.1 Serverless应用内的状态管理 128
8.2 Serverless状态机 130
8.2.1 状态机简介 130
8.2.2 AWS Step Function 131
8.2.3 典型场景 133
8.3 本章小结 136
第9章 Serverless资源管理和编排 137
9.1 AWS资源编排工具 137
9.1.1 AWS Cloud Formation 137
9.1.2 AWS SAM 140
9.2 Terraform 142
9.2.1 Terraform简介 142
9.2.2 使用Terraform管理云资源 143
9.3 Serverless Component 145
9.4 本章小结 147
第10章 开发Serverless Web服务:RESTful API 148
10.1 Serverless Web服务 148
10.1.1 传统的Web服务 148
10.1.2 Web框架迁移到Serverless的原理 149
10.1.3 Express.js框架开发转化层 150
10.1.4 Node.js HTTP服务监听方式的选择 152
10.1.5 转化层代码编写 153
10.2 理解RESTful架构 155
10.3 RESTful API的开发 157
10.3.1 初始化项目 157
10.3.2 Express路由的使用 158
10.3.3 改造成可执行的云函数 160
10.3.4 编写RESTful风格的服务 162
10.3.5 如何操作云数据库 164
10.4 部署应用 171
10.4.1 手动打包部署 171
10.4.2 通过Serverless Framework工具部署 174
10.5 本章小结 176
第11章 Serverless后台管理系统 177
11.1 Egg.js框架简介 178
11.2 系统框架设计 178
11.3 数据库设计 179
11.4 创建数据库 180
11.5 开发准备 182
11.6 开发后端服务 183
11.7 后端服务部署 195
11.7.1 准备工作 195
11.7.2 配置serverless.yml 196
11.7.3 开始部署 197
11.7.4 账号配置(可选) 198
11.8 前端开发 199
11.8.1 删除接口模拟 199
11.8.2 修改接口函数 200
11.8.3 修改接口工具函数 202
11.8.4 修改UI界面 205
11.9 前端部署 205
11.9.1 创建serverless.yml配置文件 205
11.9.2 执行部署 206
11.10 部署优化 207
11.10.1 改造后端YML配置 208
11.10.2 新增层配置 208
11.10.3 部署层 209
11.10.4 管理系统项目模板 210
11.11 本章小结 211
第12章 Serverless和前端的天作之合:服务端渲染SSR 212
12.1 SSR与Serverless 212
12.2 快速将SSR应用Serverless化 214
12.3 性能分析 219
12.4 方案对比分析 222
12.5 Serverless部署方案的优化 223
12.5.1 通过COS托管静态资源 224
12.5.2 静态资源配置CDN 227
12.5.3 静态资源优化前后对比 229
12.5.4 基于层部署node_modules 229
12.6 本章小结 232
第13章 基于Serverless的短链接服务 233
13.1 什么是短链接 233
13.2 短链接基本原理 234
13.3 创建数据库 235
13.3.1 表结构 235
13.3.2 创建PostgreSQL数据库 236
13.4 服务开发 241
13.4.1 TypeScript简介 241
13.4.2 基于Express服务开发 242
13.4.3 前端页面 251
13.4.4 服务Serverless化 255
13.5 本章小结 257
第14章 Serverless消息实时推送:结合WebSocket实现外卖点单系统 258
14.1 消息实时推送 258
14.2 基于Serverless实现WebSocket外卖点单系统 260
14.2.1 基于Serverless实现WebSocket协议 260
14.2.2 系统架构说明 262
14.3 应用开发及部署 263
14.4 本章小结 270
第15章 Serverless展望:云计算的下个十年 271
15.1 Serverless研究趋势 271
15.2 Serverless研究成果和亮点 273
15.2.1 Serverless和机器学习 273
15.2.2 Serverless文件系统 275
15.2.3 Serverless数据中心 277
15.3 Serverless未来的发展趋势 278
15.4 本章小结 280

教学资源推荐
作者: 朱敏 陈黎 李勤主编
作者: 李向丽 李磊 陈静 等
作者: (美)William Stallings Thomas Case 著
作者: 陈庆章 王子仁 主编 王英姿 宦若虹 毛科技 参编