★ 内容相当全面,包括Serverless相关知识、规范标准、工业化产品和开源产品探究和分析、开源工具的介绍和实用、各种应用场景实践、大型综合案例
★ 本书作者是腾讯云Serverless团队的主力成员,本书获得了来自云原生产业联盟、中国计算机学会、前端专家、社区组织者、阿里巴巴等专家的力荐
★ 读完本书可以你对目前的Serverless相关产品有更深入的了解,甚至可以自行搭建属于自己的FaaS平台
★ 相信各个技能水平的架构师和开发者,以及不同 Serverless 技术流派的用户都能从本书获益
《Serverless架构:从原理、设计到项目实战》面向有兴趣使用或者正在使用Serverless架构部署相关应用与服务的技术人员,通过对Serverless基础的介绍、对相关规范和标准的描述,对架构、应用的讲解与阐述,为读者提供相对客观和完整的学习资料及文档资料;通过网站后端、监控告警、大数据与人工智能、物联网与高可用服务等不同场景的应用实例,以及简单博客系统的建设与基于人工智能的相册小程序系统的建设等完整项目,为读者提供更多的灵感与启发。基于本书所提供的十余个场景实践及两个完整项目,读者不仅可以快速入门Serverless架构,也可以将这些应用场景的代码直接应用到测试项目中,快速体验Serverless架构带来的便利与变化。
《Serverless架构:从原理、设计到项目实战》不仅包括Serverless架构的相关知识、规范标准、应用实践,也包括工业化产品和开源产品的相关探究和分析,还包括开源工具的介绍和使用方法,可以让读者对目前的Serverless相关产品有更深入的了解,甚至可以自行搭建属于自己的FaaS平台。本书的特色是学习与实践结合,希望通过广泛的场景抛砖引玉,让读者读完本书之后不仅可以知道什么是Serverless架构,更可以知道Serverless架构为我们带来了哪些变化、可以做哪些事情,zui主要的是,可以知道Serverless架构能为自己做哪些事情,并进行相关实践。
推荐序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架构落地应用也会催生更多的业务创新,我们zui终服务的用户及客户也会从技术发展中获得更多的收益,包括用户体验及经济收益等。
本书从全局考虑,较为全面地介绍了Serverless知识体系,内容涵盖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
温馨提示:请使用泸西县图书馆的读者帐号和密码进行登录
在数字经济的时代背景下,传统行业的数字化转型将成为未来经济增长的重要支柱,而云原生技术作为云计算领域的新势力,得到了业界的广泛关注。从虚拟化到容器化,再到Serverless化,这些新技术的应用,打破了传统IT资源的固有边界并逐步降低颗粒度,改变了开发、运维原有的生产方式,凸显了业务应用价值并zui终实现效益zuii大化。Serverless的诞生进一步降低了企业信息化的门槛,让计算资源无处不在却又平滑无感,降低了开发的复杂度并能快速交付。Serverless本身具有自动伸缩、低成本、免运维、按需付费等特性,未来将在行业应用实践中大放异彩。本书从概念到实战,再到典型应用场景分析,较为全面地展现了Serverless的独特魅力,为从业人员通往Serverless殿堂指明了方向。
—陈屹力 云原生产业联盟秘书长、中国信息通信研究院云大所云计算部副主任
Serverless作为一种新型的互联网架构,是当前很火的技术之一,它直接或间接推动了云计算的发展。本书从一线互联网企业技术人员的角度,对目前热点的Serverless架构进行了全面系统的解读,不仅讲述了基本原理,还介绍了大量实战案例和项目,使读者能够清晰直观地了解Serverless是什么、能做什么、如何应用等。Serverless的底层原理较复杂,本书从原理、设计到实战,深入浅出地进行了介绍,适合不同知识层次的读者阅读。
—卜佳俊 浙江大学软件学院常务副院长
云计算技术可能从概念产生到实际产业化zui快的技术。在过去10年里云计算技术不断发展,从IaaS、PaaS、SaaS到FaaS、BaaS,向着理想目标逐渐逼近。Serverless技术是其zuii新进展,它让开发人员无须关注云服务的部署和管理,显著降低了开发云计算程序的难度。本书从原理出发,以当前典型的应用为案例,具体介绍了Serverless技术的使用方法,突出实用性,具有很强的实战特点。
—窦勇 国防科技大学教授、中国计算机学会体系结构专委会主任
Serverless是云计算发展到一定阶段的必然产物,未来会越来越流行,开发者将不再需要参与基础设施及软件的维护,尤其是大规模的集群运营,成本将大幅度降低。本书从Serverless入门到它在人工智能、物联网领域的应用都有详细介绍,是一本值得一读的Serverless书籍。
—于涛 腾讯前端技术通道负责人
Serverless,无服务器架构,是云计算的一种计算资源组织和分配形式。Serverless相对于传统算力,就好比高级语言相对于汇编语言,它使开发者能够将绝大部分时间用于思考和实现核心业务逻辑代码,而不耗费过多精力在系统层面的资源调度、资源分配、健壮性及扩展性方面。在Serverless架构下,开发的本质是将有限资源更多地投入到核心业务中,减少“Time to Market”,进一步提升ROI。本书来自我的好友刘宇,他细致思考,潜心写作,内容由浅入深,值得阅读。
—王俊杰 腾讯云Serverless技术专家
非常高兴看到一本介绍Serverless架构的好书面世。我在20年的软件开发生涯中反复思考过,计算能力如何才能像水一样,一拧水龙头就有,要多少有多少,要多少支付多少费用。网格计算、云主机、容器、BaaS都让我惊喜过,但是直到Serverless相关技术出现后,我才终于找到了一个兼顾灵活性、通用性、开发便利性、规模弹性、经济性的好答案。有了Serverless,我们能超低成本地快速实践创意、试错、发布,不再受限于我们的后台架构能力。希望更多的开发者拥抱Serverless,用更简单高效的方式来面对更复杂的互联网未来。
—黄希彤 前端专家、青宁信安科技CTO
在云原生和DevOps的技术背景下,Serverless的出现让开发者可以更加专注于业务逻辑和应用的实现。感谢本书作者在中国DevOps社区所做过的分享,相信本书能够使更多对Serverless感兴趣的朋友们获益。本书从实战出发,理论结合实践,可以指导那些新技术的探索者们获得第一手实战经验。
—刘征 Elastic技术布道师、DevOps社区组织者
前端行业经过十多年的刀耕火种,逐渐实现了工程化、开发模式规范化,进入深水区。Serverless特别是 FaaS 的逐步广泛应用,给前端带来了从纯前端研发到应用研发转变的可能,这不仅会涉及新领域带来的工作职责的变化,还可能带来新的高效的研发模式。本书能够从概念到原理清楚地讲解Serverless的本质及应用,建议想更加深入理解Serverless的前端同学都阅读一下。
—侯鹏 阿里巴巴神马搜索前端技术负责人
Serverless技术正在成为微服务、容器云之后的另外一个架构热点。这一技术进一步淡化了应用生命周期中的资源运维环节,以业务支撑为核心,为应用提供完整的构建和运行支持。本书作者是腾讯云Serverless团队的主力成员,由浅入深地对 Serverless 技术进行了系统全面的讲解,并给出了大量实际应用方法。相信各个技能水平的架构师和开发者,以及不同 Serverless 技术流派的用户都能从本书获益。
—崔秀龙 知名YAML架构师、腾讯资深技术专家