首頁>科技>

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

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

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

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

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

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

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

建議確定架構師真正理解了無狀態和有狀態設計模式之間的差異其次,弄清楚應用程序是否適合遷移至雲端,抑或託管、重新編寫等才是更好的選擇。

6
最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 大學專業選這5個,月薪過萬,媽媽再也不用擔心我單身了