天天看點

将應用遷移至雲端面臨的問題​

傳統軟體的架構設計就是為了運作在公司的企業防火牆内。如果軟體開發是在數年以前完成的,那麼軟體對其運作所處的實體硬體甚至開發使用的技術堆棧非常可能有着很高的依賴性。通常我們稱之為“緊耦合”架構,因為如果從特定的實體環境中分離出來之後,軟體将不能正常運作。雲計算架構要求的是一種“松耦合”的架構。彈性是雲計算的關鍵組成特性之一。而真正具有彈性,意味着軟體能夠按需進行擴充或縮減,而且必須不受運作所處實體環境的限制。​

大多數遺留(legacy)架構在進行建構時,從未考慮過系統随交易量上升自動擴充的問題。傳統的擴充技術通常隻意味着垂直擴充。垂直擴充通過增加現有硬體來完成,也就是說在現有的基礎上增加更多的CPU、記憶體或磁盤空間,抑或以更大或更強的硬體來替換現有的基礎設施。垂直擴充也是人們所說的“縱向擴充”(scaling up)。垂直擴充對軟體的要求不會太多,通常隻限于進行配置更改,保證在基礎設施條件類型不變的前提下能夠使用新裝置。​

在這種擴充政策下,架構師在設計軟體時通常不會考慮如何脫離基礎設施限制的問題。舉例來說,如果某個應用基于IBM的iSeries計算機建構,那麼通常在開發軟體時就會從盡量充分利用專有基礎設施性能的角度進行,進而不可避免地出現軟體與硬體緊耦合的情況。遷移這樣的應用可能就必須進行較多的再造工程,移除軟體對iSeries的依賴性,使其在雲中能夠變得具有彈性。而一個具有彈性的系統,則意味着能夠處理不曾預料到的、突然爆發的工作負載。​

雖然雲的伸縮性可以通過垂直擴充來展現,但是大多數情況下還是通過自動化的水準擴充來完成。水準擴充的完成方式是在現有的基礎設施之外增加其他共同運作的裝置,通常也被稱為“橫向擴充”(scaling out)。水準擴充通常涉及系統架構的多個層級。一些常見的水準擴充方法是按照伺服器類型(見圖1)、客戶類型及應用領域類型(見圖2)等增加節點。​

将應用遷移至雲端面臨的問題​

圖1按照伺服器類型​

将應用遷移至雲端面臨的問題​

圖2按照客戶類型擴充​

遺留應用程式面臨的另一個挑戰是系統的設計是“有狀态”(stateful)還是“無狀态”(stateless)。雲服務是無狀态的。一個“無狀态的”服務是指服務不知道前一個請求或響應的任何資訊,隻知道服務處理給定請求這一持續期間的資訊。無狀态的服務在用戶端而非伺服器端存儲應用的狀态,是以對基礎設施沒有依賴性。​

無狀态架構比有狀态架構更适合雲。将底層架構從保持狀态轉變為無狀态的工作通常都不太可行,對應用進行整體替換反而更為現實。如果公司想要充分利用雲計算的各種優勢,那麼将遺留的有狀态應用遷移至雲端可能會收到令人失望的結果。​

總之,除非本地應用在進行架構設計時,就是按照可被其他技術和無關基礎設施的服務通路的一系列松耦合服務的理念進行的否則,遷移至雲端或者需要進行較多的工程再造工作,或者可能會從雲服務中收益少,抑或可能根本就不可行。​

繼續閱讀