混合云/多云環境如何部署微服務
微服務能夠為混合云或多云部署帶來大量的好處,但是它們也能夠帶來與網絡、安全性等相關的新挑戰。
大多數IT企業已經開始認識到在開發和部署中實施軟件組件化的好處。在云中,組件化帶來了重要的優勢,例如增加彈性和支持橫向擴展。
微服務(即通常在應用程序中共享的小型功能組件)能夠顯著地放大這些優勢。但是,首先用戶必須正確地規劃、開發和部署微服務。
了解如何讓微服務起作用
如需開始規劃微服務,IT團隊需要了解微服務與以服務為導向架構中應用程序組件或元素的不同之處。微服務不是完整的應用組件;它們是在應用中作為服務專為共享而設計的——這意味著多個應用能夠在同一時間內調用微服務的單個實例。微服務也是專為使用類似于網絡RESTful接口而設計的。
如果微服務不符合上述定義,那么它們可能不會提供很多好處的。當微服務能夠符合上述特點時,用戶需要在混合云或多個云部署中維護每一個微服務。
微服務對多云網絡的影響
因為微服務是小塊的功能組件,它們可以將應用程序分解成為對外部服務的很多個連續請求。這個用于訪問服務的網絡有可能引入傳輸延遲和其他網絡性能問題。至關重要的是,鏈接微服務和使用它們提供服務質量(QoS)的應用的網絡連接需要支持用戶體驗。在用戶部署微服務之前,應跨用戶的混合云或多云環境測試所有負載變化下的微服務運行性能。如果用戶的服務質量低于可接受水平,那么可變更網絡連接以矯正之。另外,用戶可以設計自己的應用部署過程以便于服務不會移動到用戶網絡中的盲點。
混合云和多云應用中的網絡性能問題通常都與數據流量流經多云、或云和數據中心以及邊界點的方式相關。可以與用戶的云供應商進行溝通,讓用戶的VPN供應商和數據中心團隊協力優化網絡連接性。應特別謹慎處理多云應用,因為很多公共云供應商并不與其他供應商直接相連;他們會希望連接通過用戶的VPN或數據中心網絡。如果在一個云中的一個應用使用了另一個云中的一個微服務,那么就存在著一個長傳輸延遲的潛在可能。如果用戶不能降低延遲時間,那么就應盡量避免跨云供應商網絡的微服務訪問。用戶可能需要在每一個云環境中都部署一個服務副本,從而避免這樣的網絡性能問題。
多個應用程序訪問微服務還需要專門的優化網絡。訪問微服務的最簡單方法就是假定擁有一個連接用戶所有云和數據中心的專用網絡。通過使用這種方法,用戶可以在任何位置部署微服務,而應用可以使用標準IP機制——URL和域名服務(DNS)或其他服務目錄方法,來讓應用程序訪問它們。
當微服務在不同云供應商之間或在云供應商與數據中心之間遷移時,還會帶來另一個挑戰。通常情況下,這種遷移需要改變IP地址,這意味著微服務遷移后必須將服務邏輯名稱關聯不同地址。應確保用戶有用于更換故障組件的工具和措施,從而對DNS或服務目錄項做出必要的修改,以便用戶的應用程序能夠在微服務的新地址找到新服務。
安全地部署微服務
多個應用經常共享一個單一的微服務,這一事實帶來了混合云和多云環境中的另兩個挑戰:安全性和合規性,以及狀態和無狀態行為。
由于應用在任何時候都在共享功能,所以具有嚴格合規性需求的應用程序就存在著違規風險。這是因為共享服務可能會為外人留下一個進入的窗口。由于遷移微服務或在負載下復制微服務需要相當開放的尋址方法,所以用戶需要確保每一個微服務及其訪問的安全性。避免微服務混合要求安全性和合規性監控的功能與其他開放給更大社區的功能——讓它們成為兩個不同的微服務。
探索狀態和無狀態問題
狀態與無狀態問題是很復雜的,即便對于軟件架構師和開發人員來說亦是如此。應用程序通常支持包括多個步驟或狀態的交易型活動。例如,假設我們有一個被稱為“兩個數相加”的服務。如果我們在一個請求中提出第一個數,在另一個請求中提出第二個數,而其他用戶可能會無意中在我們的兩個數之間引入他們自己的數字,那么我們就會得到錯誤的答案。
如果微服務無法在向它發出的請求之間保存數據,那么如有需要可令請求無狀態或者確保他們能夠以某種方式傳輸狀態。在我們的例子中,提供兩個待相加的數字就可省去多次請求以及消除狀態行為風險。此外,還可以讓請求包含一個微服務能夠通過后端數據庫與狀態關聯的用戶ID。當提出我們的第一個數時,微服務將在數據庫中記錄下這個數。然后,當提出第二個數時,微服務就能夠將兩個數相加并返回結果。
對于多功能性、敏捷性和靈活性總是有一個物有所值的價格的,而在混合云和多云中使用微服務則代表著我們研究領先優勢的這三項特點。仔細規劃、盡量降低價格并部署可輕松擴展至復雜云未來的微服務。