SOA的應(yīng)運(yùn)而生
1996年,Gartner提出了SOA概念。Gartner還曾提出兩個(gè)很著名的概念:
其一,ERP(Enterprise ResourcePlanning),企業(yè)資源計(jì)劃。以企業(yè)資源的角度來組織企業(yè)的人、財(cái)、物、信息。此概念產(chǎn)生于大生產(chǎn)時(shí)代MRP之后,號(hào)召把企業(yè)的上下游也納入到企業(yè)通盤戰(zhàn)略考慮當(dāng)中。因?yàn)樯鐣?huì)已經(jīng)變成了產(chǎn)業(yè)鏈,從原材料到生產(chǎn)到物流到銷售到售后服務(wù),每個(gè)環(huán)節(jié)都影響生產(chǎn)企業(yè)。生產(chǎn)已經(jīng)變的不是第一重要了,供不應(yīng)求時(shí)代已經(jīng)結(jié)束。進(jìn)入營(yíng)銷渠道的時(shí)代。
其二,CRM(Customer RelationshipManagement),客戶關(guān)系管理。以客戶服務(wù)的角度出發(fā)來重新組織企業(yè)的人、業(yè)務(wù)、流程、信息。此概念在ERP的基礎(chǔ)上,把眼光從供應(yīng)鏈上游和生產(chǎn)企業(yè)轉(zhuǎn)移到了客戶終端。生產(chǎn)時(shí)代結(jié)束,營(yíng)銷推銷時(shí)代也快結(jié)束,不考慮客戶感受,不和客戶交互交流,一味生產(chǎn)和推銷,是不可能獲勝的。
從什么角度來組織資源和流程,頗像技術(shù)界的面向過程、面向?qū)ο蟆⒚嫦蚪M件,如今面向服務(wù)了。
在這樣的大背景下,Web2.0也是順應(yīng)這個(gè)概念產(chǎn)生的,口碑營(yíng)銷、精確分眾、圈子、即時(shí)通信、短信、博客,各種交互工具順應(yīng)時(shí)代而產(chǎn)生。
ERP和CRM都是應(yīng)用層面的產(chǎn)物。這樣的應(yīng)用,在信息化方面如何落地?于是,SOA概念隨即而出。
SOA架構(gòu)的真正成型
1996年的美國(guó),互聯(lián)網(wǎng)已經(jīng)很發(fā)達(dá)了。但是互聯(lián)網(wǎng)技術(shù)并沒有跟上。企業(yè)仍然封閉在自己的信息化世界。雖然有CORBA、COM+、RMI/EJB這些技術(shù)模型在支撐,但向互聯(lián)網(wǎng)公眾提供信息服務(wù),而非上下游合作伙伴提供信息服務(wù),CORBA、COM+、RIM/EJB仍然在穿透防火墻和通用數(shù)據(jù)格式傳輸上仍然存在問題,三個(gè)體系都有自己的通訊協(xié)議和數(shù)據(jù)傳輸協(xié)議,普通消費(fèi)者無法參與其中。
2000年,XML產(chǎn)生。隨即基于HTTP的SOAP、WSDL、UDDI產(chǎn)生,WebService作為一個(gè)基于互聯(lián)網(wǎng)通用技術(shù)基礎(chǔ)上發(fā)展的數(shù)據(jù)通訊協(xié)議和數(shù)據(jù)傳輸訪問協(xié)議體系產(chǎn)生了。
但是WebService只是定義了基于通用互聯(lián)網(wǎng)技術(shù)的數(shù)據(jù)通訊和數(shù)據(jù)傳輸訪問。就相當(dāng)于底層通路通了,但是基于上面的應(yīng)用呢,還是沒有一個(gè)規(guī)范。就相當(dāng)于路通了,但是在這條路上什么樣規(guī)格的車跑起來最順暢,還沒有這個(gè)規(guī)范——當(dāng)然你可以不要規(guī)范,自己造個(gè)自己的車,但以后在和擁有統(tǒng)一規(guī)格的車一起管理和運(yùn)行時(shí)交互時(shí)就有了問題。這個(gè)描述也為了回答相當(dāng)一部份人提出的那個(gè)問題:我們既然有了WebService,那干嘛還要SCA/SDO呢?SOA就是干這件事的。
但是,對(duì)于SOA,業(yè)界大佬太過于著急。就如同在.COM大潮中,每個(gè)企業(yè)都急于申明我們是一家.COM公司。于是,這個(gè)市場(chǎng)混淆了各種視聽。
做工作流的、做OA(Office Automation,辦公自動(dòng)化)的、做業(yè)務(wù)基礎(chǔ)平臺(tái)的、做組件的、做中間件的、做EAI(EntERPrise Application Integration,企業(yè)應(yīng)用集成)的,都號(hào)稱自己已經(jīng)是SOA了。
有的說SOA是為了業(yè)務(wù)敏捷,即可以靈活調(diào)整系統(tǒng)以適應(yīng)快速發(fā)生變化的業(yè)務(wù)競(jìng)爭(zhēng)?,F(xiàn)摘錄一段話:SOA通過把傳統(tǒng)應(yīng)用模塊分解成更小的構(gòu)件,并把這些構(gòu)件當(dāng)作可以重用的Web服務(wù),CIO們就能通過選擇和安排所需構(gòu)件,來生成最貼合的系統(tǒng)。這和當(dāng)年我們做WINDOWSDNA架構(gòu)是多么相似。但當(dāng)年SOA已經(jīng)提出,但并沒有人說WINDOWSDNA架構(gòu)是SOA架構(gòu)。有的說SOA是為了系統(tǒng)整合,有的說SOA是企業(yè)總線,有的說SOA是種業(yè)務(wù)分析設(shè)計(jì)思想,有的說SOA是技術(shù)架構(gòu)模型,有的說SOA有類似UML的作用,可以使業(yè)務(wù)設(shè)計(jì)人員和技術(shù)設(shè)計(jì)人員有共同語(yǔ)言,有人更說SOA就和Web2.0一樣,就是個(gè)概念。頗像當(dāng)年微軟急于把自己所有產(chǎn)品都打上.NET標(biāo)志一樣,最后弄的大家都搞不清楚什么是.NET了。直到2007年發(fā)布WPF、WCF、WF之后,.NET的技術(shù)走向才算基礎(chǔ)架構(gòu)定型。SOA和當(dāng)時(shí)的.NET非常相似。
如今,SOA規(guī)范才真正落地為SCA(Service ComponentArchITecture,服務(wù)組件架構(gòu))和SDO(Service DataObjects)。工作流規(guī)范業(yè)界已經(jīng)成型,WF也符合業(yè)界工作流規(guī)范,所以SOA中并沒有定義工作流規(guī)范。而對(duì)應(yīng)WPF的SOA顯然也不需要,畢竟SOA考慮的是業(yè)務(wù)接口服務(wù)層面,而非這個(gè)服務(wù)以什么樣的圖形界面規(guī)范來讓客戶存取,沒有必要。但中國(guó)普元補(bǔ)上了這一環(huán)節(jié)。中國(guó)普元也是OSOA頂級(jí)成員之一。光有接口沒有UI,還是需要程序員動(dòng)手寫這個(gè)UI,業(yè)務(wù)人員不可能沒有UI去做靈活改變業(yè)務(wù)功能和流程,即使有BPEL和DSL也不行。別給業(yè)務(wù)人員任何技術(shù)的東西,別想著DSL和UML就能讓業(yè)務(wù)人員用起來。所以,SCA和SDO已經(jīng)夠用了,SOA架構(gòu)真正成型。
但SCA和SDO是2007年8月才定型的----雖然2005年已經(jīng)有了草案。所以之前急于號(hào)稱是SOA產(chǎn)品的廠商不知作何感想。
IBM與SOA
我閱讀了SCA和SDO標(biāo)準(zhǔn),我也對(duì)比了過去我研究的CORBA,我也對(duì)比了微軟的WCF,架構(gòu)思想居然非常類似。
當(dāng)年DEC和IBM主導(dǎo)定義的CORBA,太復(fù)雜,SUN和微軟都做了定制化裁減,發(fā)展了自己的RMI/EJB和COM+。由于Webservice的出現(xiàn),微軟立即發(fā)展了基于Webservice的架構(gòu)體系:WCF。但是JAVA世界由于標(biāo)準(zhǔn)制定牽扯了大量廠商的利益,發(fā)展緩慢。而IBM也不愿意尷尬的在SUN的JAVA世界做個(gè)影子巨人。IBM一直盤算著如何做領(lǐng)袖。
于是SOA的真正架構(gòu),吸收了CORBA的教訓(xùn)(IBM由于當(dāng)年的CORBA沒有帶起業(yè)界標(biāo)準(zhǔn)很是懊惱,這次要卷土重來,更加學(xué)聰明了,誰說大象不能跳舞),也結(jié)合了Webservice,也借鑒了WCF(WCF也是在Webservice基礎(chǔ)上發(fā)展起來的架構(gòu),很多技術(shù)借用了Webservice的技術(shù),而非另起一套底層),終于產(chǎn)生。
而OSOA組織,最近才出現(xiàn)SUN的蹤影,而SCA和SDO標(biāo)準(zhǔn)中并沒有SUN提交的草案。
JAVA和.NET兩大平臺(tái),封閉而專有。而IBM需要的是一種業(yè)界標(biāo)準(zhǔn)制定者。SOA這回達(dá)成了IBM的意愿。無論是JAVA,還是.NET,甚至是PHP,只要符合SCA和SDO,就可以提供業(yè)界標(biāo)準(zhǔn)服務(wù)接口。
掙脫了語(yǔ)言和專屬平臺(tái)優(yōu)缺點(diǎn)的樊籠,IBM藍(lán)色巨人又成為自由的業(yè)界之神。
如何應(yīng)對(duì)軟件服務(wù)化、互聯(lián)網(wǎng)化?
我為什么這么關(guān)注、信任和理解SOA。其實(shí)和我自身所處的軟件行業(yè)非常有關(guān)系。
我是做企業(yè)管理軟件的。很早業(yè)界就都有共識(shí):軟件不能這樣賣了。我們把一套辦公系統(tǒng)賣給了運(yùn)營(yíng)商,人家用我們的軟件做服務(wù),收費(fèi)比我們賣軟件還多。所以,就連賣軟件老大微軟也在喊著軟件服務(wù)化(“S+S”,Software+Service,“軟件+服務(wù)”)。
過去是在企業(yè)內(nèi)部運(yùn)行的軟件,一個(gè)企業(yè)不外乎也就那么多人那么多數(shù)據(jù)。但是,一旦把軟件服務(wù)化、互聯(lián)網(wǎng)化了,就不抵有多少人訪問了。所以,我們?nèi)绾螒?yīng)對(duì)軟件服務(wù)化、互聯(lián)網(wǎng)化。
上億人訪問的Webservice,其架構(gòu)就不能象搭建企業(yè)內(nèi)部運(yùn)行的軟件架構(gòu),你看Google,都有幾十萬臺(tái)PC集群的計(jì)算資源才能支撐互聯(lián)網(wǎng)服務(wù)。我們過去的傳統(tǒng)的企業(yè)內(nèi)部機(jī)房磁盤陣列和計(jì)算機(jī)集群架構(gòu)不適合在公網(wǎng)上了,我們的數(shù)據(jù)庫(kù)也不適合服務(wù)幾億人了。所以,我特別關(guān)注我們?nèi)绾诬浖?wù)化,軟件服務(wù)化的架構(gòu)是什么樣的?
其實(shí),業(yè)界都在往一個(gè)方向跑,不管是Google、還是Yahoo、還是微軟、還是咱們的百度、QQ、盛大、阿里,大家都在往軟件服務(wù)化、互聯(lián)網(wǎng)化的方向跑——如果你僅僅是把眼光放到SaaS,放到和過去的ASP(Application ServiceProvider,應(yīng)用服務(wù)托管)去對(duì)比,眼界顯然需要更高一些。
未來SOA時(shí)代計(jì)算環(huán)境
應(yīng)用軟件運(yùn)行需要基礎(chǔ)設(shè)施。首先是基礎(chǔ)硬件設(shè)施,幾十萬臺(tái)PC的集群如何虛擬文件系統(tǒng)和計(jì)算資源分配,這就是云計(jì)算(CloudComputing)要解決的問題?,F(xiàn)在云計(jì)算是個(gè)熱門,Yahoo、Google、IBM、微軟都在研究和建設(shè)。但微軟慢了一步(微軟在互聯(lián)網(wǎng)計(jì)算上一直不敏感,總是用傳統(tǒng)軟件的方式看互聯(lián)網(wǎng)),所以WFS沒有出來(可能沒想通作為集群中的一個(gè)節(jié)點(diǎn)資源,如何加入集群,與集群同構(gòu),還能符合個(gè)人桌面計(jì)算管理)。
有了云計(jì)算硬件基礎(chǔ),還需要數(shù)據(jù)存取軟件基礎(chǔ)。有了分布式文件系統(tǒng),文件存取應(yīng)該沒什么問題,但關(guān)系數(shù)據(jù)的存取,這是現(xiàn)在所有數(shù)據(jù)庫(kù)產(chǎn)品都沒有解決的。Amazon看到了機(jī)會(huì),推出了S3服務(wù)。全球互聯(lián)網(wǎng)就是個(gè)超級(jí)計(jì)算機(jī),而S3就是這個(gè)計(jì)算機(jī)上的數(shù)據(jù)庫(kù)。
而所有的SOA應(yīng)用,都必須在一個(gè)容器中運(yùn)行,否則,有外界調(diào)用這些服務(wù),這些服務(wù)運(yùn)行中使用的資源誰來管理呢。很多人不明白容器是干什么用的,不明白中間件的來歷,也不明白為什么JAVA和.NET都要做容器。如果你做應(yīng)用,你自己還要負(fù)責(zé)那么多底層的分配與釋放與并發(fā),那么你做的既不專業(yè),也累,也不穩(wěn)定,不如交給系統(tǒng)商去管理。容器負(fù)責(zé)內(nèi)存、資源的分配、調(diào)度、回收,負(fù)責(zé)安全,負(fù)責(zé)事務(wù),負(fù)責(zé)并發(fā),負(fù)責(zé)池化。而這些SOA服務(wù),也必須能隨時(shí)升級(jí),就必須具備軟件熱插拔的功能。現(xiàn)在熱的OSGi研究就屬此類。
有了這些基礎(chǔ)設(shè)施,我們的應(yīng)用就必須SOA化,成為軟件服務(wù),讓所有人來使用。使用者一方可能是一個(gè)C#寫的客戶端,可能是一個(gè)PHP網(wǎng)站,可能是一個(gè)JAVA網(wǎng)站,也可能是一個(gè)FLASH。
全球大大小小的公司提供了這么多Open API,如何調(diào)用。用各自的語(yǔ)言:JAVA?C#?PHP?Javascript?
我想會(huì)產(chǎn)生一種新的語(yǔ)言來組織這些Open API,而不是這么技術(shù)化的程序員使用的開發(fā)編碼語(yǔ)言。它,會(huì)是DSL,即DomainSpecificlanguage。它可能會(huì)高于Javascript,但和Javascript類似,但又低于JAVA、C#這些重型開發(fā)語(yǔ)言。但它肯定是動(dòng)態(tài)語(yǔ)言。這樣隨時(shí)改變流程,隨時(shí)改變應(yīng)用。這就是業(yè)務(wù)敏捷。這就是我預(yù)想中的未來SOA時(shí)代計(jì)算環(huán)境。
你還在用傳統(tǒng)的業(yè)務(wù)基礎(chǔ)平臺(tái)思路搭建企業(yè)管理軟件架構(gòu)嗎? 未來SOA時(shí)代,未來軟件服務(wù)化時(shí)代,你,準(zhǔn)備好了嗎?
后記
20%的企業(yè)在上第一代系統(tǒng),不需要SOA。但軟件產(chǎn)品提供商需要考慮SOA,以防未來的集成。但現(xiàn)在對(duì)于企業(yè)沒有需求,不會(huì)因?yàn)镾OA加分買單。
30%的企業(yè)在全部替掉第一代系統(tǒng),不需要SOA。但軟件產(chǎn)品提供商需要考慮SOA,以防未來的集成。但現(xiàn)在對(duì)于企業(yè)沒有需求,不會(huì)因?yàn)镾OA加分買單。
30%的企業(yè)在整合自己內(nèi)部的第二代系統(tǒng),可能需要SOA,但實(shí)質(zhì)上采用的少。但軟件產(chǎn)品提供商需要考慮SOA,以防未來的集成??蛻艨赡軙?huì)因?yàn)镾OA加分買單。
10%的企業(yè)在整合自己的上下游,需要SOA。
10%的企業(yè)開始為最終客戶提供信息交互服務(wù),如同我們看到的Google API一樣,需要SOA。
現(xiàn)在關(guān)注和編寫SOA時(shí)機(jī)正確嗎?正確,因?yàn)槟憧瓷厦娴谋壤?,?0%的企業(yè)有SOA需求。
但如果你面臨的客戶市場(chǎng)恰恰不是這50%,而是另外的50%,那么奉勸你繼續(xù)做好現(xiàn)在的產(chǎn)品,SOA還不需要。
聯(lián)系客服