Serverless架构:从原理、设计到项目实战
  • 推荐0
  • 收藏0
  • 浏览64

Serverless架构:从原理、设计到项目实战

刘宇 (作者) 

  • 书  号:978-7-121-37628-3
  • 出版日期:2019-11-01
  • 页  数:
  • 开  本:
  • 出版状态:图书立项
  • 维护人:董英
《Serverless架构:从原理、设计到项目实战》面向有兴趣使用或者正在使用Serverless架构部署相关应用与服务的技术人员,通过对Serverless基础的介绍、对相关规范和标准的描述,对架构、应用的讲解与阐述,为读者提供相对客观和完整的学习资料及文档资料;通过网站后端、监控告警、大数据与人工智能、物联网与高可用服务等不同场景的应用实例,以及简单博客系统的建设与基于人工智能的相册小程序系统的建设等完整项目,为读者提供更多的灵感与启发。基于本书所提供的十余个场景实践及两个完整项目,读者不仅可以快速入门Serverless架构,也可以将这些应用场景的代码直接应用到测试项目中,快速体验Serverless架构带来的便利与变化。
《Serverless架构:从原理、设计到项目实战》不仅包括Serverless架构的相关知识、规范标准、应用实践,也包括工业化产品和开源产品的相关探究和分析,还包括开源工具的介绍和使用方法,可以让读者对目前的Serverless相关产品有更深入的了解,甚至可以自行搭建属于自己的FaaS平台。本书的特色是学习与实践结合,希望通过广泛的场景抛砖引玉,让读者读完本书之后不仅可以知道什么是Serverless架构,更可以知道Serverless架构为我们带来了哪些变化、可以做哪些事情,最主要的是,可以知道Serverless架构能为自己做哪些事情,并进行相关实践。
腾讯一线工程师Serverless实战经验总结,包括Serverless基础知识、各种应用场景实践、大型综合案例,适合架构师、开发者及各Serverless流派
刘宇
腾讯云SCF团队后台研发,毕业于浙江大学,硕士研究生。读书期间,先后参加各类创新创业比赛,学科竞赛,累计获得国家级奖励十余项,省级奖励三十余项,其他各类奖励累计六十余项。毕业后,曾在腾讯科技、滴滴出行等公司实习工作,在腾讯云曾参与Tencent Cloud云API Explorer产品设计、Serverless自动扩缩容模块以及开发者工具等模块的相关工作,多次参与各类演讲分享,例如在中国DevOps社区-深圳等相关活动中分享Serverless相关技术与产品,同时在社区中也非常活跃,曾多次参加各类Serverless相关技术沙龙、CNCF网络研讨会,Serverlesss架构相关分享会等,是Serverless架构倡导者和先行者,致力于将Serverelss架构推荐到更多行业与领域,并为其提供应用策略以及解决方案等。
推荐序1

Fourteen years ago, in 2005, it was unfathomable to imagine building an internet application without spending millions of dollars in upfront capital and tens of thousands of working hours building one’s own data center and developing the requisite software stack — constraining this domain to a small set of companies and stymying product innovation.
The launch of Amazon Web Services’ Elastic Compute Cloud in 2006 enabled customers to skip the capital intensive process of building data centers and purchasing hardware. This model, known as Infrastructure as a Service(IaaS), allowed customers to rent compute capacity in a pay as you go model — opening up internet application development to a broader audience. However, applications still required building and operating associated backend systems on top of hardware — requiring large engineering teams whose sole focus is on backend infrastructure, not product innovation. Cloud computing remained a product for operators, not for product innovators or individual developers.
Today, we are at a turning point in cloud computing. Serverless computing — the idea that customers only write the required business logic while the cloud provides everything else — represents a quantum leap in cloud computing. Finally, it’s possible for hardware, infrastructure, application platforms, and operations to be abstracted away, freeing developers to focus solely on product innovation. Industry trendsetters such as Netflix have already shifted parts of their core business logic over to serverless — improving product innovation, reducing cost, and enhancing reliability. Application platforms built on serverless are emerging, such as WeChat mini-programs, allowing individual developers to productize and scale them for millions of users quickly.
This book serves as an excellent introduction to readers interested in serverless architectures — striking a balance between theory and application — while also introducing the history and background.
The serverless revolution will bring cloud computing to the masses. I eagerly await the products this revolution will unlock!

Yunong Xiao
腾讯云中间件总经理、首席架构师
2019年10月18日




推荐序1大意如下:

