# 前言
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 公司