基础设施技术的历史向来引人入胜。由于基础设施的规模巨大,它已经经历了一次快速的颠覆性变革。除了计算机和互联网的早期,基础设施可谓日新月异。这些创新使基础架构更快,更可靠,更有价值。
有些公司的人将基础设施推到了极限,他们已经找到了自动化和抽象的方法,提取基础设施更多商业价值。通过提供灵活的可用资源,他们将曾经是昂贵的成本中心转变为所需的商业公用事业。
然而,公共事业公司很少为企业提供财务价值,这意味着基础设施往往被忽略并被视为不必要的成本。这使得投入创新或改进的时间和金钱很少。
这样一个如此简单且令人着迷的业务栈怎么可以被轻易忽略?当基础设施出现故障时,业务显然会受到重视,那么为什么基础设施很难改善呢?
基础设施已经达到了使消费者都感到无聊的成熟度。然而,它的潜力和新挑战又激发了实施者和工程师们新的激情。
扩展基础设施并使用新的业务方式让来自不同行业的工程师都能找到解决方案。开源软件(OSS)和社区间的互相协作,这股力量又促使了创新的激增。
如果管理得当,今天基础设施和应用方面的挑战将会不一样。这使得基础设施建设者和维护人员可以取得进展并开展新的有意义的工作。
有些公司克服了诸如可扩展性、可靠性和灵活性等挑战。他们创建并封装了一些项目,封装了可供他人遵循的模式。这些模式有时很容易被实现者发现,但在其他情况下,它们不太明显。
在本书中,我们将分享来自云原生技术前沿的公司的经验教训,使您能够有效解决可靠运行可伸缩应用程序的问题。现代商业发展非常迅速。本书中的模式将使您的基础设施能够跟上业务的速度和敏捷性需求。更重要的是,我们会让您自行决定何时采用这些模式。
这些模式中有很多都已经在开源项目中得到了体现。其中一些项目由云原生计算基金会(CNCF)维护。这些项目和基金会并不是模式的唯一体现,但忽视它们会让你失去理智。以它们为例,但要自己进行尽职调查,以审核您所采用的每个解决方案。
我们将向您展示云原生基础设施的益处以及可扩展系统和应用程序的基本模式。我们将向您展示如何测试您的基础设施,以及如何创建一个可以适应您需求的灵活的基础设施。您将了一些重要方面和未来发展。
这本书可以激励你继续前进并自由分享你在社区中学到的知识。
谁应该读这本书
如果您是开发基础设施或基础设施管理工具的工程师,那么本书就是为您准备的。本书将帮助您了解创建旨在在云环境中运行的基础设施的模式、流程和实践。通过了解应该怎么做,您可以更好地了解应用程序的作用,以及应该何时构建基础设施或使用云服务。
应用程序工程师从本书中还可以发现哪些服务应该是其应用程序的一部分,哪些服务应该由基础设施提供。通过本书了解应用开发者和管理基础设施的工程师应该共同承担的责任。
希望提升技能并系统地在设计基础设施和维护云网关基础设施方面发挥更大作用的系统管理员也可以从本书中学到很多。
你是否在公有云中运行所有的基础设施?本书将帮助您了解何时使用云服务以及何时构建自己的抽象或服务。
运行在数据中心还是本地云?我们将概述现代应用对基础设施的期望,并将帮助您了解利用当前投资的必要服务。
这本书不是一本教程,除了给出实现示例之外,我们没有指出特定的产品。对于经理、董事和高管来说,这可能太过技术性,但可能会有所帮助,具体取决于该角色的参与和技术专长。
最重要的是,如果您想了解基础设施如何影响业务,请阅读本书,以及如何创建经证实可为具备全球互联网运营规模的企业服务的基础设施。即使您的应用程序不需要扩展到这种规模,如果您的基础设施是使用此处描述的模式构建的,并且考虑到灵活性和可操作性,这本书仍然值得一读。
为什么我们写了这本书
我们希望通过专注于模式和实践而不是特定产品和供应商来帮助您了解。当前存在太多的解决方案而人们不了解它们本身到底要解决什么问题。
我们相信通过云原生应用程序管理云原生基础设施的好处,并且我们希望所有人都具有这种意识。
我们希望回馈社区,推动行业向前发展。我们发现这样做的最好方式是解释业务和基础设施之间的关系,阐明问题并解释发现它们的工程师和组织所做的解决方案。
以不涉及产品的方式解释模式并不总是很容易,但了解产品存在的原因很重要。我们经常使用产品作为模式的例子,但只有当它们会帮助您提供解决方案的实施示例时才会提到。
如果没有无数人数万小时的自愿编写代码,帮助他人以及投资社区,我们就不会走到这里。我们非常感谢那些帮助我们了解这些模式的人们,我们希望能够回馈并帮助下一代工程师。这本书就是我们表达谢意的方式。
浏览本书
本书的组织结构如下:
- 第 1 章介绍云原生基础设施是什么以及我们如何走到当前这一步。
- 第 2 章可以帮助您决定是否以及何时采用后面章节中预先描述的模式。
- 第 3 章和第 4 章展示了应该如何部署基础设施以及如何编写应用程序来管理它。
- 第 5 章将教你如何从测试开始就设计可靠的基础设施。
- 第 6 章和第 7 章展示了如何管理基础设施和应用程序。
- 第 8 章总结并提供了一些有关未来发展的见解。
如果你像我们一样,不会从前到后完整看完本书。以下是关于本书主题的一些建议:
- 如果您是一位专注于创建和维护基础设施的工程师,您应该至少阅读第 3 章至第 6 章。
- 应用程序开发人员可以专注于第 4、5 和 7 章关于将基础架构工具开发为云原生应用程序。
- 所有不构建云原生基础设施的人都将从第 1、2、8 章中受益匪浅。
在线资源
您应该通过访问 CNCF 网站熟悉云原生计算基金会(CNCF)及其托管项目。本书中的许多项目都被用作示例。
您还可以通过查看 CNCF 景观项目(参见图 P-1),了解项目这些项目的全局视图。
云原生应用程序是从 Heroku 的 12 因素的定义开始的。我们会解释它们之间的相似之处,但你应该熟悉下 12 因素是什么(参见 http://12factor.net)。
还有许多关于 DevOps 的书籍、文章和演讲。尽管本书不关注 DevOps 实践,但是在实现云原生基础设施时,如果没有 DevOps 规定的工具、实践和文化,将很难实现。
致谢
Justin Garrison
感谢 Beth、Logan、我的朋友、家人以及在此过程中支持我们的同事。感谢那些帮助我们的社区和社区领袖以及给予宝贵反馈的评论者。感谢 Kris 让这本书变得更好,感谢读者花点时间阅读本书并提高你的技能。
Kris Nova
感谢 Allison、Bryan、Charlie、Justin、Kjersti、Meghann 和 Patrick 为我写这本书所作出的帮助。我爱你们,永远感激你们为我所做的一切。