图书前言

前言

我首次尝试构建微服务应用是在 2013 年,那时 Docker 刚问世,但我还未有所耳闻。我们当时的应用是将每个微服务独立部署在一个虚拟机上,可以想象,这种部署方式成本相当高昂。由于成本问题,我们不得不减少微服务的数量,把更多功能整合进现有的微服务中,直至这些服务已不能称之为“微服务”。虽然它仍然属于分布式应用,并且运行稳定,但这些服务的规模已远大于我们最初的设想。

那时我已经意识到微服务是一个具有巨大潜力的概念,只是受限于成本,我暂时搁置了微服务,但心中始终记得未来要重新审视这一技术。几年时间里,随着开源技术的兴起,微服务的相关工具和技术不断发展,而云计算成本也在激烈的供应商竞争中逐步降低。时间的推移使得构建和运行由小型组件组成的分布式应用变得更加经济实惠。

终于在 2018 年,我重新投入微服务的世界。这一年,我接手了两个适合采用微服务的项目,都是为初创公司工作。第一个项目是帮助一家充满潜力的年轻公司构建一个全新的微服务应用,而第二个项目则是为我自己的创业公司开发微服务应用。为了确保成功,我知道需要采用新的工具和方法。我需要有效的打包微服务的工具,需要一个能部署微服务的计算平台,并且这一切必须能自动化部署。

那时,Docker 已成为行业内部署微服务的首选工具。我也被 Kubernetes 作为微服务计算平台的潜力所吸引,尽管一开始对其抱有疑虑。特别是 Kubernetes 承诺的避免云服务商锁定非常吸引人。此时,我已阅读了不少关于微服务的书籍,它们在理论上提供了巨大的价值。尽管我热爱理论知识,但这些书籍缺少实际操作的例子,让我这样一个经验丰富的开发者也感到无所适从。据我个人经验,项目初期的糟糕技术决策会长时间影响项目的进展。

学习 Kubernetes 的过程尤其艰难,一开始它看似难以掌握。但我当时的任务需要一种可靠的交付软件的方法,所以我坚持不懈地努力学习,几乎要放弃。直到我发现了 Terraform,这是我解决问题的关键。它使我能够理解 Kubernetes 并将其应用于实际,从而坚定了我使用它的决心。Terraform 为我提供了描述应用基础架构的方式。我开始实践基础设施即代码,感觉自己进入了一个全新的领域。

我强迫自己跨越学习曲线,凭借评估技术和快速学习的长期经验,加上一些试错方法,使我最终能够交付性能优良、灵活、可靠、可扩展的软件。这段经历激发了我写书的决心,我想让更多人更容易地接触和理解微服务。

因此,我开始写这本书—我当初希望有的那本书。我的目标是通过实践指导,展示构建微服务并不困难或复杂,关键在于方法和视角。你手中的这本书就是这一努力的成果,我希望它能让你免于走我曾经走过的弯路。