在Agile 2014會議上,一位高級軟件顧問介紹了基于云的應用程序開發是如何從Agile的解決方案中受益的。
云已經從開發人員的手中拿走了一些對應用程序開發的控制權。不幸的是,很多的開發人員還沒有適應他們在云時代中的新角色,威斯康星州的高級顧問兼Agile教練Dan Piessens說。這一轉變將迫使開發人員轉變他們對于應用程序開發的傳統觀念。他們還必須學習使用新的技能以便于為不斷變化的平臺開發彈性的應用程序。
“我們在運行的系統中發現,開發人員所使用的很多模式要么對系統有直接的控制要么對系統有一定的影響,”Piessens解釋說。在云中,他們并不具有與之相同的控制權,而更新、服務位置和中斷都完全處于開發人員的視野范圍之外。
Piessens建議開發人員在基于云的應用程序開發中應用Agile實踐以便于引入更多的靈活性,并能夠快速地故障中恢復過來。“解釋說明這些情況并將其與Agility原則聯系起來的方法中有一些是比較簡單的,”他說。
在Agile 2014上,Piessens舉辦了一個名為“開發穩定、敏捷的云應用程序”的會議,在會議上他向與會者分享了一些開發更具敏捷性的云應用程序的基本策略。在講座中,Piessens從瞬態錯誤處理、診斷以及把回落模式融入應用程序開發等問題入手。“我將與大家分享一些來源于現實生活的‘恐怖故事’來說明這些做法的重要性,”他補充說。
在會議上,Piessens介紹了應用程序開發是如何與敏捷性相關的,以及如何向外部專家“借腦”。他還討論了誰最有可能從這些實踐中受益。 開發一個變化的平臺 “彈性云應用程序與敏捷性相關有兩個核心領域:穩定的質量,以及響應變更的能力,”Piessens說。
他認為,云應用程序開發策略所帶來的價值更多的在于問題恢復而不是回避問題。開發人員將不得不花費數月之久的時間來進行提前規劃以求實現萬無一失的部署。但是,無論是什么樣的錯誤,云中終究還是會發生錯誤的。開發人員對它們研究的深入程度最終將決定云應用程序是否能夠保持長期的成功。
第一步就是要把云視為一個不斷變化的有機體,而不是一個靜態的平臺。“有些開發人員可能并沒有意識到云的底層基礎設施是在不斷變化的,他們可能需要把響應和常見瞬態故障結合起來。”這方面的一個例子就是可擴展性。如果云應用程序得以普及,而流量突然飆升,那么將會發生些什么呢?在此之前,開發人員需要對這個情況有所了解以便于執行一個高效的可擴展性預案。
當涉及云時,質量并不是一個最終的結果。這是一個持續不斷的過程,而云應用程序的設計需要開發人員擁有一個面向過程的概念。換而言之,云應用程序的設計并不需要是防彈的。它只需簡單地具有彈性。
收集資源
這個過程是從選擇云供應商開始的,但它并沒有止步于此。一旦應用程序被托管,那么企業用戶仍然需要在定義托管方法中發揮積極的作用。這樣一來,他們就能夠最大限度地發揮不同功能的優點。“讓主要云供應商托管你的項目顯然是必須的,但是你還要確保你充分地利用了供應商的優點,而這些優點有可能是被其他人所忽略的。”
具有諷刺意味的是,一些企業用戶往往過于追求避免受制于廠商而放棄了那些有助于增加其靈活性的特性和功能。“雖然今天選擇了亞馬遜網絡服務(AWS)明天選擇微軟公司的Azure有可能會為用戶帶來一些好處,但是你有可能正在犧牲某些關鍵的性能以及可靠性,而這些指標往往是影響你目前業務價值的決定性因素,”Piessen解釋道。
簡單地做好研究則是實現靈活性和避免常見陷阱的另一個關鍵步驟。如果你愿意,那里有著大量的研究材料可供你使用。“這一領域的專家和相關組織(例如微軟模式與實踐)可以提供有益的指導。他們可以提供大量的材料來幫助開發人員理解何為常見的陷阱、為什么開發人員應當關注這類問題以及如何解決這些問題等等。”
也有些諸如Centare這樣的咨詢公司能夠從一個新的視角來詮釋企業的應用程序開發過程,尤其是特別強調了他們正在進行的正確工作以及那些需要做出改變的事情。
Piessens認為,敏捷開發戰略是多種類型云應用程序的必然選擇,其中包括了移動后端以及SaaS企業。這些策略有可能會讓所有的人都能夠得益。“在私有數據中心中的兩臺服務器上運行的應用程序就可以利用到這些技術,”Piessens說。