14年前,也就是2005年,那时我们无法想象在不花费数百万美元和数万小时构建自己的数据中心的情况下,能够开发一款软件或者构建一个网络应用,当时,这也是阻碍一些小型团队持续创新与发展的重要原因。
2006年,Amazon Web Services推出弹性计算云服务,该项服务使客户可以跳过建设数据中心和购买硬件的资本密集型流程,被称为Infrastructure as a Service,即IaaS。IaaS允许客户以“即用即付”的模式租用计算能力,从而可以面向更广泛的客户开放应用开发所必需的基础设施。然而,应用程序仍然需要在硬件上构建,同时需要运行相关的后端系统,这同样需要大型工程团队全身心投入和关注后端基础设施,而不是只关注产品创新等。云计算仍然是云厂商的产品,而不是个人开发者的产品。
今天,我们正处于云计算发展的转折点。Serverless—一个客户仅编写所需的业务逻辑代码而云厂商提供其他所有功能的架构,代表了云计算的一种巨大进步与飞跃。这个架构有可能抽象出硬件、基础架构、应用程序平台和操作等,这个架构可以使开发人员将精力完全放在产品创新上。像Netflix这样的行业引领者已经将其部分核心业务逻辑实现转移到了Serverless架构上,从而促进了产品创新,降低了成本并增强了可靠性。建立在Serverless架构上的应用平台正在兴起,例如微信小程序,它使个人开发者可以快速为数百万用户提供稳定的产品和服务。
该书围绕Serverless架构,不仅有历史和背景的相关描述,还有理论基础的总结和应用实践的分享,对于对Serverless架构感兴趣的读者来说,是一本不错的书籍。
Serverless革命将把云计算带给大众。我热切期待这场革命将解锁的产品!


推荐序2

从简单的C/S、B/S到云时代,是系统架构的阶段性跨越。云是目前所有用户服务、客户服务不可忽视的架构基础,Serverless是云架构发展趋势中一股强劲的潮流。
Serverless的出现使得单一职责和关注分离的思想有了更进一步的落地。从业务服务及应用开发的角度看,Serverless带来的优势非常明显:高扩展性、低运维成本、低开发成本。让更合适的“人”做更合适的事,业务方可以将更多的精力放到业务创新上。
Serverless还是较新的概念,Serverless本身及Serverless相关生态还需要我们共同建设。我们相信,在不久的将来Serverless会成为中小企业的首选系统架构,Serverless架构落地应用也会催生更多的业务创新,我们最终服务的用户及客户也会从技术发展中获得更多的收益,包括用户体验及经济收益等。
本书从全局考虑,较为全面地介绍了Serverless知识体系,内容涵盖Serverless技术入门、架构到复杂应用构建,既有基础理论,也有方法指导,更包含丰富的实战案例,是一本Serverless领域必备的技术丛书。

高磊
阅文集团技术部总经理

前言
云计算的不断发展给社会带来了诸多便利,云计算与大数据、人工智能的结合,更让我们的生活悄然发生着翻天覆地的变化。从IaaS到PaaS,再到如今的FaaS,每一个阶段都是人类文明前行的一小步,但却是当前技术发展的一大步。Serverless自概念被提出到现在,搜索热度与关注度、相关开源项目的增长速度与社区活跃度,都充分显示了广大云厂商、开发者对这个架构的支持和期待。甚至有人说Serverless才是真正的云计算,这种说法可能有些夸张,但是不可否认,Serverless技术确实在逐渐融入人们的生活并改变世界,无时无刻不在向我们阐述“云时代”真的要到来了。
本书将通过对Serverless架构的基本描述,介绍其发展历史、应用场景及未来展望,让读者可以更好地了解什么是Serverless及Serverless的过往、未来。本书也对Serverless架构的规范、标准等进行了描述,对开源框架、开源工具、工业化产品进行了相关分析,让读者在明白如何使用Serverless或者Serverless有哪些特性的同时,可以真正地使用Serverless相关产品,甚至可以通过开源项目搭建一套自己的Serverless服务。最后,本书通过监控告警、网站后端、人工智能、大数据、物联网、高可用等多个领域的场景实践,以及两个完整的项目实战,并且与Web应用、微信小程序、快应用等结合,为读者进行了更加细致的分析和讲解,希望通过这种方式使读者不仅知道Serverless是什么,Serverless能做什么,还可以获得更多的启发,并将Serverless架构应用于实战,通过Serverless架构创造更多的价值,实现自身业务的快速上云。
本书共分为7章,详细介绍了Serverless的概念、标准规范、场景实践及项目实战。
第1章,主要介绍什么是Serverless、Serverless架构的优势和劣势、影响和价值、典型应用场景及对未来的展望,这一章是Serverless架构的介绍部分,读者可以对Serverless架构有一个全面深刻的认识,甚至可以评估出自己目前的产品是否适合接入Serverless架构、如果接入会有哪些好处和变化等。
第2章,主要介绍Serverless相关的标准和规范、开源产品发展情况、工业化产品发展情况及开发工具建设情况等。读者可以明确地知道Serverless架构的组成及各种相关产品的关系等,同时通过对开源产品的分析和探讨,深入了解OpenWhisk、Fission、Kubeless等相关开源项目,甚至可以动手搭建一个属于自己的Serverless平台。通过对工业化产品的分析,读者可以知道AWS、Google、Azure、腾讯云等云厂商在Serverless架构方面的发展情况。通过开发者工具部分,读者可以明白自己如果使用Serverless架构,应该如何进行开发。
第3、4、5章,结合Web服务、监控告警、大数据、人工智能及物联网等为读者带来十余个场景实践,通过这些场景实践希望读者对Serverless架构的作用及应用场景有更多的思考、获得更多启发,并深度认识Serverless架构给开发者、运维者等带来的变化,进而将Serverless架构与自身的项目和业务结合,并拓展思路探索更多的应有场景,创造更多的价值。
第6章和第7章,是两个相对完整的实战项目,从需求分析开始,到功能设计、数据库设计、接口设计,再到后端功能实现、前端功能实现,最后部署上线,通过将对象存储、云数据库及云函数、API网关等产品进行融合,构建出完整的Web项目和微信小程序项目。在这两个项目中有大量的人工智能技术的应用,包括自然语言处理、推荐系统及计算机视觉等技术,不仅为学习增加了趣味性,也提高了项目的应用价值。
本书在编写过程中力求深入浅出、重点突出、简明扼要,尽可能方便不同专业背景和知识层次的读者阅读,同时通过基础知识与实践项目结合,力求为读者打造一种可学习、可实践、可思考、可探索的阅读体验。
在本书的编写过程中,腾讯云Serverless团队给予了大力支持,包括Yunong、Cliff、Scott、Horace等在内的前辈们都提供了大量帮助。Tina、Liujiang等也对本书的编写及相关文章的发表等提供了重要帮助和保障。在此特别感谢大家。另外,本书部分内容参考了公开资料和网络上的资源,在此也对相关作者致以深深的感谢。
最后需要说明的是,Serverless是目前非常火的一种技术,其底层原理相对复杂,应用领域相对广泛,因此编写一本完美的Serverless图书绝非易事,书中难免存在疏漏或者错误,希望广大读者不吝赐教。如有任何建议、意见或者疑问,请及时联系作者,以便在后续版本中改进和完善。

