使用微服務構建現代應用程式

DataStax發表於2020-12-24

 

 

微服務已經開始佔領現代企業的方方面面。
 
在一項針對350多位高階開發者的調查1中,有91%的人表示他們當前正在使用或計劃使用微服務,而92%的人表示他們在去年增加了微服務的數量。
 
這種增長與企業大幅提高軟體和應用開發的敏捷性的急迫需求密切相關,也是資料的數量和型別增加所帶來的當務之急。
 
 

 
微服務勢在必行
 
從歷史上看,企業開發軟體時通常採用單體架構,將所有業務邏輯打包到單個基於底層關係型資料庫的程式中。對於沒有擴充套件性要求的小型應用程式,這種方法可能仍然是完美的選擇。
 
但是,當資料增長並且需要擴充套件應用程式時,這種單體式應用程式通常需要重新構建和重新部署,其過程可能需要數週的時間。
 
每次需要更新程式時,開發人員每次都不得不把時間精力浪費在幾乎重造整個車輪,而非簡單地更新原有程式的某一元件。
 
這當然不是最有效的方式,特別是對於需要高可用、可擴充套件的軟體解決方案的大型企業而言。
 
使用微服務構建現代應用程式
By Berin Holy @ Dribbble.com
 

什麼是微服務?
 
根據《福布斯》雜誌的定義2:“微服務是業務驅動的、針對服務的應用程式。它們可以橫跨公有云和私有云,並在保證高效能和高可用的前提下快速且廉價地進行擴充套件。”
 
例如,電子商務公司可能會建立一個包含了訂單下達和付款處理兩個微服務的應用,以便客戶能夠輕鬆地線上購物。
 
使用微服務構建現代應用程式
 
微服務的核心是使開發人員能夠獨立部署和升級單個軟體元件。微服務架構(MSA)中的每個服務都是“為失敗而設計的”——這意味著當其中一個服務出現故障時,應用程式的其它部分仍將按設計正常執行。
 
總之,由於使用了微服務,工程師在進行應用程式的區域性調整時不必每次都要改動整個程式碼庫(code base),因而釋出更新變得容易得多。
 
 

 
微服務帶來的挑戰
 
儘管好處很多,微服務也帶來了一些挑戰:
  • 基於微服務架構(MSA)的應用程式是分散式的。不同的服務之間通過網路進行交流。因此,MSA作為解決方案需要一種新的通訊模型來確保跨地域的低延遲,甚至是在事務一直擴充套件的情況下。
  • 對於要求高可用的企業來說是不能容忍故障的。因此,開發人員必須確保應用程式內的每個微服務都可以快速解決故障。否則效率會下降,使用者體驗也會隨之崩潰。
  • 由於微服務中的每個服務都是獨立執行的,這意味著MSA需要去中心化的資料管理機制。單體應用程式通常共享單一資料層(通常是傳統的關係型資料管理系統RDBMS)。然而每個微服務都需要有自己獨立的資料持久化機制。需要從其它微服務獲取資料的微服務,必須只能通過API層訪問這些資料。
 
試想一下在一個MSA解決方案中,使用者需要通過多模型查詢語句從自幾個不同的微服務獲取資料。這樣的操作不僅需要快速方便,而且每個服務的資料都需要保持一致。這些都不是容易解決的問題。
 
然而,一旦建立了DataStax設計的敏捷的企業資料層,開發人員就可以依賴一個具有資料最終一致性的模型,這確保了無論使用者身在何處,始終可以訪問當前的完整資料。
 
使用微服務構建現代應用程式
By Berin Holy @ Dribbble.com
 

使用微服務構建現代應用程式
 
雖然微服務可以幫助我們構建更強大的應用程式,但我們不能期望將幾個微服務拼湊一起就可以得到出色的最終產品。相反,我們需要了解這種現代軟體開發方法對資料管理提出的特殊要求。
 
畢竟,我們的終極目標應該是構建具有高可用和高伸縮性的高效能應用程式。如果我們在開始時不考慮資料管理的架構,僅僅使用微服務構建應用程式將無法讓我們實現這樣的終極目標。
 
這就像不事先研究地形就在溼地或沼澤之上建造巨大的豪宅,遲早會遇到嚴重的問題。當這棟豪宅問題百出時,業主將不得不對其進行重建。
 
因此,在使用微服務之前,請考慮以下幾點:
  • 哪個資料庫將作為應用程式的基礎,並且該資料庫的功能是否足夠強大以滿足應用程式擴充套件的需求?
  • 隨著採用率的提高,需要儲存多少資料以及使用者需要多長時間才能檢索到這些資料?
  • 需要採取哪些安全措施(例如身份驗證、訪問控制和加密)以確保資料隱私得到保護,並且確保應用符合內部政策和外部法規(例如GDPR—歐盟的《通用資料保護條例》)?
  • 即使使用者處於全球各地,應用程式如何保證每個人看到相同的資料(假設有此要求)?
  • 根據服務等級協議(SLA),在流量高峰期間,全球各地的使用者都能多快地訪問到資料?
  • 當今眾多領軍企業都在使用微服務是有原因的:微服務能使企業最終達到構建更強大、更靈活的應用程式的目標。

 

使用微服務構建現代應用程式
By Berin Holy @ Dribbble.com
 
提前規劃,清楚瞭解最終應用交付時微服務之間協同工作的方式,並配置確保即使在高峰時段資料也能在應用中無縫移動的架構——這樣,企業就可以打造變革性的工具,幫助員工提高工作效率,併為使用者提供更強大的體驗。
 
 
References:
  1. GlobeNewswire: New Research Reveals Record Growth in Microservices Is Disrupting the Operational Landscape https://www.globenewswire.com/news-release/2018/05/02/1494613/0/en/New-Research-Reveals-Record-Growth-in-Microservices-Is-Disrupting-the-Operational-Landscape.html
  2. Forbes: Enabling The Enterprise Shift To Microservices https://www.forbes.com/sites/forbestechcouncil/2018/12/10/enabling-the-enterprise-shift-to-microservices/#57694d6d59e1

相關文章