首页>参考读物>计算机科学与技术>计算机组织与体系结构

Serverless架构
作者 : [土耳其] 卡格特·古尔图克(Cagatay Gurturk)著
译者 : 周翀 栾云杰 姜明魁 译
出版日期 : 2018-03-26
ISBN : 978-7-111-59390-4
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 214
开本 : 16
原书名 : Building Serverless Architectures
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书的重点是设计无服务器架构,权衡此方法的优缺点并考虑其决策因素。读者将学习如何设计一个无服务器的应用程序,了解那些基于服务器的应用程序的关键问题,以及已知的解决方案。
该书解决了一些关键的挑战,比如如何将软件的核心功能划分为不同的云服务和云功能。它涵盖了这些服务的基本和高级的使用,测试和保护无服务器软件,自动化部署等。在本书的结尾,你将会掌握新的工具和技术,以跟上IT行业的发展。

图书特色

eBay资深软件工程师撰写,全面阐述无服务器架构设计的基础知识、实用技术及最佳实践,是快速掌握无服务器架构的绝佳入门指南
注重实践, 以开发一个真正的云计算应用程序为线索,循序渐进讲解基于“无服务器计算”架构的软件开发

图书前言

近几年,无论是初创企业还是超大企业,为了节省成本、减少正常营业所需的运营工作,都开始把业务向公有云平台迁移。企业可以根据需要采取不同的迁移策略。有的企业仅借用公有云平台宿主机,而保留了之前部署的软件架构。而另一些企业则做了根本性的变革,不限于仅使用公有云的虚拟机,而是借用了公有云上提供的云服务,进而改变了原有的部门结构,引入了DevOps最佳实践。这种改变打开了软件产业的变革之门,可以确定地说,引入了云计算,这个世界和以往不一样了。
自AWS Lambda于2014年推出以来,引入了一种新的软件开发方法。在不需要预先设置基础架构基础上,Lambda可以运行响应外部或者内部云事件的代码段。它带来了真正的、可管控的和按使用次数付费的基础架构模型。在短时间内,“无服务器计算”术语被创造出来,微软、谷歌,甚至IBM以开源的方式采用了同样的模式。使用Lambda函数,现在甚至可以制作一个复杂的软件系统,它由许多独立的微函数组成这些函数只在需要的时候才运行,并且不用维护单独的服务器。Lambda函数现在可以支持大量本地云服务,这样就不再需要为常见需求构建定制解决方案,而且还降低了基础架构的运行和维护成本,同时也降低了软件开发成本。
本书的重点是设计无服务器架构,权衡这种方法的优缺点,以及需要考虑的几个决策因素。你将通过本书学习到如何设计无服务器应用程序,了解无服务器应用程序所依赖的服务的关键点,以及应用无服务器架构的已知问题和解决方案。在本书中,你不仅可以学习AWS Lambda函数,还可以看到如何通过Lambda函数将其他AWS服务黏合在一起。你将通过CRUD应用的例子,学到如何轻松构建可扩展的软件系统。
本书解决了关键难题,例如如何分解软件的核心功能,并把不同功能分散在不同的云服务和云函数中。它涵盖了这些服务的基本和高级用法,测试和保护无服务器软件,自动部署等。
在本书中,我们将只使用Java编程语言,并将构建一个自主开发的部署系统来轻松部署软件。
本书不打算对AWS生态系统做详尽的介绍,但我相信它将为你打开通往无服务器计算世界的大门。
本书主要内容
第1章介绍无服务器计算和Lambda函数,设置AWS账户和环境,并构建基础库。
第2章教你如何使用CloudFormation将基础架构定义为代码,启动并运行第一个Lambda函数。
第3章通过AWS API网关给互联网提供Lambda函数。
第4章实现和配置Lambda函数的依赖注入模式。
第5章使用DynamoDB以高度可扩展的方式来保存应用程序数据。
第6章利用AWS服务使Lambda函数能够将消息传递给彼此。
第7章使用CloudSearch构建完全托管的搜索基础架构,集成Lambda函数来更新搜索索引。
第8章设置自动健康状况检查、报警和触发器响应故障,并在安全网络环境中操作Lambda。
附录以最小的工作量将你的JAX-RS应用程序迁移到AWS Lambda和API网关。
阅读须知
要运行本书中的所有代码,你只需要在计算机上安装Java Development Kit。你必须创建一个AWS账户来操作这些步骤。AWS为新客户提供了一个免费的层次,它将涵盖本书中运行示例的大部分成本。另一方面,一些服务(如CloudSearch和VPC NAT网关)不包含在免费层中。确保你访问本书中使用的每项服务的定价文档,以避免产生不必要的费用。
读者对象
本书适用于有意在无服务器环境中设计软件的开发人员和软件架构师。由于本书使用的编程语言是Java,所以读者最好熟悉Java的基础知识和一般的约定。
下载示例代码
你可以登录http://www.packtpub.com下载本书的示例代码文件。如果你在其他地方购买了这本书,你可以访问http://www.packtpub.com/support网站并进行注册,我们会将文件直接发送给你。你可以按照以下步骤下载代码文件:
1)使用你的电子邮件地址和密码登录或注册Packt网站。
2)将鼠标指针悬停在顶部的“支持”(SUPPORT)选项卡上。
3)单击“代码下载和勘误表”(Code Download & Errta)。
4)在搜索(Search)框中输入图书的名称。
5)选择你要下载代码文件的书。
6)从你购书的下拉菜单中选择书名。
7)单击“代码下载”(Code Download)。
下载文件后,请确保使用最新版本解压缩软件解压:
WinRAR/7-Zip(Windows系统)
Zipeg/iZip/UnRarX(Mac系统)
7-Zip/PeaZip(Linux系统)
本书所有代码由GitHub托管,可从以下链接获取:https://github.com/PacktPublishing/
Building-Serverless-Architectures。其他图书或视频的代码获取地址为https://github.com/Packt-
Publishing/。去看一下吧!

