前言

前言

微服务是一种分布式系统解决方案,推动细粒度服务的使用,这些服务协同工作,且每个服务都有自己的生命周期。因为微服务主要围绕业务领域建模,所以避免了由传统的分层架构引发的很多问题。微服务也整合了过去十年来的新概念和技术,因此得以避开许多面向服务的架构中的陷阱。

本书包含了业界使用微服务的很多案例,包括 Netflix、Amazon、Gilt 和 REA 等。这些组织都发现这种架构有一个很大的好处,就是能够给予他们的团队更多的自治。

谁该读这本书

细粒度的微服务架构包含了很多方面的内容,所以本书的范围很广,适用于对系统的设计、开发、部署、测试和运维感兴趣的人们。对于那些已经走上更细粒度架构之路的人,无论是开发新应用,还是拆分现有的单块系统,都会因书里很多的实用建议而受益。对于想要了解微服务方方面面的人,这本书也可以帮助你确定微服务是否适合你。

为什么写这本书

在多年前帮助人们更快地交付软件时,我就已经开始思考系统架构相关的话题了。我意识到,虽然基础设施自动化、测试和持续交付等技术很有用,但如果系统本身的设计不支持快速变化,那所能做的事情将会受到很大限制。

与此同时,许多组织尝试使用更细粒度的架构来实现更快的交付,结果发现其带来了更好的可扩展性,增强了团队的自治,或使团队更容易接受新技术。我自己的经历,以及我在 ThoughtWorks 和其他公司的同事的经历,都强化了这样的事实:使用大量的独立生命周期的服务,会引发很多令人头痛的问题。在某种程度上,你可以把这本书作为一个一站式商店,其包含微服务所涉及的各种主题,以帮助你来理解微服务。要是以前就知道这些概念的话,我将受益匪浅!

当今的微服务

微服务是一个快速发展的主题。尽管它不是一个新的想法(虽然这个词本身是),但世界各地的人们所获取的经验以及新技术的出现正在对如何使用它产生深远的影响。因为其变化的节奏很快,所以这本书更加关注理念,而不是特定技术,因为实现细节变化的速度总是比它们背后的理念要快得多。而且,我完全相信几年后我们会对微服务适用的场景了解更多,也会知道如何更好地使用它。

所以,虽然在本书中我已经尽最大的努力来提炼出这个主题的本质,但如果你对这个话题感兴趣的话,还是要做好进行若干年持续学习的准备,来保证你处在这个领域的前沿!

本书结构

这本书主要基于主题来组织,因此你可以直接翻阅你最感兴趣的主题。我在前面几章中尽量列出了所有的术语和想法,我相信即使自认在微服务领域已经相当有经验的人,也会在这几章中找到感兴趣的话题。我建议大家看看第 2 章,其中涉及的话题很广,并提供了一些框架,来帮助你更加深入地学习后面的主题。

对微服务不太了解的人,可以按照我的章节安排从头读到尾。

以下概述了本书所涵盖的内容。

  • 第 1 章,微服务

    首先介绍微服务的基本概念,包括微服务的主要优点以及一些缺点。

  • 第 2 章,演化式架构师

    这一章讨论了架构师需要做出的权衡,以及在微服务架构下具体有哪些方面是我们需要考虑的。

  • 第 3 章,如何建模服务

    在这一章我们使用领域驱动设计来定义微服务的边界。

  • 第 4 章,集成

    这一章开始深入具体的技术,讨论什么样的服务集成技术对我们帮助最大。我们还将深入研究用户界面,以及如何集成遗留产品和 COTS(Commercial Off-The-Shelf,现成的商业软件)产品这个主题。

  • 第 5 章,分解单块系统

    很多人对于如何把一个大的、难以变化的单块系统分解成微服务很感兴趣,而这正是我们将在这一章详细介绍的内容。

  • 第 6 章,部署

    尽管这本书讲述的主要是微服务的理论,但书中的几个主题还是会受到最新技术的影响,部署就是其中之一,我们在这一章会探讨这方面的内容。

  • 第 7 章,测试

    本章会深入测试这个主题,测试在部署多个分散的服务时很重要。特别需要注意的是,消费者驱动的契约测试在确保软件质量方面能够起到什么样的作用。

  • 第 8 章,监控

    在部署到生产环境之前的测试并不能完全保证我们上线后没有问题。这一章探讨了细粒度的系统该如何监控,以及如何应对分布式系统的复杂性。

  • 第 9 章,安全

    这一章将会研究微服务的安全,考虑如何处理用户对服务及服务间的身份验证和授权。在计算领域,安全是一个非常重要的话题,而且很容易被忽略。尽管我不是安全专家,但我希望这一章至少能帮助你了解在构建系统,尤其是微服务系统时,需要考虑的一些内容。

  • 第 10 章,康威定律和系统设计

    这一章的重点是组织结构和系统设计的相互作用。许多组织已经意识到,两者不匹配会导致很多问题。我们将试图弄清楚这一困境的真相,并考虑一些不同的方法将系统设计与你的团队结构相匹配。

  • 第 11 章,规模化微服务

    这一章我们将开始了解规模化微服务所面临的问题,以便处理在有大量服务时失败概率增大及流量过载的问题。

  • 第 12 章,总结

    最后一章试图分析微服务与其他架构有什么本质上的不同。我列出了微服务的七个原则,并总结了本书的要点。

