從單體應用到微服務:使用 NGINX 打破孤島的基礎指南

本文分享了來自賽默飛世爾科技公司前產品負責人 Carlos Ponce 的專家建議,他介紹了棄用單體應用的好處以及使用 NGINX 過渡到微服務的基本步驟。

前言

對大多數大型企業和機構來說,單體應用是他們的重要支柱。 雖然這些應用維繫著穩定的收入流,保障業務正常運轉,但它們通常與開發、發佈管理和專案管理等複雜的流程及平台綁定在一起。 最終,這些單體系統功能模組,或者說孤島,成為了當今企業面臨的最大痛點之一。 

本文分享了來自賽默飛世爾科技公司前產品負責人 Carlos Ponce 的專家建議,他介紹了棄用單體應用的好處以及使用 NGINX 過渡到微服務的基本步驟。


單體架構阻礙現代化開發

儘管開發團隊正竭力追隨新技術的發展腳步,滿足消費者的期望,但單體系統已成為創新和創造新收入路上的絆腳石。

Carlos 表示:「傳統企業和機構傾向於維護大型單體應用,因為它們維繫著企業和機構的大量業務收入。 與此同時,這些單體應用連接孤立的平臺,阻礙了當前的開發進程。 ”

隨著單體應用的規模和範圍不斷擴大,它們的代碼通常也會變得緊密耦合,很難進行擴展或更改。 單體系統的互連模塊不僅會拖慢開發速度,而且每次部署新功能時都面臨著較高的失敗風險。


速度關係著企業存亡

現在,公司的排名取決於將創意轉化為產品併為客戶創造新價值的速度。 事實上,80%的企業希望靠客戶體驗 (CX) 來取勝。 而現實是殘酷的,單體系統阻礙了持續部署和交付,經常讓應用團隊錯過關鍵的上市視窗。 

相比之下,那些藉助 DevOps 和敏捷方法交付技術服務的公司提高了競爭標準。

舉例來說,大約在十年前,亞馬遜過渡到了DevOps,將物理伺服器遷移到了亞馬遜雲科技 (AWS) 雲平臺。 到了 2015 年,他們每天能夠對開發、測試和生產主機進行 5,000 萬次部署,即平均每秒一個。 那麼亞馬遜開發人員現在能做什麼,我們可想而知。

Carlos指出:「這類似於20世紀80年代的製造業革命,那些採用精益原則控制品質、收集更好的反饋並提高了生產力的公司獲得了更多的市場份額,而那些沒有跟上時代腳步的公司則紛紛倒閉或遭受重創。

今天,同樣的故事正在上演——這一切都歸結於更快速、更可靠的部署。 擁有大型單體應用的公司無法隨時根據需要交付新功能。 ”


如何上手

持續交付、不斷試驗和收集客戶反饋對大型企業未來取得成功十分重要。 對於許多企業來說,這意味著從單體架構過渡到微服務。

最好的遷移策略是什麼?

Carlos認為,企業需要重點考慮三點:


・微服務是正確的選擇嗎?

・選擇合適的實施方法
・建立合適的流水線


微服務是正確的選擇嗎?

毫無疑問,過渡到微服務需要非常仔細和全面的規劃。 但是我們首先得確定它是正確的選擇。 瓦解單體系統不僅是一項重大的工程技術投資,而且通常需要進行更廣泛的結構轉變,統一企業的願景、目標和人員是獲得成功的先決條件。

Carlos建議企業先花一點時間,好好做一次評估。 “你需要仔細地分析遷移到微服務是否值得。 例如,如果你實施了微服務,卻沒有採用敏捷方法,那麼你將無法真正獲得這種遷移的優勢。 ”


選擇合適的實施方法

當公司決定遷移到微服務架構時,應用設計和架構的最大變化是功能元件之間通過網路進行通信,而單體應用則是在記憶體中進行通信。 因此,在遷移應用或啟動綠地專案時,正確設計和實施網路通信至關重要。

Carlos建議使用NGINX微服務參考架構 (MRA),這是一套現成的模型,能夠幫助企業創立微服務應用。

Carlos解釋道:自微服務興起以來,NGINX就深耕這一領域,它的高性能、輕量和靈活等特性使其成為微服務的完美之選。

它的模型有簡單也有複雜:

01
代理模型

一種簡單的網路模型,適用於將NGINX Plus實施為微服務應用的控制器或API閘道。 如果單體應用非常簡單,這是一個不錯的選擇。

02
路由器網狀模型

一種更穩健的網路方法,在每個主機上都配置一個負載均衡器,並管理系統之間的連接。 該模型非常適合較複雜的單體應用。

03
結構模型

該模型在每個容器中都嵌入NGINX Plus充當正向和反向代理。 它適用於高負載系統,支援所有級別的SSL/TLS,並通過NGINX Plus提供服務發現、降低延遲、實現持久的SSL/TLS連接。


建立合適的流水線

Carlos認為,企業要想真正獲得雲原生應用和架構的優勢,就必須構建強大的持續交付 (CD) 流水線。

許多企業都很想利用DevOps加速交付應用,從專門的團隊過渡到更自治的團隊,讓他們在端到端交付週期方面承擔更多責任。

Carlos表示:“敏捷思維方式和DevOps方法並非只是時髦的術語,而是能夠讓企業確實獲得更高的業務價值、靈活性和回應能力。 DevOps消除了持續交付的障礙,支援團隊儘快展開試驗、接收反饋及向客戶發佈新功能。 ”

NGINX Plus能夠為DevOps提供以下支援:

01

可定製的監控,提供關於應用狀態的即時反饋以及狀態指標的JSON提要,這些資訊可直接融合到部署流水線中。

02

後端伺服器組動態配置,支援持續部署,無需手動重寫和重新載入配置檔即可實現後端伺服器自動發現。

03

負載均衡自動化,提供出色的靈活性和可配置性,允許使用DevOps工具(例如Ansible、Chef和Puppet)進行自動化配置。

但Carlos警告說,DevOps絕非靈丹妙藥。 如果沒有穩固的DevOps基礎,公司可能還沒開始就失敗了。

“僅採用敏捷方法並不能保證成功。 如果開發團隊實施了scrum敏捷框架,但在其他方面卻沒有任何改變,那麼公司不會變得敏捷。 公司還必須進行文化上的轉變,並花時間評估計劃採取的措施是否正確以及是否值得。 ”


作者:Elle Poole Sidell
職位:F5 NGINX內容編輯