发表于2024-12-21
Serverless的意思就是开发应用时可以专注于实现应用的业务逻辑,不需要考虑管理服务器的事情。
采用无服务器架构的方式开发应用,扩展性好、可靠性强、成本低。
尝试新创意、探索可能的新市场或者创建小可行产品的应用开发方式。
创业者、中小型公司的福音。数小时内就能搭建一个初始版本应用并在几秒内部署,迅速接受市场检验。
《Serverless架构:无服务器单页应用开发》讲授如何利用AWSLambda创建Serverless单页应用。这里,Serverless的意思是应用开发者无须管理服务器,将应用构建在服务之上,而不是运行在需要人工配置和维护的服务器之上。这种新的开发方式带来很多好处,比如节省成本,可扩展性与可靠性高,以及开发者可以专注于实现应用的业务逻辑等。全书共8章,BenRady带领读者采用这种新方法从零开始开发一个JavaScript解题应用,并且对其进行测试,最终完成部署。
对于创业者以及中小企业的开发者来说,《Serverless架构:无服务器单页应用开发》讲述的Serverless设计是一个值得了解和学习的新方法,可以从中获得启示,抓住先机。
软件行业里聚集着昀多的精英——上百万的开发者,他们带动技术朝着代码更容易测试、解决方案更简单、结果更可靠,以及维护起来更轻松的方向发展。有人看到了Serverless设计的未来,然后回过头来教授我们这些后知后觉者如何开发下一代应用,Ben就是这样的开拓者。他的书就像是一位循循善诱的老师,教你理解Serverless设计模式,引导你自然地遵守部署和测试的昀佳实践。
TimWagner
@timallenwagner
本书对于所有背景的开发者来说都是一份翔实而通俗易懂的指南。不管你是否使用AWS,都能学到不少知识——从应用的安全到访问数据时不可或缺的身份认证。
WillGaul
Ben在本书中讲了很多内容:用JavaScript构建客户端逻辑、用Cognito进行认证和授权、用Lambda实现不能放心地交给浏览器处理的敏感功能。JavaScript开发者会从中发现一些实现典型服务端功能的新方法,而且读完本书,你就会得到一个成本近乎为零的能运行的Serverless应用。
RyanScottBrown
serverlesscode.com的作者
ServerlessFramework贡献者
未来你的应用不再运行在应用服务器上——而是运行在你公司某个机柜的机器里,运行在云上,由一组可靠的服务保护和管理。跟着本书开启全新的开发之旅吧!
DanielHinojosa
TestinginScala作者
本书对ServerlessWeb应用开发这种前沿技术做了精彩的介绍。它将带着你从零开始,直到部署Serverless应用。
JakeMcCrary
OutpaceSystems公司软件开发主管
我读过很多技术图书,这一本是我今年读过的昀好的书,也是我这些年读过的昀好的书之一。BenRady的讲述既轻松又实在,没有吹嘘自己的知识,也没有用不必要的内容凑篇幅。书中不仅告诉你要做什么,而且解释了为什么这么做,两者并重,十分清楚明了。Ben的观点和技术选型有理有据,非常靠谱。建议你阅读本书。
DavidRupp
RuppWorksLLC
第1 章 从简单开始 1
无服Web 应用 2
-- 无服设计的好处 4
-- 无服设计的限制 6
使用自己的工作空间 8
-- 本地执行 12
-- 创建着陆页 13
部署到Amazon S3 15
-- 搭建AWS 命令行接口 16
-- 创建一个带访问密钥的AWS 用户 17
首次部署 20
-- 下一步 21
第2 章 基于hash 事件的视图路由 23
设计可测试的路由器 24
-- 运行Jasmine 测试 25
-- 编写第一个测试用例 26
路由函数 29
-- 创建命名空间 29
-- 添加路由函数 30
-- 创建视图容器 32
添加路由 34
添加视图参数 37
-- 用spy 测试调用 37
-- 处理视图函数中的参数 39
-- 加载应用 41
-- 响应事件 42
-- 响应hash 事件 44
再次部署 46
-- 下一步 46
第3 章 单页应用的必要组件 49
创建视图 50
定义数据模型 53
-- 数据绑定 55
-- 优化数据模型 58
处理用户输入 60
-- 有效地使用视觉反馈 64
-- 控制导航 66
创建一个应用外壳 68
-- 提取着陆页 68
-- 添加工具条 69
使用自定义事件 72
再次部署 75
-- 下一步 75
第4 章 基于Amazon Cognito 的认证服务 77
接入外部身份认证服务商 78
创建身份池 82
-- 身份池配置 83
-- IAM 角色和策略 84
获取Google 身份. 87
请求AWS 证书 90
-- 刷新令牌 91
-- 基于Deferred 对象和Promise 的认证请求 93
-- 创建一个身份Deferred 对象 95
创建个人主页视图 96
再次部署 98
-- 下一步 99
第5 章 使用DynamoDB 存储数据 101
使用DynamoDB 102
-- 理解DynamoDB 的键和哈希 102
-- DynamoDB 用作文档数据库 103
-- 强一致性和最终一致性 105
创建表 106
-- 属性和键值 108
-- 预设吞吐量 109
-- 二级索引与查询 vs 扫描 110
授权访问DynamoDB 111
保存文档 113
-- 一个fail-safe 的数据访问函数 114
-- 创建和保存一个item 115
读取文档 117
数据访问和验证 119
重新部署 122
-- 下一步 122
第6 章 使用Lambda 构建微服务 125
理解Amazon Lambda 126
-- Lambda 环境 126
-- Lambda 的局限 128
-- 内存、时间和费用 129
先部署 130
-- 配置一个Lambda 函数 131
-- 创建代码包 133
-- 通过AWS 控制台测试函数 134
-- 创建一个新的Lambda 配置 135
-- 往Lambda 执行角色上添加策略 136
编写Lambda 函数 138
-- 规避微服务架构问题 138
-- 添加服务依赖 140
-- 构建可测试的服务 141
-- 查询、分组和分页 143
调用Lambda 函数 145
使用Amazon API 网关 146
重新部署 148
-- 下一步 148
第7 章 无服应用的安全 151
保护你的AWS 账号 152
-- 禁用所有root 访问密钥 152
-- 管理用户配置 152
-- 保护AWS 证书 153
-- 设置多重身份认证 154
查询注入攻击 154
跨站脚本攻击 156
-- XSS 注入方法 156
-- 使用web worker 沙盒化JavaScript 157
跨站请求伪造 159
-- 不用Javascript 实现XSRF 160
-- 跨站请求和同源策略 161
线路攻击和传输层安全 162
-- Sidejacking 攻击 162
-- 高效使用HTTPS 163
拒绝服务攻击 165
-- 用CloudFront 保护S3 165
-- 可扩展服务和用户身份 166
重新部署 167
-- 下一步 167
第8 章 扩容 169
监控Web 服务 169
-- 监控容量限制 170
-- 创建付款警告 173
分析S3 的流量 174
-- 记录S3 请求 174
-- 分析S3 日志 177
-- 响应代码频率 179
-- 热门资源 180
-- 每日用量 181
优化应用,实现增长 182
-- 通过缓存降低成本和加载时间 183
-- 通过带版本号的文件名清除缓存 186
云的成本 187
-- 加载成本 188
-- 数据成本 188
-- 微服务成本 189
-- 加起来 190
再次部署 192
-- 下一步 192
附录A 安装Node.js 195
安装Node.js 运行时 195
-- Linux 195
-- OS X 196
-- Windows 196
管理多个Node.js 版本 197
附录B 分配一个域名 199
参考书目 201
我做了几年单页Web应用,一直希望能摆脱应用服务器施加的限制,现在愿望终于实现了。Amazon(还会有更多的其他公司)开发出的技术让无服务器架构(serverless,在本书中简称为“无服”)成为可能,消除了很多构建和扩展Web应用的风险和成本。这个创意是如此令人叹服,如此具有变革意义,以至于我必须为它写一本书。
这本书是为那些希望在Web上构建一些东西的人而写的。有的人想搭建一个应用——一个他们认为将会是下一个惊世之作的东西。有的人只是刚着手Web开发,从未构建过任何类型的应用——不管是影响世界的还是其他什么样的。有的人则是已经用Java、RubyonRails或者Node.js构建过许多基于Model-View-Controller应用的资深Web开发者。随着这个无服技术的兴起,我希望能分享所学的一切,真心希望有人能够用它做出一些了不起的东西。
在前言中,你将了解本书的主题以及能用这些技术来实现些什么。
指导原则
写这本书时我脑子里有几条指导原则。这些原则的目的是让本书内容具有针对性、易理解,不说废话。这里把它们列出来,帮助你了解我是如何写这本书的以及更好地理解本书的相关背景。
有些原则可能是有争议的,其中一些甚至与构建Web应用的主流思想相左。但是,这些原则将帮助你深入理解这个主题。与其波澜不惊,存在争议会更好。
使用Web标准和熟悉的工具
在这本书中,你将使用一小部分精选的工具来构建一个单页Web应用。在本书的某些节点上,你将会实现其他工具已有的功能,这些工具是我有意不在应用中引入的。你可能会好奇,既然它们提供了所需的功能,为什么我们不用呢?
阅读本书实际上是一个学习的过程。当学习知识时,使用熟悉的工具是有帮助的。不然,花在学习工具上的时间比花在学习技术上的还要多。我不希望对一个框架或者库的选择让我们偏离本书主题。这本书是关于无服Web应用,而不是关于框架或者类库的。为了保持未知性,我们将会使用那些Web开发者熟悉的工具(例如jQuery)、Web标准和Web服务,来实现一个无服设计。
有可能读完这本书,你将会接触到一种客户端Web框架,比如React或者Angular,来构建你自己的Web应用。这些工具近些年在Web开发者社区获得了很多关注,我希望能看到很多使用它们的成功项目。在本书中学到的所有知识与你希望使用这些框架做的事情都是兼容的。它们是互为补充而不是相互冲突的关系。
使用函数式JavaScript
本书中你将不会创建JavaScript的任何类。创建类结构来解决问题对于一些具有富类型和面向对象类型系统的语言是合理的,但JavaScript不是这样的语言。相反,我们将使用更易于理解的函数式风格。
这意味着你将不会遭遇this关键字的范围问题。你将会避免原型和继承的共同使用。
你不会使用new关键字和专门设计的函数来创建对象;相反,你将会使用一个字面意义的对象来创建它们:{}。
你可以自己决定这是否就是你希望采纳的风格。因为这种方式拥有一些实际、立竿见影的好处,最后许多软件设计决策实际上都会偏向这种风格。代码终究应该首先是给人写的,然后才是计算机。只要它可执行,对于计算机而言代码看起来如何无所谓。
避免无用功
做项目时,我的目标一直都是:持续交付有改进的结果,只要这个改进是朝着环境需要的方向在进行。实现这个目标意味着要避免任何能造成交付率被消磨的事情,比如剃牦牛(yakshaving)。
如果你对“剃牦牛”这个词不熟悉的话,想象一下你想要给朋友买一件毛衣。你走进一家商店却发现没有毛衣卖。幸运的是,那里的另一位客户知道街角有一个很好的裁缝,他可能可以为你做一件。所以你到了裁缝那儿,他有一个非常好看的毛衣图案和一台能编织这个图案的机器,但毛线供应商今天还没送货。所以你跑到供应商那儿……
然后这个过程一直继续,直到你发现自己在西藏的一片牧场上剃耗牛毛来编毛线。“我怎么来这里了?”你可能会问自己,“我所需要的只是一件毛衣。”当一系列看起来相关和必要的任务让你从真实目标上偏离时,你就是在剃耗牛。幸运的是,剃耗牛的解决办法很简单,就是意识到你自己一直在剃耗牛,然后转而买一顶帽子。
我希望你在阅读本书时不要剃耗牛。这就是为什么我用了一个预备好的工作空间以及尽可能少的工具的原因。你应该把时间花在学习上,而不是安装软件、配置和排错上。
通过测试来加快进度
你有没有曾经害怕过修改甚至只是修改一点点代码?也许你当时不确定应该做什么或者为什么应该做这个。“首先,不作恶”对程序员和医生而言均适用。这种情况会让你感觉进退两难。
设想你做这些改动时,有一位可信的同事——这类系统的专家——就坐在你身边。如果你引入任何缺陷到系统中,他就会拦住你,清楚而明确地告诉你为什么这个改动是个坏主意。如果你有这样可信的同事,是否还会进退两难?
不确定性拖慢了我们的脚本,并且限制了解决方案的范围。为了快速搭建一个软件,你必须有自信。为了获得这份自信,你可以为自己创造一个自动化专家——它了解系统的所有细节,知道系统如何运转以及为什么这样运转。这位专家和系统相辅相成,随着它的改变而改变,互相影响。这个专家就是你编写一套测试,它们快到能持续运行,每秒能运行成百上千的测试,而且每次在你对代码进行修改之后都是如此。
一旦你有了测试套件,就拥有了新选择。而当你不再害怕修改代码时,就可以按照自己的设想来设计应用,而不是试图让它在一开始就要“正确”。这意味着你可以随着形势的变化快速适应这个世界,而不是试图预测你可能需要和不需要什么。你可以基于当下的信息而不是靠猜来做决策,应用就会自然而然地变成它应该的那个样子。
在本书中,你将使用测试驱动开发(TDD)技术来编写应用和它的测试。了解如何用测试来构建软件是一项技能,要获得它的益处,就必须真正地使用它。我在本书中引入TDD的目的不仅是向你展示如何测试Web应用的特定功能,还想证明用它来测试典型Web应用有多简单,如果你知道如何实现的话。
在实践TDD的过程中,有一个三步循环,经常描述为红—绿—重构。首先写一个测试,检查应用尚不具备的功能。如果测试如你预期的那样失败了,就可以相信它是在测试你希望加到应用上的功能。现在这些测试是红色的。一旦有一个失败的测试,添加几条最简单的代码来让这个测试通过,通常几行代码即可。现在这些测试是绿色的。
通过测试为应用添加一些功能后,就该后退一步,让自己看得更全面一些。是否在实现中引入了一些重复代码?所有的变量和函数是否都有描述性的准确名字?是否还有更简单的方式?考虑这些事情,然后开始重构。重构是在不改变功能的情况下修改代码。你之前编写的测试会告诉你是否改变了功能,所以只能在这些测试都通过时重构,这一点很重要。有了它们作为你的安全防护网,可以在开始下一步测试之前清理完所有代码的问题。
TDD用得越多,你的进展就会越快,从中获得的价值就越多。通过一遍又一遍地重复“红—绿—重构”过程,你将学会如何渐进式地构建一个设计合理、测试充分的应用。这样你不仅对自己的应用有信心,而且对它进行持续的修改也更容易。
边做边学
本书是一本教程,所以你可以跟着书中的引导边做边学。通过这本书,你将构建一个无服单页Web应用。本书的目的是用具体的方式解释无服架构的原理。本书的成果是一个可运行的应用,所以你大可以放心,书中的技术就像广告中说的那样有用。
采用这种方式意味着篇幅有限,我对有些知识点不可能讲得很深入。因此,我在每章中安排了一节“下一步”来提供一些主题,如果你希望了解更多,可以查找相关的资料。
从预备好的工作空间开始
为了让你能快速上手,我提供了一个预备好的工作空间(preparedworkspace),里面包括了起步需要的所有东西,并且不需要太多时间来设置。这就好比你在画一幅艺术品,我已经为你准备好颜料、画架和画布。你要做的就是创作。
为了能使用这个预备好的工作空间,你需要一台兼容Bashshell的计算机来使用工作空间里面的脚本和工具。可以是OSX、任何*nix版本或者FreeBSD。如果你安装了Cygwin,用Windows可能也行。你还需要一个带开发者控制台的Web浏览器。本书的大部分例子中使用的是GoogleChrome,但大多数情况下Firefox也能提供了类似的功能。
如何阅读本书
阅读一本书可以有很多种方式,不仅是从头到尾的那种。至于如何阅读本书,取决于你想要获得什么。下面列出的是读本书的一些常见理由,以及我对于如何使用这本书来实现这些目标的建议。
目标1:理解无服和传统单页应用的优劣
需要做什么
1.阅读第1章的前3节理解两种方式的优劣。
2.略读第1章剩下的部分和第2~3章。
3.通读第4~8章,尽可能跟着教程实现应用。
如果你是一个有经验的Web开发者,搭建过单页Web应用,希望了解更多有关无服Web应用的知识,你可能不需要看前3 Serverless架构:无服务器单页应用开发 下载 mobi epub pdf txt 电子书 格式
Serverless架构:无服务器单页应用开发 下载 mobi pdf epub txt 电子书 格式 2024
Serverless架构:无服务器单页应用开发 下载 mobi epub pdf 电子书还行
评分不怎么样
评分商品很不错,买来很满意,京东购物一直在用
评分很好的书,支持正版!
评分不错不错不错不错不错不错不错不错不错不错不错
评分是基于aws的
评分不错的书值得推荐。
评分还可以还可以还可以还可以还可以还可以还可以
评分很牛逼的思想,学习学习
Serverless架构:无服务器单页应用开发 mobi epub pdf txt 电子书 格式下载 2024