傳統的應用程序開發
識別一些SOA引入企業的范例轉換是理解服務生命周期管理需求的重要因素。許多設計人員和分析人員(Groves 2005、Dwyer 2006)已經指出SOA要求業務和IT更緊密地相結合。這本身通常就是企業運營中的巨大轉變。另一個是從應用程序的開發和部署轉換到離散服務。
關于IT項目,應用程序可以定義為解決某一或某類用戶需求的任務集合。例如,外匯應用程序可能包含支持搜索交易、定義交易方式以及將訂單提交至交易記事薄的任務和功能。這些功能主要針對定義為外匯交易者的某一類用戶。傳統上,應用程序是按照企業的項目或計劃進行開發的。項目經理和分析師定義需求和所需功能、確定工作成果級別以及所需資源和某些控制因素,如費用、范圍和時間。這正是傳統應用程序開發生命周期令人擔憂的地方。
通常在定義這些應用程序的功能時考慮需求。通過在整個構建過程中迭代需求定義,敏捷編程方法學試圖消除這一擔憂。此方法在一定程度上減少了人們的擔憂,但是規則及處理行為可能仍然嵌入在應用程序中。服務生命周期討論將不會直接解決這一問題,但是SOA中的服務組合提供了一種對邏輯進行去耦的方法。另外,由于傳統應用程序中的緊密耦合,在任務的可交付、運行時管理中組合眾多功能的需求通常是相當困難的。與安全性、服務質量等相關的許多決策在設計時而不是運行時完成,因此極大地減少了應用程序的靈活性,而靈活性正是滿足不斷變化的業務需求所需要的。
對傳統應用程序開發項目的更大擔憂是過長的開發和準備時間。應用程序在投入生產之前花費6到12個月的情況并不少見。我曾經參與過許多項目,它們在進入生產之前花費了幾年時間。希望更快地投入市場是導致SOA出現的一個關鍵因素。傳統應用程序開發流程通常導致試圖將盡可能多的功能融入到一個項目中,這是不現實的!從這個角度討論服務生命周期是很重要的。擴大范圍會產生兩種后果:降低發布質量和導致項目延遲。這兩種情況對業務或IT部門都是不理想的。理解服務生命周期管理可以直接解決這一問題。
作為將應用程序分解為跨公司共享的服務的一種方法,SOA的普及度和受關注程度日益提高,利用SOA原理來嘗試解決許多傳統應用程序開發周期的負面問題一點兒也不令人驚訝。到目前為止,采用SOA來消除這些擔心已表現出了可觀的成效,但是也引入了大量關于生命周期管理、服務管理和企業感知的新需求。本文試圖發現有關所謂的“共享服務生命周期(Shared Service Lifecycle,SSLC)”的一些問題和最佳實踐。
共享服務生命周期
許多公司和分析師使用業務服務生命周期來描述與SOA服務關聯的生命周期。我更喜歡使用術語共享服務生命周期(SSLC)。在定義中使用術語業務表示我只討論代表業務流程的服務(常常稱為復合服務),而不是基礎服務,如提供信息和訪問物理數據源及安全服務。使用共享而不是業務,您就可以更好地認識到服務生命周期管理直接受其與企業中其他服務(某些復合業務服務)的關系所影響。
圖1描述了典型的迭代SSLC,包括兩個方面:設計時和運行時。本文集中講述設計時方面,后續文章將討論SSLC的運行時階段。
圖1:共享服務生命周期的設計和運行時階段