重構單體應用爲微服務

前言

Floyd Smith

近年來,微服務在應用開發和部署方面取得了顯著的進步。將應用開發或者重構成微服務以分離服務,通過 API 以明確的方式來相互“對話”。例如,每個微服務都是自包含(self-contained),各自維護自己的數據存儲(這非常有意義),可以獨立更新其他服務。

使用基於微服務的方式使得應用程序開發變得更快更容易管理,它只需要較少的人力就能實現更多的功能,可以更快更容易地部署。把應用程序設計成一套微服務,更加容易在多臺具有負載均衡的服務器上運行,使其能夠輕鬆應對需求高峯、由於時間推移而平穩增長的需求和由於硬件或者軟件問題導致的宕機事故。

微服務的最大進步在於改變了我們的工作方式。敏捷軟件開發技術、應用遷移雲端、DevOps 文化、持續集成與持續部署(CI/CD)和容器應用都使用了微服務來革新應用開發與交付。

無論是作爲反向代理還是高性能的 web 服務器,NGINX 軟件都與微服務和上述列出的所有技術有着緊密聯繫。NGINX 使得基於微服務的應用更加易於開發,確保了微服務解決方案能順利運行。

隨着 NGINX 與微服務之間的關係日漸緊密,我們已經在 NGINX 網站上運行了一個由 Chris Richardson 所編寫的七部分系列微服務。他很早就參與了設計與實現,他的博文主要涵蓋了微服務應用設計與開發方面的內容,包括瞭如何從單體應用遷移至微服務。博文提供了關於微服務問題的全面概述,非常受歡迎。

在本書中,我們已經將全篇博文轉換成章節,並在每一章節添加了尾欄以展示 NGINX 實現微服務的相關內容。如果您認真聽取建議,您將解決許多潛在的開發時甚至是在編寫代碼之前可能會遇到的問題。此書在關於 NGINX 微服務參考架構 方面也是一本非常不錯的書籍,其實現了以下提出的大部分理論。

本書章節:

  1. 微服務簡介 從被誇大的微服務概念到如何在創建和維護應用時部署微服務進行簡單介紹。
  2. 使用 API 網關 API 網關是整個微服務應用的單入口,它爲每一個微服務提供了 API。NGINX Plus 可以很好地應用於 API 網關,提供了負載均衡和靜態文件緩存等功能。
  3. 微服務架構中的進程間通信 當把一個單體應用分解成幾部分(微服務),他們就需要相互通信。事實上有許多進程間通信的方案可供您選擇,包括表述性狀態轉義(REST)。本章將給出詳細介紹。
  4. 微服務架構中的服務發現 當服務運行在一個動態環境中,想要找到他們並不是一件簡單的事情。
  5. 微服務事件驅動數據管理 每個微服務維護着自己特有的數據展示與存儲,而不是共享一個統一、跨越一個(或兩個)單體應用的數據存儲。雖然這能給予您很大的靈活性,但也可能導致變得複雜。本章可以幫助您理清這些問題。
  6. 選擇微服務部署策略 在 DevOps 世界中,您怎樣做與您最初要做的事一樣重要。Chris 講解了微服務部署的主要模式,以便您可以爲您的應用作出合理的選擇,
  7. 重構單體應用爲微服務 在理想世界裏,我們不會缺少時間與金錢,因此可以將核心軟件轉化爲最新最好的技術、工具和方法。然而您可能會發現自己正在將一個單體應用轉化爲微服務,而且進展非常緩慢……。Chris 在本章將爲您講解明智的做法。

我們認爲您將會發現本書的每一章都是值得閱讀的,我們希望當您在開發自己的微服務應用時,能應用到本書的內容。

Floyd Smith,NGINX 公司

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章