上架指导

云计算

封底文字

在过去的几年里,从初创企业到大型企业的所有公司都开始使用公共云,以节约成本,减少公司正常运营所需的运维工作量。现在甚至有可能创建一个由许多独立的微功能组成的复杂的软件系统,这些微功能只有在需要时才运行,而不需要维护单个服务器。
本书的重点是设计无服务器架构,并权衡这种方法的优缺点以及需要考虑的决策因素。你将学习如何设计无服务器应用程序,了解无服务器应用程序所基于的服务要点以及已知问题和解决方案。
本书解决了关键的挑战,比如,如何分配软件的核心功能,将之分布在不同的云服务和云功能中。它涵盖了这些服务的基本和高级用法、无服务器软件的测试和安全、自动部署等。
在本书的最后,你将会掌握新的工具和技术的知识,以跟上IT行业的发展。

通过阅读本书,你将学到
如何从大型软件构建云的功能
协调和扩展云的功能
设计和设置云服务和定制业务逻辑之间的数据流
云提供商的API、限制和已知问题
将现有的Java应用程序迁移到无服务器架构的方法
如何获取部署策略
如何构建高度可用且可伸缩的数据持久层
成本优化技术

译者序

云计算(Cloud Computing)的概念最早出现在康柏电脑公司(Compaq)的内部文档中,时间可以追溯到20世纪90年代晚期。但是直到大约10年后的2006年,伴随着亚马逊公司推出“弹性计算云”产品(Amazon Elastic Compute Cloud)之后,云计算才开始发展成为时下流行的IT前沿技术之一。
本书所讲解的“无服务器计算”(Serverless Computing)是云计算概念在现实世界中的一种实践形式,它以一种新颖的方式向使用者提供计算服务。简单来说,这种服务不再需要使用者事先估算并订购计算资源,而是由云平台提供商根据应用程序的行为,自动分析和分配计算资源,并且按照实际资源使用量计费。这样一来,使用者既不必担心因为计算资源预估不足而降低软件的运行效率,也不必担心因为实际资源使用量小于预期而浪费资金。
总之,随着越来越多的应用程序开始依赖云计算平台来实现后端服务,“无服务器计算”架构必将因其更低廉的管理成本和更合理的计费方式而成为时代的新宠。
本书是一本面向云计算应用程序开发者的入门书籍。它以实际动手操作为主题,以开发一个真正的云计算应用程序为线索,循序渐进地学习基于“无服务器计算”架构的软件研发。读者将在阅读的过程中将知识点切实融合到实践当中,顺利且迅速地开启云计算的大门。
虽然本书面向初学者,但其中所使用的构建和部署工具、编程方法和应用程序框架都已在企业级研发当中被广泛认可和采用。因此这些包含了先进技术的学习内容确保读者能够跟上现代应用软件工业高速发展的步伐。