目录

第1章 初识Serverless 1
1.1 什么是Serverless 2
1.2 优势与劣势 6
1.3 影响力和价值 11
1.4 技术难点与挑战 14
1.5 典型应用场景 18
1.5.1 视频转码服务 18
1.5.2 数据ETL处理服务 19
1.5.3 网站(服务)后端 20
1.5.4 人工智能推理预测 20
1.5.5 物联网相关应用 21
1.6 发展与展望 21
第2章 Serverless入门 24
2.1 Serverless基础 25
2.2 Serverless架构规范 28
2.2.1 处理模型 28
2.2.2 函数相关规范 29
2.2.3 函数生命周期 32
2.2.4 工作流程 37
2.3 事件与规范 39
2.3.1 相关术语 39
2.3.2 上下文属性 40
2.4 开源项目与技术 44
2.4.1 OpenWhisk项目 44
2.4.2 Fission项目 54
2.4.3 Kubeless项目 70
2.5 工业化产品 78
2.5.1 AWS Lambda 78
2.5.2 Google Cloud Function 80
2.5.3 Azure Functions 80
2.5.4 腾讯云SCF 82
2.6 开发运维工具 83
2.6.1 CLI命令行工具 83
2.6.2 插件 91
第3章 Web与监控告警场景实践 94
3.1 运维、监控与告警 95
3.1.1 网站状态监控告警 95
3.1.2 服务状态监控告警 107
3.2 Web后端与应用服务端 114
3.2.1 上传图片加水印 114
3.2.2 用IP地址查天气并在小程序中应用 122
3.2.3 简易用户反馈功能与快应用实践 136
第4章 大数据与人工智能场景实践 147
4.1 大数据技术之MapReduce的简单实现 148
4.2 人工智能领域的实践 158
4.2.1 自然语言处理为你的网站赋能 158
4.2.2 智能客服与微信小程序 163
4.2.3 简单的车牌识别系统 174
4.2.4 视觉:对象检测系统 178
第5章 物联网和其他场景实践 190
5.1 物联网相关—定制智能音箱小工具 191
5.2 其他场景实践 197
5.2.1 OJ判题机/小程序在线编程系统实现 197
5.2.2 Serverless与高可用服务—使用云函数实现双机存储 202
5.2.3 Serverless与高可用服务—基于Serverless架构的高可用模型 206
5.2.4 微信公众号机器人 215
第6章 实战:Serverless与CMS 224
6.1 项目背景 225
6.2 项目设计 225
6.2.1 功能设计 225
6.2.2 数据库设计 229
6.2.3 接口设计 231
6.3 数据库开发 239
6.4 后端开发 241
6.5 前端开发 253
6.6 功能演示 257
6.7 项目总结 260
第7章 实战:小程序图片管理系统 261
7.1 项目背景 262
7.2 项目设计 262
7.2.1 功能设计 262
7.2.2 数据库设计 266
7.2.3 接口设计 268
7.3 数据库开发 275
7.4 后端开发 277
7.5 前端开发 298
7.6 效果展示 301
7.7 项目总结 304

读者评论

相关博文