首页>参考读物>计算机科学与技术>软件与程序设计

Serverless工程实践:从入门到进阶
作者 : 刘宇 著
出版日期 : 2021-07-14
ISBN : 978-7-111-68623-1
定价 : 129.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 423
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书是一本关于Serverless架构从原理、入门到实战的技术书籍,本书通过多个开源项目(包括不限于Knative、OpenWhisk、Kubeless等)、多个云厂商的多款云产品(包括不限于阿里云函数计算、阿里云Serverless工作流、腾讯云云函数、华为云函数工作流、百度智能云函数计算、AWS Lambda、Google Cloud Platform Functions等),通过多种途径向读者介绍什么是Serverless架构、如何上手Serverless架构、不同领域中Serverless架构的应用以及如何从零开发一个Serverless应用等,希望读者通过对本书的阅读,可以对Serverless架构有一个更加全面、直观地了解,可以通过本书的抛砖引玉,帮助读者将Serverless项目真实落地,将Serverless架构融入到自己所在的领域,获得Serverless架构带来的技术红利。

图书特色

从产品、开发和工程实践3个维度全面讲解Serverless架构
国防科技大学博士,阿里云Serverless产品侧负责人撰写,Serverless Devs项目负责人Serverless Framework、Kubevela等开源项目贡献者
来自国防科大、浙大、阿里、腾讯、字节跳动、CNCF的近20位学界和业界的专家一直推荐

图书前言

Serverless架构是云计算发展的产物,它继承了云计算的优点,并具备极致弹性、按量付费、免运维等优势。Serverless架构让开发者可以将更多精力放在业务逻辑上,让资源浪费更少,让服务器运维成本更低,真正意义上做到了降本提效。
为什么写作本书
Serverless架构最近几年越来越火,它凭借极致弹性、按量付费、免运维等优势在更多领域发挥着越来越重要的作用。但是由于Serverless架构比较“年轻”,相关学习资源相对来说比较少。笔者希望通过一些真实的案例带领读者入门Serverless架构,了解如何在不同领域应用Serverless架构,并学会从零开发Serverless应用。
本书主要内容
本书是一本关于Serverless架构从原理、入门到实战的技术指南,通过多个开源项目、多个云厂商的多款云产品介绍什么是Serverless架构、如何上手Serverless架构、不同领域中Serverless架构的应用以及如何从零开发一个Serverless应用等,带领读者全面了解Serverless架构,帮助读者获得Serverless架构带来的技术红利。
本书主要包括三部分:概念与产品、开发入门、工程实践。
第一部分包括2章,介绍了Serverless架构的定义、规范、优势、面临的挑战、应用领域以及工业界和开源界的优秀项目等。
第二部分包括3章,介绍如何开发Serverless应用、如何从零搭建FaaS平台等。
第三部分是工程实践,主要内容是Serverless架构在各个领域的实战应用,涵盖运维领域、图像和音视频处理领域、人工智能和大数据领域、前端领域以及IoT等众多领域。这一部分还给出了两个完整的Serverless实战项目的从零开发过程。
除这三部分之外,本书还包括另外两章。
第0章“从云计算到Serverless”:这是全书的引入部分。众所周知,Serverless是云计算发展的必然产物,那么云计算是如何发展的?为什么会产生Serverless的概念?这个概念是谁提出的?通过这一章,读者可以对云计算的发展以及Serverless的诞生有一个基础的了解。
结束语“Serverless正当时”:介绍Serverless领域知名且活跃的开发者对Serverless的看法以及期待。希望读者通过这一部分可以归纳出“自己心中的Serverless”,也希望这些前辈们的看法、思想可以让读者对Serverless有更深入的了解。
如何阅读本书
读者应当具有一定的编程基础,例如熟悉Node.js、Python等语言,同时也需要对云计算有初步的了解,有相关云产品使用经验。
本书采用循序渐进的方法,从什么是Serverless架构开始说起,通过零基础上手Serverless架构、建设自己的FaaS平台等帮助读者快速入门Serverless架构,并通过领域实战、应用案例帮助读者拓展思路。我建议读者通过下述“三遍阅读法”来掌握书中内容。
第一遍阅读,通读全书,主要弄清楚概念,再完成Serverless的基础入门,并对Serverless在各个领域的应用有相对基本的认识,对如何完整地开发一个Serverless应用有基础的了解。
第二遍阅读,专攻领域实战,通过领域实战提供的开源代码,深入了解Serverless架构的运行原理、开发技巧等,可以通过笔者的抛砖引玉发挥自己的思路,在更多领域将Serverless架构与之结合。
第三遍阅读,边读边实践,加深理解Serverless架构概念的同时,动手从零开发一款Serverless应用并将其部署上线,从而完整地理解Serverless架构的原理、优势,并对Serverless的开发技巧有更加深入的认识和独到的见解。
阅读过程可能枯燥,但只有在反复的研读中,自己对Serverless架构的理解才能不断深入。另外,Serverless架构的发展速度是非常快的,本书的案例代码可能会失效,笔者会尽快更新相关代码仓库。也希望读者可以利用好这些仓库。
致谢
在编写本书的过程中,笔者遇到过很多的困难和挑战。在此特别感谢阿里云云原生团队的小伙伴们,是你们的支持和鼓励让本书得以顺利完成。
感谢杨秋弟(曼红)、杨浩然(不瞋)等前辈,是你们在这本书从开始到结束的过程中,不断给予鼓励和支持,才得以让本书如期顺利完成;感谢国防科技大学窦勇教授、浙江大学卜佳俊教授等提供的帮助以及对本书提出的极具建设性的意见;感谢姜曦 (筱姜)在本书编写、校对、出版等整个过程中给予鼓励和支持并帮忙校验、协调资源;感谢阿里云UED团队,尤其是周月侨(小取)同学,帮忙对本书的部分插图等进行设计、规范定制;感谢罗松(西流)、张千风(千风)等在本书编写过程中指导部分代码的完成以及功能、案例的实现;感谢陈绪(还剑)、钱梅芳(宝惜)等前辈对本书提供帮助和建设性意见。同时,也要感谢我的家人对我工作的鼓励和支持,对我每走一步的信任和鼓励;感谢身边的小伙伴对我的关心和帮助。感谢身边每一个人,谢谢你们。
由于作者水平有限,书中不足及错误之处在所难免,敬请专家和读者批评指正。

江昱(刘宇)
2021年4月

上架指导

计算机/云计算

封底文字

王光(九十) 阿里巴巴高级前端专家、Node.js/Serverless方向负责人
作者拥有丰富的Serverless工程实践经验,从多个实用场景出发,阐述了未来我们该如何用“云”,十分值得阅读。
张磊 阿里云工程师/CNCF(云原生计算基金会)TOC
本书从 Serverless理论出发,循序渐进地讲解了这项技术的来龙去脉和各项实践,是入门 Serverless 技术不可多得的学习资料。
郑能干 浙江大学求是高等研究院、计算机学院教授
作者通过多个领域的实战示例,与读者分享了Serverless架构的典型应用场景和关键开发经验,相信阅读本书可以帮助您更好地了解Serverless架构,在云计算新时代发挥所长。
Jimmy Song  Tetrate 布道师/云原生社区创始人
本书讲解了主流的Serverless架构的实现和应用,可以帮助你快速了解Serverless架构。
堂主 字节跳动前端基础工程Serverless负责人
这本新书不仅介绍了Serverless的发展背景及认知理念,同时也涉及 Serverless 在不同场景的应用,以及与不同职能的结合,相信本书会帮到正在Serverless方向探索的你。
贝毅君 浙江大学副研究员
很欣慰看到这样一本Serverless架构的实战指南,从概念与规范开始为读者介绍Serverless架构,同时带有大量的场景案例,分享了大量的开发经验。期待这本书为Serverless开发者、爱好者带来切实的帮助。
王俊杰 前腾讯云Serverless技术专家/前百度技术经理
刘宇在Serverless领域探索多年,经验颇丰。本书在内容上从基本原理到业务实践,融会贯通,无论是初学者、Serverless开发者,或是系统架构师,阅读本书一定会有所收获。
Donald Liu  CNCF(云原生计算基金会)开发者布道者
创建和运行开源项目,并编写相关内容是一种宝贵的能力。这本书推荐给各位喜欢Serverless、开放技术和开源项目的朋友。