图书目录

作者简介
审校者简介
译者序
前 言
第1章 Serverless起步 1
1.1 准备开发环境 8
1.2 Gradle 11
1.2.1 创建项目 11
1.2.2 实现Lambda依赖 14
1.2.3 你好Lambda 19
1.2.4 部署到云端 22
1.3 总结 24
1.4 参考文献 25
第2章 基础架构即代码 27
2.1 向云端上传程序包 28
2.2 用CloudFormation实现基础架构即代码 32
2.3 用CloudFormation部署第一个AWS Lambda函数 34
2.4 总结 44
第3章 你好,互联网 45
3.1 设置API网关 46
3.1.1 创建API 48
3.1.2 创建资源 49
3.1.3 创建方法 50
3.1.4 配置Lambda权限 53
3.1.5 部署API 54
3.2 设置CloudFront的CDN分布 58
3.2.1 设置自定义域 62
3.2.2 创建SSL安全证书 64
3.2.3 为API调用授权 66
3.2.4 实现简单授权程序 67
3.3 总结 75
第4章 企业模式实践 77
4.1 创建用户管理服务 79
4.2 配置Guice框架 81
4.3 使用依赖注入编写Lambda处理程序类 82
4.4 增加日志功能 84
4.5 服务的依赖关系 86
4.6 总结 89
第5章 数据持久化 91
5.1 DynamoDB介绍 91
5.2 创建第一张表 93
5.2.1 创建第二张访问令牌的表 95
5.2.2 配置DynamoDB数据映射器 97
5.2.3 配置Lambda环境变量 98
5.2.4 用户注册 105
5.2.5 创建用户注册Lambda 114
5.2.6 为用户注册创建Lambda和API网关 117
5.3 总结 120
第6章 创建配套服务 123
6.1 构建Lambda函数的架构 124
6.2 让用户上传头像图片到S3云存储桶中 127
6.2.1 修改Lambda函数响应S3事件 132
6.2.2 配置CloudFront以调整图片大小 133
6.2.3 练习 135
6.3 通过SES发送电子邮件 135
6.3.1 配置SES 136
6.3.2 用户注册时发送SNS通知 137
6.4 使用SNS消息和发送电子邮件 141
6.5 总结 147
第7章 数据搜索 149
7.1 创建搜索域 150
7.2 上传测试数据 154
7.3 创建suggester 156
7.4 为建议创建API端点 157
7.5 更新搜索数据的Lambda函数 160
7.5.1 修改欢迎邮件发送者Lambda 161
7.5.2 创建Lambda函数更新CloudSearch 163
7.5.3 使用CloudFormation创建及配置Lambda函数 166
7.6 总结 167
第8章 监测、日志与安全 169
8.1 建立一个Route 53健康检查 170
8.1.1 开始创建 170
8.1.2 配置电子邮件通知的健康检查 172
8.1.3 为健康检查开通短信通知 173
8.1.4 使健康检查进入健康状态 174
8.1.5 掌握CloudWatch警报 174
8.1.6 配置高级CloudWatch警报 176
8.2 使用CloudFormation完成 178
8.3 根据应用程序日志创建CloudWatch监控指标 180
8.4 在VPC中运行Lambda函数 183
8.4.1 创建VPC 184
8.4.2 添加私有子网 185
8.4.3 处理出入流量 191
8.4.4 创建安全组 195
8.5 总结 197
附录 Lambda框架 199

教学资源推荐
作者: (美)Kai Hwang; Geoffrey C. Fox; Jack J. Dongarra 著
作者: [美]莎拉·L. 哈里斯(Sarah L. Harris) 戴维·莫尼·哈里斯(David Money Harris) 著
作者: [美]莫尔·哈肖尔-巴尔特(Mor Harchol-Balter) 著
作者: [美]戴维·A. 帕特森(David A. Patterson) 约翰·L. 亨尼斯(John L. Hennessy) 著
参考读物推荐
作者: [丹麦]克劳斯·埃尔克(Klaus Elk) 著
作者: [美]阿诺德·S.伯格(Arnold S.Berger) 著
作者: Mark Artiges等