第五代呼叫中心之SOA(二)
北京商路通信息技術(shù)有限公司 黃河
2009/11/06
第五代呼叫中心之SOA(一)
SOA的解決之道
SOA面對的難題和夢想是:第一、軟件復(fù)用與成本攤;第二、需求滿足與變化適應(yīng);第三、軟件整合與軟件立舊。那么SOA的解決之道是什么?
在說明這個問題之前,我們先看看古人的一個故事,很有意思。
秦國的兵工業(yè)
縱覽兩千年前秦國的戰(zhàn)爭史幾乎就是一部典型的大軍團(tuán)作戰(zhàn)史,在文治方面“略輸文采,稍遜風(fēng)騷”的秦始皇在武功上卻是功勛卓著,戰(zhàn)績非凡。他驅(qū)使著秦軍這支歷史上著名的“虎狼之師”短短十年間,竟吞并六國,席卷中原,進(jìn)而又北逐匈奴,南服百越,最終一統(tǒng)天下,坐擁天下。
究竟是一種什么樣的技術(shù)力量在背后強(qiáng)力支撐著秦軍,使其能夠頻繁發(fā)動著大軍團(tuán)作戰(zhàn),面對不同的對手不斷地取得勝利而最終在軍事上強(qiáng)勢崛起呢?歷史文獻(xiàn)中一直不曾給出過真正完整的答案。
隨著大量秦國兵器的考古發(fā)掘,專家逐步為我們解開了這個千古迷團(tuán),一支裝備精良,武器先進(jìn)的秦帝國軍隊被完整地復(fù)原,一個龐大的秦國武器設(shè)計生產(chǎn)場面也隨之真實地情景再現(xiàn)。其武器設(shè)計質(zhì)量在讓人為之嘆為觀止的同時,也給我們當(dāng)今裝備研制生產(chǎn)領(lǐng)域帶來許多有益地啟示。原因很多,其中裝備設(shè)計制造標(biāo)準(zhǔn)化最是令人嘆為觀止。
專家們對春秋戰(zhàn)國時期的兵器進(jìn)行考古研究時發(fā)現(xiàn),那時各個諸侯國即使在同一地點(diǎn)遺留下的兵器,也存在著輕重不等,大小不一,形式多樣等普遍現(xiàn)象,而只有秦國的兵器,卻不論時間相隔多年,地點(diǎn)相距多遠(yuǎn),其造型和尺寸卻是幾乎驚人地完全一致。例如:在兵馬俑坑中發(fā)現(xiàn)的三棱箭頭有4萬多支,其制作得極其規(guī)整,箭頭底邊寬度的平均誤差只有正負(fù)0.83毫米。北京理工大學(xué)的冶金專家對秦軍箭頭做了金相分析,結(jié)果發(fā)現(xiàn)它們的金屬配比基本相同,數(shù)以萬計的箭頭竟然是按照相同的技術(shù)標(biāo)準(zhǔn)鑄造出來的。
專家們還對秦傭坑兵器的弩機(jī)進(jìn)行測試,結(jié)果發(fā)現(xiàn)數(shù)百件弩機(jī)的牙、栓、刀和其他部件,完全可以互換通用,輪廓誤差不超過1毫米。在戰(zhàn)場上,秦軍士兵可以隨時把損壞的弩機(jī)中仍舊完好的部件重新拼裝使用。專家同時還發(fā)現(xiàn)在青銅劍上有三條90多厘米長的棱線,將細(xì)長的劍身分成八個面,秦軍戈的圓弧部分加工得也十分規(guī)整,箭頭上三個流線型的表面也完全對稱。手工要完成這樣的表面加工有很大的難度,但實際情況是,兵馬俑坑中幾萬件兵器幾乎都是相同的質(zhì)量。如何保證質(zhì)量的同時大批量生產(chǎn)呢?實施標(biāo)準(zhǔn)化一定是其重要手段。盡管按今天的工業(yè)標(biāo)準(zhǔn)看,這些兵器的標(biāo)準(zhǔn)化仍舊是比較粗糙和初步的,但是,在兩千多年前,秦人執(zhí)著于統(tǒng)一標(biāo)準(zhǔn),保證了所有秦軍戰(zhàn)士使用的都是當(dāng)時最優(yōu)秀的武器。
由秦國兵工業(yè)的強(qiáng)健發(fā)展直至最后奠基秦國的霸主地位,軟件從業(yè)者可以得到如下啟示:
一 制造業(yè)和軟件業(yè)的相互羨慕
制造業(yè)羨慕軟件業(yè),因為雖然設(shè)計成本很高,但是,設(shè)計完成后,軟件的生產(chǎn)成本極低。
而軟件業(yè)其實更羨慕制造業(yè),生產(chǎn)成本很高,但是設(shè)計成本被成千上萬的生產(chǎn)過程攤薄了。
從秦國的兵工業(yè)看看我們羨慕的地方。
首先,看看復(fù)用與成本攤薄的問題,兵器的設(shè)計成本很高,需上百人年才能完成。但是,設(shè)計被復(fù)用了上百萬次后,成本被攤薄到很小很小。
其次,看看滿足需求和變化適應(yīng)的問題,恰恰是軟件行業(yè)無法做到的,秦軍的需求非常統(tǒng)一。
最后,看看整合與立舊的問題,由于標(biāo)準(zhǔn),弩機(jī)的牙、栓、刀和其他部件,完全可以互換通用,輪廓誤差不超過1毫米。在戰(zhàn)場上,秦軍士兵可以隨時把損壞的弩機(jī)中仍舊完好的部件重新拼裝使用,這是軟件業(yè)最想做到的。
其實,軟件業(yè)一直在努力向這個方向發(fā)展。
于是,軟件工程、軟件工廠、軟件藍(lán)領(lǐng)等概念一直被軟件業(yè)追捧。當(dāng)然,軟件的復(fù)雜度遠(yuǎn)遠(yuǎn)高于秦國的兵器,那么我們看看SOA對于幾個方面的解決之道。
二 軟件復(fù)用與成本攤薄
當(dāng)SomeThing軟件開發(fā)完成,實現(xiàn)了某種功能,如果無需在其他很多地方再重新編寫或維護(hù)它,那么無疑會提高生產(chǎn)率。然而,重用實現(xiàn)起來并不輕松,也并非自動化的。首先,必須以一種可重用的方式來組織或編寫代碼。然后,必須知道存在一段可以被重用的代碼。在組織代碼方面,不同的編程語言以不同的方式為重用提供內(nèi)置支持。過程和函數(shù)是大多數(shù)程序員所熟悉的基本單元。面向?qū)ο蟮恼Z言,比如C++和Java,還提供了定義和擴(kuò)展自定義的類型或類的手段。這些特性背后的基本理念就是封裝(也就是說,只需通過一些定義良好的接口來訪問其中的功能,實現(xiàn)對于您而言是一個黑盒子)。這些特性有其用途和優(yōu)點(diǎn),但是當(dāng)涉及到支持更大規(guī)模的重用時,它們也存在一些局限性。
首先,SomeThing軟件是用C++開發(fā)的,只有特別熟悉C++的程序員才能進(jìn)行有效的重用。
其次,如果A公司的開發(fā)人員開發(fā)了SomeThing軟件,A內(nèi)部的其他開發(fā)人員要發(fā)現(xiàn)SomeThing軟件可以被他使用也不是一件容易的事情,更不用說B公司、C公司的開發(fā)人員了。
最后,這個層面上的代碼并不支持網(wǎng)絡(luò),這意味著無法跨機(jī)器調(diào)用這些代碼,也無法在另一種編程語言中透明地重用它們。例如,SomeThing軟件是C++開發(fā)的,那么不費(fèi)一番工夫,我是無法在Java中調(diào)用SomeThing軟件的。
為了這個目標(biāo),軟件業(yè)前赴后繼,用了大量的概念和方法,如面向過程、面向?qū)ο蟆ORBA技術(shù),ActiveX、COM技術(shù)、COM+技術(shù)、DCOM技術(shù)和Agent技術(shù)等等。
SOA是如何解決這一問題的呢?首先讓我們看一看SOA中的術(shù)語“服務(wù)”。
服務(wù)很難精確的定義,可以理解為被調(diào)用的功能。
這個功能有以下幾個重要的特征:
- 容易被找到:一個做好的服務(wù),一定告訴別人;
- 明確說明能干什么:接口明確描述;
- 獨(dú)立:不要依賴于其他的系統(tǒng)的功能和狀態(tài);
- 誰都能調(diào)用:不依賴于操作系統(tǒng)、編程語言和軟件部署。
上面幾個特征表述是非常形象的表述,其實目標(biāo)只有一個“希望大家都來調(diào)用我”。
一方面,不限制操作系統(tǒng)、編程語言、軟件部署的機(jī)器;
另一方面,更方便的讓其他軟件調(diào)用。
W3C把SOA定義為“一組可調(diào)用的組件,其接口描述可以被公開和發(fā)現(xiàn)”。
SOA是一種思想,它絕對不是萬能的,它需要開發(fā)者根據(jù)自身行業(yè)的特征,設(shè)計哪一部分功能作為一個組件。
只有你的功能劃分得非常合理,才能做到軟件復(fù)用和成本攤薄。
三 需求滿足與變化適應(yīng)
SOA的方法在需求的滿足和變化的適應(yīng)方面并沒有太多其他獨(dú)到的地方,它依然是基于軟件的復(fù)用和成本的攤薄。
需求的滿足和變化的適應(yīng)要求服務(wù)合理地提供出來:
第一、需要滿足服務(wù)的幾個重要特征;
第二、服務(wù)要適合行業(yè)需要,是對行業(yè)需求的抽象,要考慮到行業(yè)其他軟件如何調(diào)用;
第三、需要有合適的顆粒度,以便可以組合出各種各樣的需求,并且需求變化時可以快速重組,同時,服務(wù)的一個部分需要變更,則不要影響全局;。
那么從本質(zhì)上來講,SOA對需求的滿足和變化的適應(yīng)方面的建議不是直接滿足需求和需求的變化,而是通過接口的調(diào)用和調(diào)用的組合來滿足的。
四 軟件整合與軟件立舊
討論完軟件復(fù)用與成本攤薄和需求滿足與變化適應(yīng)后,軟件整合與軟件立舊就是一個非常容易理解的問題了。
軟件以接口的形式出現(xiàn),自然軟件的整合更加容易,軟件的立舊更加輕松。
SOA的軟件整合似乎是很理想的一件事情,如果你要開發(fā)一個軟件,用于自己網(wǎng)站的會員在網(wǎng)上預(yù)訂酒店,軟件整合的過程大致如下:
- 你發(fā)現(xiàn)美國的一臺服務(wù)器,上面是一個提供房源的服務(wù),你調(diào)用其中一些服務(wù),解決了房源信息問題;
- 你發(fā)現(xiàn)了日本的一臺服務(wù)器,上面提供了展示酒店的服務(wù),你調(diào)用其中的一些服務(wù),解決了酒店信息展示的問題;
- 你發(fā)現(xiàn)中國的一臺服務(wù)器,提供地圖服務(wù)....
- 你發(fā)現(xiàn)法國的一臺服務(wù)器,提供客戶服務(wù)的服務(wù)...
- ....
組合后,你的軟件快速實現(xiàn)。
由于你可以選擇的服務(wù)眾多,可以任意組合服務(wù)的各種功能,很好的滿足了客戶的需求。而那些服務(wù)的提供商,也通過你對他的服務(wù)的使用,獲取了收益,達(dá)到了他的軟件的復(fù)用和成本的攤薄。
SOA的支持與其中重要的概念
“孤木難成林”,既然這個概念是解決軟件行業(yè)問題的概念,那么就需要整個軟件行業(yè)支持。目前,幾乎所有的軟件巨頭都在支持SOA,包括IBM、微軟、Oracle、BEA、SAP等等,還有一家AVAYA--我們行內(nèi)非常熟悉的廠商。SOA已經(jīng)不是一個大家爭論的概念了,而是實戰(zhàn)了。
SOA還有兩個重要的概念,即ESB和BPM。
第一個概念 ESB企業(yè)服務(wù)總線
SOA的服務(wù)組件暴露的是一種粗粒度的接口,其目的是使應(yīng)用之間能夠異步共享數(shù)據(jù)。而使用ESB,一種集成架構(gòu)將應(yīng)用程序和分離的集成組件拉在一起,以產(chǎn)生服務(wù)裝配組合從而形成復(fù)合的業(yè)務(wù)流程,進(jìn)而自動化一個即時企業(yè)中的業(yè)務(wù)功能。
ESB為SOA提供實現(xiàn)骨架。那就是說,它通過一個跨越多種協(xié)議的消息總線來提供一個有關(guān)命名路由目的地的高度分布的世界來提供松散耦合的,事件驅(qū)動的SOA。ESB中的應(yīng)用程序(和集成組件)在理論上是彼此解耦的,而且通過總線彼此連接為暴露為事件驅(qū)動服務(wù)的邏輯端點(diǎn)。
通過分布式的部署配置基礎(chǔ)設(shè)施,ESB能有效率地提供對在擴(kuò)展企業(yè)中分布的服務(wù)的中心配置、部署和管理。一種普遍集成的新方式應(yīng)用諸如SOA、EAI、B2B和Web服務(wù)之類的技術(shù)的通常目標(biāo)主要是創(chuàng)建一個集成架構(gòu),且能夠深入并且跨越整個擴(kuò)展企業(yè)。對于一個集成基礎(chǔ)設(shè)施到達(dá)到這種普遍性,它必須具有下列各項特性:
- 它必須能夠適應(yīng)多種集成情形項目的通常目的需要,不管是大型的還是小型的。適應(yīng)性包括提供一個能夠經(jīng)受協(xié)議、接口技術(shù)、甚至流程模型的變化趨勢的持久架構(gòu)。
- 它必須以一種單一和統(tǒng)一的方式,以及一個通用的基礎(chǔ)設(shè)施來連接擴(kuò)越擴(kuò)展企業(yè)的各種應(yīng)用。
- 它必須能夠擴(kuò)展超出單一公司IT中心的邊界。并且自動化伙伴關(guān)系,比如在B2B 和供應(yīng)鏈的情況下。
- 它必須具有設(shè)計的簡單性和較低的進(jìn)入門坎,使得日常的IT專業(yè)人員也能夠成為自我修練的集成架構(gòu)師。
- 它必須提供一個跨越普遍集成的 SOA,它能使集成架構(gòu)師能夠?qū)镜膽?yīng)用資產(chǎn)和自動化業(yè)務(wù)流程有一個廣泛的、抽象的視圖。
- 它需要有能夠反應(yīng)和符合不斷變更的業(yè)務(wù)需求和競爭的壓力需要的靈活性和能力。
在ESB中,應(yīng)用和事件驅(qū)動服務(wù)以一種松散耦合的方式緊密地聯(lián)系在SOA中。這使得它們能夠彼此獨(dú)立運(yùn)行,并且仍然能夠提供廣泛的業(yè)務(wù)功能價值。
ESB架構(gòu)解決了這些需要,并且正在被各種通用的集成項目所采用。它也能夠在企業(yè)應(yīng)用層面普遍地伸展,不管是物理位置還是技術(shù)平臺。任何應(yīng)用都可以通過大量的連接選擇插入到一個ESB網(wǎng)絡(luò)中,并且可以立即參與到與那些通過總線暴露為共享服務(wù)的應(yīng)用之間的數(shù)據(jù)共享之中。這是
ESB 為什么經(jīng)常被稱為集成網(wǎng)絡(luò)或集成構(gòu)造的緣故。
簡單一點(diǎn),下面兩種構(gòu)架的方式,第一種,雜亂無章,第二種,非常清晰,第二種用的就是ESB的方式。
第二個概念 BPM服務(wù)流程管理
業(yè)務(wù)流程管理系統(tǒng)(Business Process Management簡稱BPM)。BPM的定義分為合作戰(zhàn)略部分與軟件部分。其注重點(diǎn)是通過建模、自動化、管理和優(yōu)化任意一種業(yè)務(wù)流程,來管理公司業(yè)務(wù)流程的效率和效果。
而SOA中的服務(wù)也是需要流程的,二者之間是需要融合的。
沒有SOA,BPM一樣會出現(xiàn)并得到實現(xiàn),但是,在SOA將更多標(biāo)準(zhǔn)和系統(tǒng)整合成為可能的基礎(chǔ)上,通過SOA而在整體范圍內(nèi)實現(xiàn)BPM將會得到最大程度的簡化。就我聽到的最為形象的一個比喻則是,在脫離SOA協(xié)助下的BPM如同一個將一只手捆綁在背上的人努力想要去達(dá)到的目標(biāo)!
而目前面臨的主要的問題是,當(dāng)大家都去支持SOA的時候,BPM如何去實現(xiàn),或者如何去整合原有的BMP。
第五代呼叫中心之SOA(三)
第五代呼叫中心之SOA(四)
第五代呼叫中心之SOA (五)
第五代呼叫中心之SOA(六)
第五代呼叫中心之SOA(七)
第五代呼叫中心之SOA(八)
第五代呼叫中心之SOA(九)
CTI論壇編輯
相關(guān)閱讀: