前言
對大多數大型企業和機構來說,單體應用是他們的重要支柱。 雖然這些應用維繫著穩定的收入流,保障業務正常運轉,但它們通常與開發、發佈管理和專案管理等複雜的流程及平台綁定在一起。 最終,這些單體系統功能模組,或者說孤島,成為了當今企業面臨的最大痛點之一。
本文分享了來自賽默飛世爾科技公司前產品負責人 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內容編輯