# 前言
Floyd Smith

微服务的兴起在应用开发和部署方面取得了显著的进步。将应用开发或者重构成微服务以分离服务，以明确的 API 方式来相互“对话”。例如，每一个微服务都是自包含（self-contained），各自维护自己的数据存储（这具有重要意义），并可以独立更新其他服务。

转到使用基于微服务的方式使得应用程序开发变得更快更容易管理，它只需要较少的人力就能实现更多的功能，可以更快更容易地部署。把应用程序设计成一个微服务集合，更加容易在具有负载均衡的多台服务器上运行，使其能够很容易地应对需求高峰、随着时间推移平稳增长的需求和由于硬件或者软件问题导致的宕机事故。

微服务的重大进步中最重要的部分就是改变了我们的工作方式。敏捷软件开发技术、应用迁移云端、DevOps文化、持续集成与持续部署（CI/CD）和容器应用都使用了微服务来革新应用开发与交付。

无论是作为反向代理还是高性能的 web 服务器，NGINX 软件都与微服务和上述列出的所有技术有着紧密联系。NGINX 使得基于微服务的应用更加容易开发，并保持微服务解决方案能顺利运行。

随着 NGINX 与微服务之间的关系变得越来越紧密，我们已经在 NGINX 网站上运行了一个由 Chris Richardson 所写的七部分系列微服务。他很早就参与了设计与实现，他的博文主要涵盖了微服务应用程序设计与开发方面的内容，包括怎么从单体应用转移。博文提供了关于微服务问题的全面概述，非常受欢迎。

在本书中，我们已经将每一篇博文转换成书籍章节，并在每一章节添加了一个侧边栏以展示 NGINX 实现微服务的相关内容。如果您仔细遵循建议，您将解决许多潜在的开发时甚至是在编写代码之前的问题。它在关于 [NGINX 微服务参考架构](https://www.nginx.com/blog/introducing-the-nginx-microservices-reference-architecture/) 方面也是一本非常不错的书籍，实现了以下提出的大部分理论。

本书章节是：

1. **微服务介绍** - 对微服务的简单介绍

从它那可能被夸大的概念到如何在创建和维护应用时部署微服务

2. **使用 API 网关** - API 网关是您整个微服务应用的单入口，它为每一个微服务提供了 API。NGINX Plus 可以很好地应用于 API 网关负载均衡和静态文件缓存等等。

3. **微服务架构中的进程间通信** - 一旦您把一个单体应用分解成几部分 - 微服务 - 他们需要相互通信。事实上您有很多进程间通信的方案的选择，包括表述性状态转义（REST）。本章将给出详细的内容。

4. **微服务架构中的服务发现** - 当服务运行在一个动态的环境中，您需要他们时，找到他们不会是一个小问题。

5. **微服务事件驱动数据管理** - 每个微服务维护着自己特有的数据展示和存储，而不是共享一个统一的跨越一个（或两个）单体应用的应用范围数据存储。这给了您很大的灵活性，但是也可能导致变得复杂。本章可以帮助您整理这些。

6. **选择一个微服务部署策略** - 在 DevOps 世界中，您怎样做事与您最初要做的事一样重要。Chris 讲解了微服务部署的主要模式，以便您可以为您的应用作出明知的选择，

7. **重构单体应用为微服务** - 在完美的世界里，我们永远都会得到将核心软件转化为最新最好的技术、工具和方法的时间和金钱。但您可能会发现自己正在将一个单体应用转化为微服务，而且进展非常缓慢……。Chris 将会讲解明智的做法。

我们认为您会发现每一章都是值得阅读的，我们希望当您开发自己的微服务应用时，能应用到本书的内容。

Floyd Smith，NGINX 公司