自從云計算問世以來,它的主要重點一直就是把應用程序遷往云計算。在這個目標中所隱含的意思就是,在云計算和數據中心之間其實并不存在著什么功能性方面的差異;要說有差異,那也只是成本上的差異。現在,我們知道事實并非如此;對于供應商來說,云計算收入的最大來源來自于專為技術而開發的基于云計算的應用程序,因此架構師需要真正認識到這到底意味著什么。認識應當從評估云計算業務趨勢對云計算服務模式的影響開始,并以可視化的方式顯示云計算功能將如何支持新的應用程序。接下來的步驟就是學習如何針對云計算的特點進行應用程序開發,以及將應用程序的設計與不斷發展的云計算功能相結合。
對于軟件架構師來說,關于云計算業務趨勢一個最重要的事實就是,基礎設施即服務(IaaS)并不足以推動云計算充分發揮其潛力。只是簡單地把目前未使用的服務功能托管至云計算并不能夠為用戶創造足夠的價值,同時也不能夠為供應商帶來足夠的利潤。亞馬遜公司是世界云計算服務的領導者,它已經超越了IaaS,增加了提供特殊功能的網絡服務,如緩存、HTML加速、身份管理以及數據流量管理等等。這些功能就是亞馬遜公司認為能夠最好綜合買方價值和賣家利潤兩方面的組合體,因此架構師應當以類似的方式來思考他們自己的應用程序。
當在評估哪些功能更適用于基于云計算的應用程序時,架構師需要做的第一步工作應當是對主要的云計算供應商進行調研以便于找出他們能夠提供些什么。尤其是,他們應當了解云計算服務與產品的發展趨勢。首先,亞馬遜將會致力于抓住云計算服務發展的大機遇,而亞馬遜的眾多競爭對手們則會通過找到有價值的新利基市場而避開這位云計算市場巨人的強勢。當這些企業找到正確的發展方向時,他們就可以組織開發能夠充分迎合其功能發展趨勢的云計算應用程序。
云計算服務工具應當能夠促進供應商的發展和云計算應用程序的開發,從而推動云計算服務的發展,而無需專門的云計算服務。云計算的全部內容就是分配,分配用戶、分配資源、分配數據以及分配處理等。其宗旨就是,更高效地分配最有用的云計算應用程序和服務。
分配支持分解成三個部分:對充滿變數和多樣化用戶群的支持,從各種分散的資源收集信息,以及遍及各處(從低負載運行到幾乎需要全部超級計算機資源才能完成的高負載任務)的應用程序處理。云計算可以提供所有這些,而且大部分現有和新興的云計算網絡服務產品都可歸入這三種類別中的一個。
所有這些分配模式中的共同點就在于工作流所承擔的關鍵角色。如今的架構師們都傾向于開發敏捷性和功能性的應用程序。基于云計算的應用程序的開發均應圍繞工作流開展,而每個分配區域都有著各自的工作流管理問題和機遇。
對于用戶分配,云計算架構師應當對個人用戶尋求類似于網絡的支持,而工作請求則應匯集到一個共同的事務處理或處理流程。我們可以把整個應用程序前端視為一個彈性元素的集合體(即一些網絡服務器和一些應用程序服務器),我們可以在需要的任意時間任意地點以任意的數量進行部署。這一模式可為任何應用程序所遵循,而在這一模式下支持這些應用程序的功能就是云計算架構師所需要達到的首要目標。
云計算數據收集往往是與用戶支持聯系在一起的,這是因為一般情況下用戶不僅是信息的來源而且也是成果交付的目標。說這句話對,是因為相同的模式對于應用程序是可以奏效的。說這句話不對,則是因為物聯網(IoT)模式的存在。云計算物聯網是指從分布源收集信息并將其聚集成兩部分:一個是為實時過程或業務控制應用而設計的,而另一個則是為驅動分析和知識應用程序的收集形式(大數據)應用而設計的。
當你在開發云計算數據收集應用程序時,應當將物聯網的原理和特性謹記在心。
大多數的架構師會發現,當他們在構思用戶支持或數據采集以及物聯網時,應用云計算模式是比較容易的。而分配過程則是比較困難的,這是因為在一個應用程序的固定函數模式下過程彈性是對可變工作負載的響應。而這恰恰正是架構師需要完成的工作內容。
在讓應用程序過程變得可分配的工作中,其關鍵步驟就是正確地設計其組件。一般來說,管理生成數據庫升級的組件擴展是比較困難的;數據庫的升級和保護技術是一個難以得到緩解的瓶頸問題。這就意味著,你應當為你的計算密集型或以只讀模式訪問數據表的云計算應用程序尋找功能區。找到這些功能區,并讓這每一個功能區成為能夠隨工作增長或合同而水平擴展的組件。
架構師要完成的最后一步工作就是要讓云計算供應商的網絡服務(包括現有和將來的)適應之前提及的三個分配區。例如,內容緩存和HTML加速是服務不同應用程序用戶群體的有用技術,而流量管理也是物聯網或分布式數據采集中的關鍵因素。在每個區的架構限制下,通過把這些云計算工具映射至工作流中的合適位置就可讓這些工具適應。架構師應當始終把外部工具和API納入公司的邏輯設計范圍內,這樣如果網絡服務發生變化或者如果他們找到了另一家具有更好服務功能的云計算供應商,那么他們就能夠輕松地修改代碼。
由于與組件集成相關的網絡開銷方面的原因,云計算工作流非常容易就會變得低效起來。在完成邏輯設計之前,開發出測試應用程序以測試工作流是一種非常明智的做法,這樣一來架構師就能夠讓應用程序適應他們云計算供應商的性能特性。這樣就能防止他們的先進應用程序發生故障。