Preface 前 言
Serverless 架構(gòu)曾被翻譯為無服務(wù)器架構(gòu),而在中國信息通信研究院(以下簡稱中國信通院)的最新材料中,它被表述為服務(wù)器無感知架構(gòu),這充分說明 Serverless 架構(gòu)所強(qiáng)調(diào)的核心理念是讓開發(fā)者把更多的精力放到自身的業(yè)務(wù)邏輯上,花更少的精力在服務(wù)器等底層資源上。隨著時(shí)間的推移,Serverless 架構(gòu)逐漸被更多的開發(fā)者所關(guān)注,被更多的業(yè)務(wù)團(tuán)隊(duì)所接受。利用Serverless在降本增效方面的價(jià)值,用戶可以在享受云計(jì)算時(shí)代帶來的便利的同時(shí),進(jìn)一步感受 Serverless 時(shí)代帶來的極致彈性、按量付費(fèi)、低/免運(yùn)維的技術(shù)紅利。時(shí)至今日,Serverless 架構(gòu)已經(jīng)在技術(shù)領(lǐng)域掀起了一股新潮流,阿里云等云廠商更是堅(jiān)信Serverless 奇點(diǎn)已來。
為何寫作本書
如今,Serverless 架構(gòu)已經(jīng)在眾多領(lǐng)域取得了重大突破,尤其是近些年,前端技術(shù)與 Serverless 架構(gòu)的融合,讓前端技術(shù)插上了探索的翅膀,快速地演進(jìn)。有人認(rèn)為,在過去的數(shù)十年中,前端技術(shù)曾有三次重大的革新,分別是 Ajax 的誕生、Node.js 對前端規(guī)范化和工程化的促進(jìn),以及 React 的組件化和VDOM理念的出現(xiàn),而如今,前端技術(shù)的第四次重大革新已然到來,那就是 Serverless 架構(gòu)與前端技術(shù)的融合。
在過去的幾年中,無論是 Jamstack 技術(shù)的飛速發(fā)展、小程序/快應(yīng)用開發(fā)生態(tài)的日益完善,還是 GraphQL 的逐漸風(fēng)靡、WebAssembly帶動(dòng)前端性能的不斷突破,它們的背后總有Serverless 架構(gòu)的理念或者身影。盡管如此,相比其他生態(tài),Serverless 架構(gòu)與前端技術(shù)結(jié)合方面的學(xué)習(xí)資料依舊是比較匱乏的,在與很多前端工程師交流的過程中,我也可以感受到大家非?释幸槐窘榻BServerless 架構(gòu)與前端技術(shù)的實(shí)戰(zhàn)類著作。本書旨在通過簡潔明了的語言、真實(shí)的案例以及開放的源代碼介紹Serverless 架構(gòu)的方方面面,和讀者一同探索前端技術(shù)與 Serverless 架構(gòu)。希望本書可以拋磚引玉,為讀者打開 Serverless 架構(gòu)與前端領(lǐng)域結(jié)合的大門:不僅可以知道什么是 Serverless 架構(gòu),更可以通過不同領(lǐng)域的實(shí)戰(zhàn)案例去探索Serverless 架構(gòu)與前端結(jié)合后的新世界;不僅可以上手開發(fā) Serverless 應(yīng)用,更可以通過本書分享的各類經(jīng)驗(yàn),讓應(yīng)用得以優(yōu)化、性能得以突破,讓技術(shù)服務(wù)于社會(huì),讓云計(jì)算、Serverless 架構(gòu)推動(dòng)行業(yè)的發(fā)展。
本書主要內(nèi)容
本書是一本介紹Serverless 架構(gòu)與前端技術(shù)的實(shí)戰(zhàn)類著作,通過對 Serverless 架構(gòu)發(fā)展史的解讀,帶領(lǐng)讀者縱覽Serverless 架構(gòu)的誕生、發(fā)展、自我革新、逐漸繁榮。本書共10章,通過多個(gè)開源項(xiàng)目(包括Knative、OpenWhisk、Kubeless等)、多個(gè)云廠商的多款云產(chǎn)品(包括阿里云函數(shù)計(jì)算、AWS Lambda等),闡述Serverless 架構(gòu)與前端技術(shù)的最佳實(shí)踐,包括小程序/快應(yīng)用與 Serverless 架構(gòu)的結(jié)合,Serverless 架構(gòu)下 RESTful API、GraphQL 的實(shí)戰(zhàn),對 WebAssembly、Jamstack 的探索等,并提供真實(shí)的實(shí)戰(zhàn)案例。希望讀者通過閱讀本書,可以對Serverless架構(gòu)有更加全面、直觀的了解,進(jìn)而將Serverless項(xiàng)目真正落地,融入自己所在的領(lǐng)域,充分享受 Serverless 架構(gòu)帶來的技術(shù)紅利。
第1章介紹了Serverless 架構(gòu)的概念定義、工作原理等,探索了Serverless架構(gòu)的特性與挑戰(zhàn)、Serverless架構(gòu)的應(yīng)用場景等。
第2章通過不同云廠商的 Serverless 產(chǎn)品以及不同的開源項(xiàng)目,帶領(lǐng)讀者初步了解Serverless 架構(gòu),真真切切地感受Serverless 應(yīng)用的創(chuàng)建、開發(fā)、遷移/部署等流程。
第3章從前端視角對 Serverless 架構(gòu)進(jìn)行探索,帶領(lǐng)讀者深入了解Serverless架構(gòu),包括對Serverless 架構(gòu)開發(fā)流程,應(yīng)用開發(fā)、構(gòu)建與調(diào)試,CI/CD,可觀測性,應(yīng)用優(yōu)化等內(nèi)容的探索等。
第4章分享了一些前端熱門技術(shù),包括 SSR、WebSocket、RESTful API、GraphQL、前后端一體化、小程序/快應(yīng)用、WebAssembly等,并對這些熱門技術(shù)與 Serverless 架構(gòu)的結(jié)合進(jìn)行了探索,幫助讀者全面認(rèn)識(shí)Serverless 架構(gòu)與前端領(lǐng)域的結(jié)合。
第5章通過5個(gè) Serverless 架構(gòu)下的前端生產(chǎn)實(shí)戰(zhàn)案例,帶領(lǐng)讀者感受 Serverless 架構(gòu)下的前端應(yīng)用開發(fā)流程,以啟發(fā)讀者對 Serverless 架構(gòu)下的前端應(yīng)用實(shí)戰(zhàn)有更多的感悟。
第6章通過傳統(tǒng)內(nèi)容管理系統(tǒng)Serverless化實(shí)戰(zhàn),向讀者介紹將傳統(tǒng)框架部署到 Serverless 架構(gòu)的流程和思路,以及將傳統(tǒng)應(yīng)用遷移到 Serverless 架構(gòu)的方法和注意事項(xiàng)等。
第7章通過將Serverless 架構(gòu)與人工智能、小程序開發(fā)相結(jié)合,讓讀者深入了解 Serverless 應(yīng)用從需求明確到技術(shù)選型、項(xiàng)目設(shè)計(jì)、開發(fā)實(shí)現(xiàn)全流程的工作內(nèi)容,助力讀者拓展思路,舉一反三。
第8章通過真實(shí)的中長尾企業(yè)需求,用 Serverless 架構(gòu)賦能企業(yè)快速上線企業(yè)宣傳小程序,為讀者如何使用 Serverless 架構(gòu)、如何用好 Serverless 架構(gòu)提供了思路和經(jīng)驗(yàn)。
第9章通過分享阿里云企業(yè)級解決方案實(shí)戰(zhàn),幫助讀者了解新一代 UI 測試流程與 Serverless 架構(gòu)的結(jié)合,助力開發(fā)者將更多場景內(nèi)容與 Serverless 架構(gòu)結(jié)合。
第10章通過阿里云函數(shù)計(jì)算團(tuán)隊(duì)真實(shí)的產(chǎn)品功能建設(shè)過程,為開發(fā)者提供基于 Serverless 架構(gòu)的輕量 WebIDE 建設(shè)實(shí)戰(zhàn),幫助開發(fā)者快速擁有自己的云上開發(fā)平臺(tái),進(jìn)一步了解Serverless 應(yīng)用的開發(fā)流程、優(yōu)化方案、使用技巧等。
如何閱讀本書
在閱讀本書前,讀者應(yīng)當(dāng)具有一定的編程基礎(chǔ)(例如了解 JavaScript、Node.js、Python等語言)或具有一定的前端技術(shù)基礎(chǔ),同時(shí)需要對云計(jì)算有初步的了解。本書采用循序漸進(jìn)的方式,從什么是 Serverless 架構(gòu)開始講起,除了介紹基本概念外,重點(diǎn)對Serverless 架構(gòu)與前端技術(shù)的融合進(jìn)行了深入探索,以幫助讀者快速入門,并通過領(lǐng)域?qū)崙?zhàn)、應(yīng)用案例幫助讀者拓展思路。建議讀者按以下方式閱讀本書:
第一遍通讀全書,先弄清楚概念,并建立對 Serverless 架構(gòu)與前端技術(shù)結(jié)合的基本認(rèn)識(shí),以及對如何完整地開發(fā)一個(gè)前端領(lǐng)域的 Serverless 應(yīng)用的基本了解。
第二遍通過閱讀領(lǐng)域?qū)崙?zhàn)提供的源代碼,深入了解Serverless架構(gòu)的運(yùn)行原理、開發(fā)技巧等。
第三遍深入閱讀本書的最后一章,以加深對Serverless 架構(gòu)的概念的理解,同時(shí),從零開發(fā)一款 Serverless 應(yīng)用,并將其部署上線。
只有反復(fù)研讀,才能更加深入地理解 Serverless 架構(gòu)。
致謝
在寫作本書的過程中,我曾遇到過很多困難和挑戰(zhàn),在此特別感謝阿里云云原生團(tuán)隊(duì)的小伙伴們,是他們的支持讓本書得以順利完成。
感謝本書的其他幾位作者王慶、袁坤、羅松、徐小春,有了大家的共同努力,本書才得以保質(zhì)保量地完成。
感謝楊秋弟(曼紅)、楊浩然(不瞋)等前輩,他們在本書的整個(gè)寫作過程中不斷給予鼓勵(lì)和支持。感謝國防科技大學(xué)的竇勇教授、浙江大學(xué)的卜佳俊教授等,他們?yōu)楸緯岢隽藰O
具建設(shè)性的意見。感謝姜曦(筱姜)在本書寫作、出版過程中提供的幫助。感謝阿里云 ATA 團(tuán)隊(duì)提供的 ATA 平臺(tái),我們在 ATA 平臺(tái)中獲得了巨大的靈感。感謝在 ATA 平臺(tái)中分享相關(guān)技術(shù)文章的工程師們。此外,感謝家人對我的支持和信任。
由于水平有限,書中難免存在不足及錯(cuò)誤之處,敬請專家和讀者批評指正。
江昱(劉宇)