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