Preface 前 言
Serverless 架构曾被翻译为无服务器架构,而在中国信息通信研究院(以下简称中国信通院)的最新材料中,它被表述为服务器无感知架构,这充分说明 Serverless 架构所强调的核心理念是让开发者把更多的精力放到自身的业务逻辑上,花更少的精力在服务器等底层资源上。随着时间的推移,Serverless 架构逐渐被更多的开发者所关注,被更多的业务团队所接受。利用Serverless在降本增效方面的价值,用户可以在享受云计算时代带来的便利的同时,进一步感受 Serverless 时代带来的极致弹性、按量付费、低/免运维的技术红利。时至今日,Serverless 架构已经在技术领域掀起了一股新潮流,阿里云等云厂商更是坚信Serverless 奇点已来。
为何写作本书
如今,Serverless 架构已经在众多领域取得了重大突破,尤其是近些年,前端技术与 Serverless 架构的融合,让前端技术插上了探索的翅膀,快速地演进。有人认为,在过去的数十年中,前端技术曾有三次重大的革新,分别是 Ajax 的诞生、Node.js 对前端规范化和工程化的促进,以及 React 的组件化和VDOM理念的出现,而如今,前端技术的第四次重大革新已然到来,那就是 Serverless 架构与前端技术的融合。
在过去的几年中,无论是 Jamstack 技术的飞速发展、小程序/快应用开发生态的日益完善,还是 GraphQL 的逐渐风靡、WebAssembly带动前端性能的不断突破,它们的背后总有Serverless 架构的理念或者身影。尽管如此,相比其他生态,Serverless 架构与前端技术结合方面的学习资料依旧是比较匮乏的,在与很多前端工程师交流的过程中,我也可以感受到大家非常渴望有一本介绍Serverless 架构与前端技术的实战类著作。本书旨在通过简洁明了的语言、真实的案例以及开放的源代码介绍Serverless 架构的方方面面,和读者一同探索前端技术与 Serverless 架构。希望本书可以抛砖引玉,为读者打开 Serverless 架构与前端领域结合的大门:不仅可以知道什么是 Serverless 架构,更可以通过不同领域的实战案例去探索Serverless 架构与前端结合后的新世界;不仅可以上手开发 Serverless 应用,更可以通过本书分享的各类经验,让应用得以优化、性能得以突破,让技术服务于社会,让云计算、Serverless 架构推动行业的发展。
本书主要内容
本书是一本介绍Serverless 架构与前端技术的实战类著作,通过对 Serverless 架构发展史的解读,带领读者纵览Serverless 架构的诞生、发展、自我革新、逐渐繁荣。本书共10章,通过多个开源项目(包括Knative、OpenWhisk、Kubeless等)、多个云厂商的多款云产品(包括阿里云函数计算、AWS Lambda等),阐述Serverless 架构与前端技术的最佳实践,包括小程序/快应用与 Serverless 架构的结合,Serverless 架构下 RESTful API、GraphQL 的实战,对 WebAssembly、Jamstack 的探索等,并提供真实的实战案例。希望读者通过阅读本书,可以对Serverless架构有更加全面、直观的了解,进而将Serverless项目真正落地,融入自己所在的领域,充分享受 Serverless 架构带来的技术红利。
第1章介绍了Serverless 架构的概念定义、工作原理等,探索了Serverless架构的特性与挑战、Serverless架构的应用场景等。
第2章通过不同云厂商的 Serverless 产品以及不同的开源项目,带领读者初步了解Serverless 架构,真真切切地感受Serverless 应用的创建、开发、迁移/部署等流程。
第3章从前端视角对 Serverless 架构进行探索,带领读者深入了解Serverless架构,包括对Serverless 架构开发流程,应用开发、构建与调试,CI/CD,可观测性,应用优化等内容的探索等。
第4章分享了一些前端热门技术,包括 SSR、WebSocket、RESTful API、GraphQL、前后端一体化、小程序/快应用、WebAssembly等,并对这些热门技术与 Serverless 架构的结合进行了探索,帮助读者全面认识Serverless 架构与前端领域的结合。
第5章通过5个 Serverless 架构下的前端生产实战案例,带领读者感受 Serverless 架构下的前端应用开发流程,以启发读者对 Serverless 架构下的前端应用实战有更多的感悟。
第6章通过传统内容管理系统Serverless化实战,向读者介绍将传统框架部署到 Serverless 架构的流程和思路,以及将传统应用迁移到 Serverless 架构的方法和注意事项等。
第7章通过将Serverless 架构与人工智能、小程序开发相结合,让读者深入了解 Serverless 应用从需求明确到技术选型、项目设计、开发实现全流程的工作内容,助力读者拓展思路,举一反三。
第8章通过真实的中长尾企业需求,用 Serverless 架构赋能企业快速上线企业宣传小程序,为读者如何使用 Serverless 架构、如何用好 Serverless 架构提供了思路和经验。
第9章通过分享阿里云企业级解决方案实战,帮助读者了解新一代 UI 测试流程与 Serverless 架构的结合,助力开发者将更多场景内容与 Serverless 架构结合。
第10章通过阿里云函数计算团队真实的产品功能建设过程,为开发者提供基于 Serverless 架构的轻量 WebIDE 建设实战,帮助开发者快速拥有自己的云上开发平台,进一步了解Serverless 应用的开发流程、优化方案、使用技巧等。
如何阅读本书
在阅读本书前,读者应当具有一定的编程基础(例如了解 JavaScript、Node.js、Python等语言)或具有一定的前端技术基础,同时需要对云计算有初步的了解。本书采用循序渐进的方式,从什么是 Serverless 架构开始讲起,除了介绍基本概念外,重点对Serverless 架构与前端技术的融合进行了深入探索,以帮助读者快速入门,并通过领域实战、应用案例帮助读者拓展思路。建议读者按以下方式阅读本书:
第一遍通读全书,先弄清楚概念,并建立对 Serverless 架构与前端技术结合的基本认识,以及对如何完整地开发一个前端领域的 Serverless 应用的基本了解。
第二遍通过阅读领域实战提供的源代码,深入了解Serverless架构的运行原理、开发技巧等。
第三遍深入阅读本书的最后一章,以加深对Serverless 架构的概念的理解,同时,从零开发一款 Serverless 应用,并将其部署上线。
只有反复研读,才能更加深入地理解 Serverless 架构。
致谢
在写作本书的过程中,我曾遇到过很多困难和挑战,在此特别感谢阿里云云原生团队的小伙伴们,是他们的支持让本书得以顺利完成。
感谢本书的其他几位作者王庆、袁坤、罗松、徐小春,有了大家的共同努力,本书才得以保质保量地完成。
感谢杨秋弟(曼红)、杨浩然(不瞋)等前辈,他们在本书的整个写作过程中不断给予鼓励和支持。感谢国防科技大学的窦勇教授、浙江大学的卜佳俊教授等,他们为本书提出了极
具建设性的意见。感谢姜曦(筱姜)在本书写作、出版过程中提供的帮助。感谢阿里云 ATA 团队提供的 ATA 平台,我们在 ATA 平台中获得了巨大的灵感。感谢在 ATA 平台中分享相关技术文章的工程师们。此外,感谢家人对我的支持和信任。
由于水平有限,书中难免存在不足及错误之处,敬请专家和读者批评指正。
江昱(刘宇)