采用微服務架構的六個考量因素
譯文【51CTO.com快譯】新興技術的下一波浪潮正向我們涌來,人工智能、可穿戴設備、物聯(lián)網(wǎng)及更多技術變得普及開來。許多組織現(xiàn)面臨著管理這些整體式應用程序這個難題。當下,速度和靈活性必不可少。Netflix、Twitter、eBay和亞馬遜等大型互聯(lián)網(wǎng)公司采用的下一個架構創(chuàng)新是微服務。據(jù)互聯(lián)網(wǎng)服務器供應商NGINX聲稱,68%的組織在使用或調查這種方法。
微服務架構正在IT行業(yè)備受追捧,因為它相比許多傳統(tǒng)架構方法有諸多優(yōu)勢。比如在醫(yī)療保健領域,這種架構對新的解決方案來說大有希望,比如遠程患者監(jiān)控、使用物聯(lián)網(wǎng)設備數(shù)據(jù)的預測建模、醫(yī)療工作流程自動化和面向精準醫(yī)療的生物信息學分析等。隨著組織采用現(xiàn)代微服務架構,這六個因素可以幫助它們取得成功,同時補充現(xiàn)有的云和DevOps基礎設施。
微服務架構如何補充云和DevOps?
微服務是一種軟件開發(fā)和架構方法,它將應用程序構建為一組松散耦合、自治且可獨立部署的服務。這些小型的業(yè)務驅動服務有明確定義的通信接口,這使得應用程序模塊化、更易于構建和測試,并可以高效地獨立部署。
微服務方法與云和DevOps相輔相成。多年來,云計算已趨于成熟,可以提供高效的基礎設施解決方案,用于快速構建原型、支持龐大的數(shù)據(jù)處理和生產(chǎn)需求,并帶來比內部IT部門更高的服務水平。與此同時,DevOps有助于更快地交付優(yōu)質軟件,同時彌補開發(fā)團隊和運營團隊之間的差距。
結合微服務架構與成熟的DevOps實踐有助于分散的團隊更快地創(chuàng)新、控制自己的技術堆棧和標準、管理性能指標、管理開發(fā)和發(fā)布周期,最終縮短產(chǎn)品上市時間。與此同時,微服務可以通過將整體式應用程序分解成微服務并部署到云平臺上,從而便于逐步遷移到云。通過這種方法,團隊更容易模擬生產(chǎn)工作負載,確保軟件的可用性、可擴展性和質量,同時提高發(fā)布頻次。
微服務架構設計方面的六個考量因素
下列六個考量因素有助于使組織確保成功,同時補充現(xiàn)有的云和DevOps基礎設施:
- 服務發(fā)現(xiàn):在復雜的分布式系統(tǒng)中,團隊根據(jù)負載大小擴展服務實例,這意味著服務實例的數(shù)量及其位置可能動態(tài)變化。擁有適當?shù)姆瞻l(fā)現(xiàn)機制可確??蛻艨梢曰诜兆灾行呐c合適的服務進行通信。
- 服務間通信:在微服務架構中,服務以同步或異步方式進行通信以完成事務。服務間通信機制協(xié)調這種通信。如果設計不力,服務間的過多通信會導致“繁瑣”的應用程序和糟糕的性能。想進行優(yōu)化,請使用這些經(jīng)過驗證的設計模式:
▲Saga模式:由某個事件或消息觸發(fā)的一連串事務。
▲API網(wǎng)關:借助API網(wǎng)關,通過單個API調用來抽象處理針對多個API的調用。
▲命令查詢職責分離(CQRS):使用物化視圖將讀寫分開來,并通過訂閱事件來更新視圖。
▲事件溯源:存儲事件而不是狀態(tài);通過重放事件來獲得狀態(tài)。
▲服務網(wǎng)格:將服務間的網(wǎng)絡通信卸載到某個軟件組件,以確保彈性和服務發(fā)現(xiàn)等。
- 數(shù)據(jù)完整性:由于每個微服務都有自己的數(shù)據(jù)庫,因此確保數(shù)據(jù)在涉及多個服務的事務之間具有一致性可能是個挑戰(zhàn)。上述模式(如事件溯源、CQRS和Saga)有助于實現(xiàn)數(shù)據(jù)一致性。
- 安全性:加密機制以及強大的身份驗證和授權工具可以確保靜態(tài)數(shù)據(jù)和傳輸中數(shù)據(jù)的安全性。一些組織采用身份即服務和授權即服務解決方案。此外需要在API網(wǎng)關后面保護API,確保未經(jīng)授權的用戶無法使用令牌獲得訪問權限。
- 監(jiān)控和運行狀況檢查:隨著微服務架構中服務數(shù)量越來越多,確定和排查問題變得具有挑戰(zhàn)性。比如說,單單一個事務可能跨多個服務調用,因此很難確定性能瓶頸的確切原因。使用分布式事務跟蹤和運行狀況檢查API監(jiān)控系統(tǒng)可確保應用程序在高效運行。借助合適的監(jiān)控和檢測,團隊可以為關鍵指標創(chuàng)建可視化元素,收集歷史數(shù)據(jù)以了解性能趨勢,并在問題出現(xiàn)時收到警報。
- 質量保證:微服務通過在服務之間傳遞消息來處理請求。隨著服務數(shù)量增加,自動化測試對于確保所有交互和通信都經(jīng)過全面測試非常重要,包括單元測試、集成測試、組件測試和合約測試。此外,每個級別的全面測試確認服務可以獨立于其他服務運行或與其他服務一起運行,以支持分布式事務。最后,測試表明整體架構足夠靈活,可根據(jù)需要支持另外的數(shù)據(jù)源、框架或庫。
更快的創(chuàng)新是目標
微服務架構是當今一個重要的IT趨勢,這有充分的理由。與傳統(tǒng)的架構方法相比,它有許多優(yōu)勢,并且大有希望。雖然要克服諸多挑戰(zhàn),但如果企業(yè)組織擁有精心設計的方法、全面組織的分布式團隊以及可靠的DevOps流程,可以借助現(xiàn)代微服務架構更快地進行創(chuàng)新,只需構建新產(chǎn)品,并更新改造現(xiàn)有應用程序。
原文標題:Six Considerations for Adopting a Microservices Architecture,作者:Vinil Menon和Khushboo Shah
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】