作者简介

刘宇 著:暂无简介

图书目录

序一
序二
序三
序四
序五
序六
序七
序八
前言
第0章 从云计算到Serverless 1
第一部分 概念与产品
第1章 什么是Serverless 8
1.1 Serverless的定义 8
1.1.1 广义定义探索 8
1.1.2 Serverless工作流程 10
1.2 Serverless规范 12
1.2.1 FaaS解决方案模型 12
1.2.2 函数的规范与定义 12
1.2.3 函数生命周期 15
1.2.4 其他规范 20
1.3 Serverless的特点 35
1.3.1 优势与特点 35
1.3.2 面临的挑战 38
1.4 典型应用场景 43
1.4.1 实时文件处理 44
1.4.2 数据ETL处理 44
1.4.3 实时数据处理 44
1.4.4 AI推理预测 45
1.4.5 IoT后端 45
1.4.6 Web应用/移动应用后端 46
1.4.7 音视频转码 46
1.5 未来可期 47
第2章 主流Serverless平台和产品 48
2.1 工业FaaS平台 48
2.1.1 AWS Lambda 48
2.1.2 Google Cloud Functions 50
2.1.3 Azure Functions 52
2.1.4 阿里云函数计算 54
2.1.5 华为云函数工作流 57
2.1.6 腾讯云云函数 59
2.2 开源FaaS平台 60
2.2.1 Knative 61
2.2.2 Apache OpenWhisk 65
2.2.3 Fission 69
2.2.4 Kubeless 76
第二部分 开发入门
第3章 从零入门Serverless 84
3.1 创建函数 84
3.1.1 AWS Lambda 84
3.1.2 Google Cloud Functions 87
3.1.3 阿里云函数计算 89
3.1.4 华为云函数工作流 91
3.1.5 腾讯云云函数 94
3.2 开发一个Serverless应用 97
3.2.1 知识准备 98
3.2.2 项目开发 101
3.2.3 举一反三 105
3.3 触发器 106
3.3.1 定时触发器 108
3.3.2 对象存储触发器 108
3.3.3 API网关触发器 108
3.4 传统Web框架迁移 113
3.4.1 请求集成方案 114
3.4.2 其他方案 117
第4章 Serverless应用开发、调试与优化 120
4.1 Serverless应用开发观念的转变 120
4.1.1 文件上传方法 120
4.1.2 文件读写与持久化方法 124
4.1.3 慎用部分Web框架的特性 125
4.1.4 要注意应用组成结构 125
4.2 Serverless应用调试秘诀 126
4.2.1 在线调试 126
4.2.2 本地调试 129
4.2.3 其他调试方案 130
4.3 细数Serverless的配套服务 132
4.3.1 开发者工具 132
4.3.2 Serverless Workflow 138
4.3.3 可观测性 139
4.4 Serverless应用优化 141
4.4.1 资源评估依旧重要 141
4.4.2 合理的代码包规格 141
4.4.3 合理复用实例 142
4.4.4 善于利用函数特性 143
第5章 从零搭建FaaS平台 146
5.1 零基础上手Knative应用 146
5.1.1 Knative简介 146
5.1.2 Knative部署 147
5.1.3 体验测试 150
5.2 自建Apache OpenWhisk平台 152
5.2.1 OpenWhisk简介 152
5.2.2 OpenWhisk部署 152
5.2.3 开发者工具 156
5.2.4 体验测试 157
5.3 快速搭建Kubeless平台 157
5.3.1 Kubeless简介 157
5.3.2 Kubeless部署 158
5.3.3 下载命令行工具 159
5.3.4 体验测试 160
第三部分 工程实践
第6章 Serverless与监控告警、自动化运维 164
6.1 通过Serverless架构实现监控告警功能 164
6.1.1 Web服务监控告警 164
6.1.2 云服务监控告警 172
6.1.3 总结 175
6.2 钉钉/企业微信机器人:GitHub触发器与Issue机器人 176
6.2.1 GitHub触发器的实现 176
6.2.2 GitHub Issue的识别 179
6.2.3 钉钉机器人/企业微信机器人的实现 181
6.2.4 Issue机器人的实现 183
6.2.5 总结 185
6.3 触发器和函数赋能自动化运维 186
6.3.1 云盘自动快照 186
6.3.2 服务器定时重启 188
6.3.3 总结 190
6.4 Serverless CI/CD实践案例 191
6.4.1 CI/CD实践 191
6.4.2 总结 196
第7章 Serverless在图像、音视频处理中的应用 197
7.1 Serverless架构下的图片压缩与加水印 197
7.1.1 Serverless的图片压缩方案 197
7.1.2 Serverless的图片加水印方案 204
7.1.3 项目部署与测试 205
7.1.4 总结 208
7.2 Serverless架构下的音视频处理 209
7.2.1 准备ffmpeg 210
7.2.2 音视频处理 212
7.2.3 总结 222
7.3 Serverless:让图像合成更简单 222
7.3.1 为头像增加圣诞帽 222
7.3.2 为头像增加固定装饰 230
7.3.3 总结 233
第8章 Serverless架构下的人工智能与大数据实战 235
8.1 20行代码:Serverless架构下用Python轻松实现图像分类和预测 235
8.1.1 ImageAI与图像识别 235
8.1.2 项目Serverless化 237
8.1.3 项目部署与测试 241
8.1.4 项目优化 242
8.1.5 总结 244
8.2 Serverless与NLP:让我们的博客更有趣 244
8.2.1 赋能网站SEO 244
8.2.2 “为你写诗”小工具 251
8.2.3 总结 258
8.3 基于Serverless架构的验证码识别功能 258
8.3.1 浅谈验证码 258
8.3.2 验证码识别 260
8.3.3 基于Serverless架构的验证码识别 266
8.3.4 总结 272
8.4 函数计算与对象存储实现WordCount 272
8.4.1 理论基础 273
8.4.2 功能实现 274
8.4.3 测试体验 279
8.4.4 总结 281
第9章 Serverless架构在前端领域的应用 282
9.1 初识Serverless SSR 282
9.1.1 Serverless与SSR 283
9.1.2 总结 285
9.2 Serverless架构下的前后端一体化 286
9.2.1 前后端一体化的发展 286
9.2.2 Serverless与前后端一体化 288
9.2.3 总结 291
第10章 Serverless架构在IoT等其他领域的应用 292
10.1 基于Serverless架构与WebSocket技术的聊天工具 292
10.1.1 原理解析 292
10.1.2 匿名聊天室 295
10.1.3 体验与测试 302
10.1.4 总结 305
10.2 Serverless与IoT:为智能音箱赋能 305
10.2.1 天猫精灵 306
10.2.2 小爱同学 310
10.2.3 总结 313
10.3 用手机写代码:基于Serverless的在线编程能力探索 313
10.3.1 在线编程功能开发 314
10.3.2 更贴近本地的代码执行器 318
10.3.3 总结 328
第11章 Serverless工程化项目实践 330
11.1 基于Serverless架构的博客系统 330
11.1.1 项目背景 330
11.1.2 需求分析 331
11.1.3 整体设计 331
11.1.4 项目开发 335
11.1.5 项目预览 346
11.1.6 思路拓展 350
11.1.7 总结 355
11.2 基于Serverless架构的人工智能相册小程序 355
11.2.1 项目背景 355
11.2.2 需求分析 356
11.2.3 整体设计 357
11.2.4 项目开发 366
11.2.5 项目预览 386
11.2.6 经验积累 388
11.2.7 总结 391
结束语 Serverless正当时 392
附录 部分代码汇总 400

教学资源推荐
作者: [美]艾伦 A. A. 多诺万(Alan A. A. Donovan)布莱恩 W. 柯尼汉(Brian W. Kernighan)著
作者: 邱李华 曹青 郭志强
作者: Kenneth Barclay;John Savage
参考读物推荐
作者: [美]马克·赫克勒(Mark Heckler) 著
作者: [美]托马斯·厄尔(Thomas Erl) 罗伯特·科普(Robert Cope) 阿敏·奈瑟鲍尔(Amin Naserpour)著
作者: (美)Mark Guzdial,Barbara Ericson 著