發表於2024-11-22
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