本书主要围绕 Knative 进行展开,主要作者是 Knative 专家(社区作者)Jacques Chester ,先后从 Knative 构建、扩缩容、事件触发等方面介绍 Knative 以及 Serverless 架构,并从实例开始,针对 Serverless 应用进行详细的介绍,是一本深入理解 Knative & Serverless的书籍
Serverless 计算将会成为云时代默认的计算模式,并取代 Serverful (传统云)计算模式---------来自于伯克利实验室对于未来云计算趋势的论断。Knative 是谷歌开源的 Serverless 架构方案,旨在提供一套简单易用的 serverless 方案,把 serverless 标准化。目前参与的公司主要是 Google、Pivotal、IBM、Red Hat。本书主要围绕 Knative 原理以及 相关实例展开,由浅入深,讲解 Knative & Serverless 领域的技术问题。
雅克·切斯特(Jacques Chester)是VMware公司的一名工程师,(作者之前在Pivotal公司工作,后来VMware公司收购了Pivotal公司)。自2015年以来,他一直从事研发工作,为Knative等多个项目做出了贡献。在从事研发工作之前,雅克曾在Pivotal Labs担任软件咨询工程师。
当准备写这本书的时候,我正在Pivotal工作,当时正处于和Google及社区合作的初期。在Pivotal工作期间,我通过Project riff项目,成为Knative开源之前最早参与到这个项目的人员之一。
现在回想最初计划写这本书的时候,真是雄心壮志。与其说你现在拿到的是一本技术书,不如说是一本专业的单词本。首先,这本书的目标已经逐渐从谈论许多不同事物(包括Knative),演变成了只谈论Knative。这是一个全面的改进,尽管我喜欢谈论相关主题,但这些并不是一开始就需要的。本书是《Knative最佳实践》,而不是《Knative大统一理论》。
我喜欢写作,我为自己感到骄傲,所以行文中添加了很多修饰词。如果你的母语不是英语,那么你读起来可能会很慢。我可以肯定的一件事是,对于任何不熟悉的单词,你跳过就好了,那也许只是我在炫耀我的词汇量。
致谢
我想对一千个人表示感谢,可能都感谢不全,不过首先感谢下面几个人。
感谢埃莱诺·加德纳(Eleonor Gardner)从互联网上找到的一些人,这样迈克尔·斯蒂芬斯(Michael Stephens)才能启动这个项目。感谢我非常乐观的编辑珍妮佛·斯托特(Jennifer Stout)和忧郁的技术编辑约翰·格思里(John Guthrie)。还有弗朗西斯·布兰(Frances Buran),他忍受了我通篇都是逗号的毛病。谢谢他们,因为有他们这本书才变得更好。
同样感谢迄今为止参与过本书的Manning的工作人员:妮可·巴特菲尔德(Nicole Butterfield)、克里斯汀·沃特森(Kristen Watterson)、丽贝卡·里内哈特(Rebecca Rinehart)、瑞哈娜·马卡诺维奇(Rebecca Rinehart)、麦特·赫尔文(Matko Hrvatin)、萨姆·伍德(Sam Wood)、拉德米拉·埃尔切戈瓦茨(Randmila Ercegovac)、科迪·坦克斯利(Cody Tankersley)、特洛伊·德雷尔(Troy Dreier)、坎迪斯·吉尔霍利、布兰科·拉提尼克(Branko Latincic)、穆罕默德·帕西奇、詹妮弗·霍勒(Jennifer Houle)、斯特列潘·尤雷科维奇(Stjepan Jurekovic)、迪尔德·希亚姆(Deirdre Hiam)、杰森·埃弗里特(Jason Everett)和米哈拉·贝蒂尼克(Mihaela Batinic)。
除了Manning的工作人员,我还非常感谢那些匿名的审稿人员,他们对早期的草稿进行了认真的审核,有些人甚至审核了三次,他们的严谨和细心极大地提高了本书的质量。虽然我并没有采纳所有的建议,但还是想说谢谢他们,谢谢。
我认为这本书能完成很大程度上要归功于Knative社区,我从社区维护者们的身上学到了很多,很享受和他们之间的交流,比如:马特·摩尔(Matt Moore)、维尔·艾卡斯(Ville Aikas)、埃文·安德森(Evan Anderson)、乔·伯内特(Joe Burnett)、斯科特·尼科尔斯(Scott Nichols)、杰森·霍尔(Jason Hall)、马库斯·瑟姆斯(MarkusThömmes)、恩吉亚·特兰(Nghia Tran)、朱利安·弗里德曼(Julian Friedman)、卡洛斯·桑塔纳(Carlos Santana)、尼玛·卡维尼(Nima Kaviani)、迈克尔·马克西米利安(Doug Davis)、本·布朗宁(Ben Browning)、格兰特·罗杰斯(Grant Rodgers)、保罗·莫里(Paul Morie)、陈慧琳(Brenda Chan)、唐娜·玛梅丽(Donna Malayeri)、马克·科罗夫(Mark Kropf)和马克·查马尼(Mark Chmarny)。同样在社区中,还有我在Pivotal和VMware认识的许多人,包括大名鼎鼎的戴夫·普罗塔索夫斯基(Dave Protasowski)、马克·费舍尔(Mark Fisher)、斯科特·安德鲁斯(Scott Andrews)、格林·诺明顿(Glynn Normington)、苏克·苏里什(Sukhil Suresh)、坦泽布·卡利利(Tanzeeb Khalili)(有一天我可能会见到他)、大卫·图兰斯基(David Turanski)、托马斯·里斯伯格(Thomas Risberg)、德米特里·卡里宁(Dmitriy Kalinin)、于尔根·莱施纳(Jurgen Leschner)和不知疲倦的肖什·雷迪(Shash Reddy)。
还是要说一下Pivotal公司和VMware公司的朋友,他们使我更专注地写这本书。我欠了迈克·达莱西奥(Mike Dalessio)和凯瑟琳·麦加维(Catherine McGarvey)一个人情,他们给我提供了为Pivotal公司工作的机会,后来他们依然很热心地帮助我。格雷厄姆·西纳(Graham Siener)在自己很忙的时候依然会倾听我的抱怨。伊恩·安德鲁斯(Ian Andrews)和理查德·塞罗特(Richard Seroter)为营销铺平了道路,赛勒斯·沃迪亚(Cyrus Wadia)、戴夫·沙赫纳(Dave Schachner)和海蒂·希希曼(Heidi Hischmann)负责所有的流程和手续。在此过程中,我还要感谢我的经理埃迪·比尔(Edie Beer)和本·莫斯(Ben Moss)。
还有Pivotal公司纽约分部的所有同事们(当然还有在旧金山、多伦多、圣莫妮卡、伦敦和其他地方的同事),我很喜欢和他们在一起的时间。最困难的事情是,我花费了个人所有的时间来写这本书。最好的事情是,我依然属于友好、聪明、干练的Pivotal团队。一旦加入Pivotal,将终生属于Pivotal。
我也非常感谢在我写这本书时和我交谈的播客。“备份中心:全部还原”中的柯蒂斯·普雷斯顿(W. Curtis Preston)和普拉萨纳(Prasana);“流媒体:融合的播客”中的蒂姆·伯格隆德(Tim Berglund),还有维多利亚·于(Victoria Yu);“Offer之禅播客”中的乔米罗·埃明(Jomiro Eming);“云中集群”中的乔纳森·贝克(Jonathan Baker)和贾斯汀·布罗德利(Justin Brodley)。我非常喜欢和他们之间的每次交流。
还有所有的审稿人:亚历山德罗·坎佩斯(Alessandro Campeis)、亚历克斯·卢卡斯(Alex Lucas)、安德烈斯·萨科(Andres Sacco)、博扬·朱科维奇(Bojan Djurkovic)、克利福德·瑟伯(Conor Redmond)、埃德杜·梅隆德斯·冈萨雷斯(EdraMeléndezGonzales)、埃兹拉·西梅洛夫(Ezra Simeloff)、盖特·范·莱瑟姆(Geert Van Laethem)、乔治·海恩斯(Guy Ndjeng)、杰弗里·楚(Jeffrey Chu)、杰罗姆·梅耶(Jerome Meyer)、朱利安·波希(Keith Senhlum)、开尔文·约翰逊(Kelvin Johnson)、卢克·库普卡(Luke Kupka)、马特·韦尔克(Mel Welke)、迈克尔·布赖特(Michael Bright)、米格尔·卡瓦科·科凯特(Peturu Raj)、拉斐尔·文塔格里奥(Raffaella Ventaglio)、理查德·沃恩(Richard Vaughan)、罗伯·帕切科(Rot Pacheco)、萨达德鲁·罗伊(Satadru Roy)、泰勒·多勒扎尔(Taylor Dolezal)、蒂姆·兰福德(Tim Langford)和佐罗扎伊·穆库亚(Zorodzayi Mukuya),感谢他们的辛苦工作。
我所做的一切都给所有人留下了深刻的印象,实际上我做的只是对我父母的一种传承。当我打扰其他人的时候我只是在讲述我父母的生活。他们涉猎很广,做了很多事情,克服了生活中的种种障碍。这本书是对他们做过的事的一个缩影。
当然,还有雷尼(Renée),他是我有史以来遇到的最好的运气之星。没有他,我无法坚持到最后。
关于本书
本书适合哪些人
本书主要面向那些希望学习Knative服务模块和服务模块概念及功能的人,笔者仅在需要的时候介绍Kubernetes的概念,除此之外,笔者主要讲解Knative。
笔者的目标是让没有Kubernetes使用经验的人能够上手使用Knative,不知道该目标能不能达成。笔者写了很多关于容器技术、云原生架构和Kubernetes的背景知识,希望能够给大家讲明白Knative。
写这本书的目的不是告诉你学习基本原理时会产生哪些问题。对笔者而言,一方面,是给你展示网络交互的函数示例;另一方面,要权衡讲解过程中是否要引出其他问题。笔者会简要提一下自身认为有关的内容(比如排队论),限于篇幅,不会过多地展开叙述。
本书的主要脉络
第1章主要介绍Knative及其在云计算中的定位。第2章引入Knative服务模块。第3章深入介绍Knative的服务和配置。第4章介绍路由。第5章的核心内容是自动扩/缩容。第6章主要介绍事件模块和CloudEvents。第7章介绍事件源和接收器(事件模块的主要概念)。第8章在第7章的基础上继续介绍事件代理、过滤器、串行消息和并行消息。第9章主要进行总结,笔者集中回答了“如何将软件投入生产环境”和“软件是否正在运行”这两个问题。
建议读者按顺序阅读本书,因为这样阅读起来会容易理解一些。当然,你先读Eventing,再读Serving也能读懂。
本书缺少一个正常运行的完整例子。笔者一开始考虑过,并写过一些草稿代码,不过后来都放弃了。一方面,因为笔者也在学习没用过的知识;另一方面,社区的代码发展得太快了,笔者可能面临刚写完完整的示例代码又要推倒重来的风险。不过在每章的上下文中会穿插相应的示例代码。
关于代码
本书中的大多数代码都是CLI命令和YAML文件。实际代码是用Go语言写的。
在线电子书论坛
购买本书可以免费访问由Manning出版社运营的官方在线论坛,可以在线对图书进行评论、提出技术问题并获得作者和其他用户的帮助。
Manning承诺提供一个可以让读者之间,以及读者和作者之间交流的场所。这不是作者对论坛参与程度的承诺,作者对论坛的贡献是自愿的。我们建议读者向作者提出一些具有挑战性的问题,以免作者失去兴趣!
其他在线资源
首先是Knative的官方网站,官方网站一直保持更新中。本书是为一般技术读者入门knative而写的。对于具体细节,Knative官方文档是一个非常推荐的参考。
另外,Knative社区也是一个开放并且对新手很友好的地方。快速熟悉Knative最好的方式是加入Knative的Slack频道,还有就是加入Knative用户的Google论坛,加入该论坛不仅可以为你提供Knative成员邮件列表,还可以访问共享的社区日历和工作文档。
每周的工作组会议都涉及各种主题,从服务API到自动缩放,再到操作和文档。同样,每周该项目的技术监督委员会都会收到一个工作组的最新消息,其中会介绍他们过去几个月的工作。所有的会议和会议纪要都做了记录,可以很容易地查找以前的对话。