SOA和敏捷:是朋友?還是敵人?
方法論和架構是互斥的嗎?
有人認為,軟體開發實踐與架構是不重迭的。在其它環境中這麼說也許是正確的,但在這個主題中卻不盡然。一方面,敏捷方法(例如XP)直接關注設計,不是特別同意預先做大量設計(BDUF)的觀點。另一方面,大多數SOA團隊主要是圍繞構建一系列服務而組成的功能性團隊。SOA本質上鼓勵有特性的團隊結構和團隊間的溝通方式,而這兩點又都屬於方法論的範疇。
敏捷與SOA是朋友
SOA是一種架構,強調業務必須能滿足市場要求,而且通過構建各種服務,可以消除重複,並達成“重用”這一很難捉摸的目標。團隊通過構建“服務”而非“應用”,來平衡企業內部和外部的工作。
敏捷是一種方法論,強調事物是變化的,軟體開發團隊必須擁抱變化,並對變化做出反應。通過引入技術性和非技術性實踐,團隊可以使業務敏捷起來。
架構和方法論是可以一同使用的,它們本質上是互補的。而且,SOA和敏捷的目標相同,它們都承認(1)變化是必然的(2)組織需要有效地應對變化。所以,我們期望在構建SOA時,能夠選擇敏捷方法論,反之亦然。對嗎?
敏捷和SOA是敵人
你可能認為既然目標相同,這兩種技術必定是一致的,沒有衝突的,也就意味著實踐與架構的重迭。但在這一點上,SOA社群和敏捷社群都有不同的聲音。為什麼會這樣呢?
主要原因之一就是,它們的出發點不同,最初的方向也不相同。儘管最近幾年敏捷快速發展,社群中獲得很多經驗並總結了“敏捷宣言”,並將其應用於大專案,但從發展史上看,敏捷還是“草根”,從小專案中走來。而SOA是新興的,具有自頂向下的本性,使用“分而治之”的方法來進行軟體開發。這種方法,尤其是其中的“分割法”,很容易會導致團隊間的溝通不暢,如文件、規範等等。
SOA和敏捷在以下三方面有衝突:
SOA鼓勵架構設計在前,而敏捷對這種稱為“BDUF”的方法持相反觀點。 SOA鼓勵按功能線索來劃分團隊,而敏捷傾向於以交叉功能式組建團隊。 SOA中,服務一旦建立起來,SOA就不再對服務的變化做出相關的反饋,而敏捷則強調及時反饋,無論是技術層面,還是人的層面。
當前現狀
現在,雖然很少有文章涉及這一主題,但我還是找到了幾篇文章:
Carl Ververs描述了使用一整套的敏捷實踐來構建一個SOA,並與開發人員共同完成了它(見Agile: The SOA Hangover Cure)。遺憾的是,這只是一個團隊構建了一套服務。在另一個InfoQ的訪談中,Geoff Henton和Tom Stiehm也討論了使用敏捷方法構建SOA。這篇檔案似乎說的是一個專案中的一套服務,它僅是一個敏捷嘗試,內部團隊的交流如何?當服務完成後,上百個客戶在使用這些服務,此時這些服務需要改變,如何維護呢?我建議:一是SOA團隊應通過測試而非文件進行溝通,二是Frank Grossman的觀點,但在異構環境中究竟該如何做呢?
此外,根據我對SOA團隊的個人觀察,從來沒有發現有在內部團隊方式上做任何敏捷實踐的。團隊被劃分開,實現各自的服務與應用,通過分散的會議、文件和WSDL進行溝通交流。SOA鼓勵BDUF,並很少為服務本身可能的變化做準備。
本文比較短,坦白地說,是因為我也不知道答案。這只是該主題上的第一個討論。我們將以開放的形式進行,總結過程中出現的重要問題並分別討論它們。歡迎並鼓勵任何評論。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14639675/viewspace-594434/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spark 和 Hadoop 是朋友不是敵人SparkHadoop
- 資訊圖:電子郵件,朋友還是敵人
- 敏捷和DevOps:是敵是友?敏捷dev
- IT專案中的ROI:專案經理的朋友還是敵人(轉)
- 敏捷與 DevOps:是敵是友?敏捷dev
- 朋友還是敵人:五個問題概述了人工智慧的未來人工智慧
- Mashable:Twitter是新聞媒體的敵人還是情人
- SOA最核心問題:人還是流程?
- UP還是敏捷方法?敏捷
- Steam,你的敵人是亞馬遜亞馬遜
- 敏捷,是靈丹妙藥還是又一個忽悠?敏捷
- 面向構件的開發:SCA還是SOA?
- 服務應該去版本化,不管是微服務還是SOA微服務
- C++最大的敵人是它的過去C++
- 微軟∶Linux 是 Windows 的頭號敵人 (轉)微軟LinuxWindows
- 敏捷史話(四):敏捷是人的天性 —— Arie van Bennekum敏捷
- 霍金的警告:人工智慧是人類的終極敵人人工智慧
- 什麼是SOA
- 是人為shutdown,還是異常宕庫?
- 敏捷開發與文件:互補還是互斥?敏捷
- 敵人——建立敵人Rioter
- 人類未來:性愛機器人是美女還是野獸機器人
- 為什麼React和Immutable是好朋友React
- 如果老婆和女朋友她們是程式
- 敏捷是什麼?敏捷
- 智慧機器人伴侶 機器人的陪伴是進步還是悲哀?機器人
- 波士頓動力、特斯拉,你們的勁敵終究還是來了
- 面試官靈魂三問:什麼是SOA?什麼是微服務?SOA和微服務有什麼區別?面試微服務
- Fowler:敏捷還是精益?——毫無意義的問題敏捷
- 朋友或敵人:五個問題概述人工智慧的未來人工智慧
- spring和springmvc是單例還是多例SpringMVC單例
- RUP是敏捷的嗎?敏捷
- 趣文:如果老公和男朋友他們是程式
- 瞎了!HBO和黑客交朋友,你是在逗我嗎?黑客
- 趣文:如果老婆和女朋友她們是程式
- 程式設計是更像數學還是人類語言?- MIT News程式設計MIT
- 書評:《程式是給自己看的還是給別人看的》
- 育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析AI