译者序
绝大多数企业的软件架构都是从一个单体架构开始的,而不是微服务架构。因为单体架构足够简单、容易上手,不需要复杂的流程就可以快速开发应用程序。但是伴随着企业的成长,单体架构的风险就会逐渐凸显出来。在需求量激增的情况下,整个应用程序会因为某一部分或者某一进程遇到瓶颈而受到限制。此外,因为单体架构的紧耦合设计,应用程序也面临着可用性上的挑战,面对日益复杂的事务处理几乎无法持续扩展,并且在构建、部署和测试等流程上都变得非常困难。然而,对企业来说影响更大的一点是,单体架构严重阻碍了创新发展。
因此,企业会在发展过程中逐渐转向微服务架构,将应用程序拆分成多个“微”小的服务运行。这些微服务都是面向业务功能或者某个子领域进行构建的,每个微服务实现一个单独的功能。微服务的理念也提倡每个服务分别由小型的、独立的团队进行开发并负责管理(可以参考亚马逊的两个比萨团队原则),所以说这不仅是技术管理上的更新,更是企业组织管理上的变革。
但是谈论微服务是一回事,能够真正地落地实施则是另一回事。本书旨在提供关于这方面的参考,全面地介绍了如何进行微服务的开发,并尽可能地从各个维度对其进行描述。从微服务的架构设计、构建、配置、测试、监控、安全,到持续集成/持续交付(CI/CD)流水线,本书都进行了积极的探索,并提供了详细的Go示例代码进行说明。
另一方面,所有上述内容的实现都是结合Kubernetes完成的。众所周知,Kubernetes是目前最流行的开源平台之一,主要用于在集群中自动化应用程序容器的编排,包括部署、扩展和维护等。Kubernetes提供了一个以容器为中心的基础设施框架,如今你很难找到一项没有(或者没有打算)和Kubernetes进行集成的新技术。除此之外,本书也涉及无服务器计算和服务网格这些热门话题,探讨了它们是如何发挥各自的优势为基于微服务的系统提供帮助的,并分别通过开源项目Nuclio和Istio进行了具体的说明。
希望读完本书后,你可以获得基于Kubernetes与微服务的云原生系统的设计、开发及管理的知识和经验。
最后,感谢编辑们的悉心指导,他们对本书做了大量的编辑和校对工作,最终保证了本书的顺利出版。感谢爱人又一次共同投入到翻译工作。感谢家人们的鼓励和支持,他们经常会关心本书的出版进度。
因时间和能力所限,翻译中难免有不当之处,请各位读者给出宝贵的建议,我们将会不断努力完善,谢谢。
史天
2020年3月