排版约定

本书使用了下列排版约定。

  • 楷体

    表示新术语。

  • 等宽字体(constant width

    表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。

  • 加粗等宽字体(constant width bold

    表示应该由用户输入的命令或其他文本。

  • 斜体等宽字体(constant width bold

    表示应当被用户自定义的值或上下文决定的值所替换的文本。

Safari® Books Online

Safari Books Online(http://www.safaribooksonline.com)是应运而生的数字图书馆。它同时以图书和视频的形式出版世界顶级技术和商务作家的专业作品。技术专家、软件开发人员、Web 设计师、商务人士和创意专家等,在开展调研、解决问题、学习和认证培训时,都将 Safari Books Online 视作获取资料的首选渠道。

对于组织团体、政府机构和个人,Safari Books Online 提供各种产品组合和灵活的定价策略。用户可通过一个功能完备的数据库检索系统访问 O'Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology 以及其他几十家出版社的上千种图书、培训视频和正式出版之前的书稿。要了解 Safari Books Online 的更多信息,我们网上见。

联系我们

请把对本书的评价和问题发给出版社。

美国:

  O'Reilly Media, Inc.

  1005 Gravenstein Highway North

  Sebastopol, CA 95472

中国:

  北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室(100035)

  奥莱利技术咨询(北京)有限公司

O'Reilly 的每一本书都有专属网页,你可以在那儿找到本书的相关信息,包括勘误表、示例代码以及其他信息。本书的网站地址是:

http://bit.ly/building-microservices

对于本书的评论和技术性问题,请发送电子邮件到:bookquestions@oreilly.com

要了解更多 O'Reilly 图书、培训课程、会议和新闻的信息,请访问以下网站:

  http://www.oreilly.com

我们在 Facebook 的地址如下:http://facebook.com/oreilly

请关注我们的 Twitter 动态:http://twitter.com/oreillymedia

我们的 YouTube 视频地址如下:http://www.youtube.com/oreillymedia

致谢

我要把这本书献给 Lindy Stephens,没有她就没有这本书。是她鼓励我开始了这段旅程,并在我充满压力的写作过程中一直支持我。她是最好的伴侣。我还想把这本书献给我的父亲 Howard Newman,他一直陪伴着我。这本书是献给你们两位的。

我想特别感谢 Ben Christensen、Vivek Subramaniam 和 Martin Fowler 在本书的写作过程中提供了详细的反馈,是他们的帮助成就了这本书。我还想感谢 James Lewis,我们一边喝啤酒一边讨论本书中的想法。没有他们的帮助和指导,这本书就不可能写成。

此外,还有很多人在本书的早期版本中提供了帮助和反馈。我要特别感谢 Kane Venables、Anand Krishnaswamy、Kent McNeil、Charles Haynes、Chris Ford、Aidy Lewis、Will Thames、Jon Eaves、Rolf Russell、Badrinath Janakiraman、Daniel Bryant、Ian Robinson、Jim Webber、Stewart Gleadow、Evan Bottcher、Eric Sword、Olivia Leonard(以上排名不分先后),还有 ThoughtWorks 的所有其他同事以及业界的同行,感谢他们帮我走了这么远。

最后,我要感谢 O'Reilly 的所有员工,包括让我开始撰写本书的 Mike Loukides、本书编辑 Brian MacDonald、Rachel Monaghan、Kristen Brown、Betsy Waliszewski,以及所有其他以我不知道的方式帮助过我的人。

目录