產(chǎn)品之路的隨想(完整圖文版)_第1頁
產(chǎn)品之路的隨想(完整圖文版)_第2頁
產(chǎn)品之路的隨想(完整圖文版)_第3頁
產(chǎn)品之路的隨想(完整圖文版)_第4頁
產(chǎn)品之路的隨想(完整圖文版)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1/1產(chǎn)品之路的隨想(完整圖文版)產(chǎn)品之路的隨想98年從14.4k的modem撥號(hào)上網(wǎng),看到的是網(wǎng)易,郵箱,藍(lán)波BBS,以及痞子蔡的《第一次親密接觸》,這些讓我印象非常深刻。

當(dāng)時(shí)沒能想到web對(duì)我的生活和工作產(chǎn)生了這么大的影響。

99年開始接觸搜索引擎,有位老鳥的話讓我記憶猶新:

要把寫在手背上,天天能看見。

2000年開始接觸php,mysql,linux,apache,一個(gè)企業(yè)網(wǎng)站能賣5000元,那個(gè)時(shí)候是個(gè)產(chǎn)生泡沫的時(shí)代,對(duì)我們來說也是個(gè)幸福的時(shí)光。

在那個(gè)年代里,操作系統(tǒng)是windows98,linux還只是勇敢者的工具,廣大程序員還熱衷于鉆研pb、dephi、vb;Web上的開發(fā)感覺上還是玩具;仍舊津津樂道于ms的發(fā)家史,回味著ms和broland的激烈競爭,至于google,面孔總是一成不變,但它總能返回你檢索需要的東西,仿佛是從遙遠(yuǎn)的地方傳來的天籟之音,一切很神秘。

如果把基于web開發(fā)看作一段歷史,我和web也逶迤拍拖了10年。

如果把Java出生名門的語言叫做大家閨秀,那開源社區(qū)推出來的語言就可以稱呼為小家碧玉了。

大家閨秀和小家碧玉各有風(fēng)姿,在早期的開發(fā)中是各有千秋,一般來說企業(yè)應(yīng)用采取的是java/jsp/ejb等;互聯(lián)網(wǎng)應(yīng)用是php/mysql/apache/linux;大家井水不犯河水,各自在自己的領(lǐng)域中用著不同的開發(fā)語言。

不過隨著小家碧玉這幾年越發(fā)出落得玲瓏綽約,大家也爭相使用,象spring,hibernate,tomcat都是其中的佼佼者;開發(fā)模式也有了極大的改進(jìn),從早期model1演變成了隨后的model2,再到目前基于框架的快速開發(fā),乃至現(xiàn)在推崇平臺(tái)開發(fā);工具也從當(dāng)年的editplus/ultraedit到后來的jbuilder,直到現(xiàn)在的eclipse一統(tǒng)天下。

圖1model1模式圖2model2模式仿佛是一夜春風(fēng)來,千樹萬樹梨花開,在java誕生15年后,我們處在一個(gè)前所未有的面臨選擇的境地:

各種各樣的軟件工具,框架,平臺(tái)紛至沓來;銀彈/非銀彈爭論不休,開發(fā)方法論孰是孰非皆無定論,此時(shí)此刻只有windowsnet氣定神閑,整體解決方案,全套開發(fā)工具,所見即所得界面,開發(fā)就這么容易,可惜我選擇的是Java路線,結(jié)果在選型,搭配上花不少的時(shí)間,也走了不少的彎路。

一路走來,項(xiàng)目之中的苦與樂在內(nèi)心中醞釀發(fā)酵,如何抽象組件,如何提煉成平臺(tái),如何包裝產(chǎn)品,也漸漸有了一點(diǎn)感悟和體會(huì)。

作項(xiàng)目苦,作項(xiàng)目累,留給自己的只有滿身的疲憊;在上線的倒計(jì)時(shí)中,程序員們?cè)谄v不堪的編寫代碼調(diào)試bug,項(xiàng)目經(jīng)理們殫精竭慮計(jì)算如何上線,不同的部門之間相互扯皮推諉。

幾年下來,項(xiàng)目還是手工作坊方式,自己沒有什么長進(jìn)。

疲憊啊疲憊,不在項(xiàng)目中錘煉,就要在項(xiàng)目中頹廢。

如何跳出項(xiàng)目的怪圈呢?國內(nèi)的軟件公司大體可以分為3類:

1作項(xiàng)目;2做作平臺(tái)/產(chǎn)品,有的公司是兼而有之,以項(xiàng)目養(yǎng)產(chǎn)品;3、做運(yùn)營。

項(xiàng)目導(dǎo)向的公司要做好做強(qiáng)做長久,以下幾個(gè)步驟是不可缺少的,只是不同的階段深入的程度有所差異:

1、業(yè)務(wù)邏輯組件化;2、基礎(chǔ)代碼框架化;3、開箱即用平臺(tái)化1、組件化:

公司在項(xiàng)目中已經(jīng)沉淀了這么多年,已經(jīng)積累了很多可用的業(yè)務(wù)組件,包括報(bào)表展現(xiàn)、ExtJs圖形開發(fā),flex頁面設(shè)計(jì)工具,規(guī)則引擎,流程引擎等。

應(yīng)用這些組件,在項(xiàng)目實(shí)施中減少了開發(fā)時(shí)間,提高了工作效率。

但這些組件分布在不同的部門,大家各用各,甚至還有些敝帚自珍的想法;有的基礎(chǔ)組件是你有我有大家有,重復(fù)開發(fā)。

對(duì)于這些組件如何甄別和挑選,不浪費(fèi)本來就很珍貴的人力資源,則在部門之間應(yīng)該有個(gè)通盤考慮。

就算各個(gè)組件都匯聚了,如何互聯(lián)互通,以及在同一個(gè)項(xiàng)目內(nèi)發(fā)揮預(yù)期作用,這就考驗(yàn)組件的設(shè)計(jì)方式了。

我們的組件基本上都是圍繞數(shù)據(jù)/表來的,涉及一些增刪改查以及前端展現(xiàn),著重要考慮是事務(wù)以及組件之間的關(guān)聯(lián),因?yàn)槲覀兊慕M件是需要被上層更大的組件,或者模塊所調(diào)用,如果組件對(duì)外暴露的是api接口,就不能假設(shè)上層應(yīng)用對(duì)組件之間的調(diào)用邏輯順序。

如何設(shè)計(jì)一個(gè)比較通用的組件?有些地方可能需要注意:

1、事務(wù)的調(diào)用,組件內(nèi)部不能發(fā)起事務(wù)的開始,這個(gè)權(quán)利交給了用戶,用戶或在client顯示申明,或是在spring內(nèi)部聲明。

2、組件可能要使用充血模式而不是貧血模式,即在組件內(nèi)部中維護(hù)自身的數(shù)據(jù)和狀態(tài),并同上層的業(yè)務(wù)系統(tǒng)的數(shù)據(jù)同時(shí)提交或者同步回滾。

3、組件內(nèi)部的各個(gè)類需要自身來維系,比如工廠模式,多例單例,而不能依靠AOP的能力,否則每集成一個(gè)組件,都尾大不掉的帶一個(gè)spring,彼此之間有影響,項(xiàng)目內(nèi)部可以使用spring,但在組件級(jí)別,類與類的關(guān)系得在組件內(nèi)部考慮。

4、組件要支持多線程環(huán)境,要不給方法加入同步,要不給屬性加入threadlocal支持5、組件之間如果都有對(duì)數(shù)據(jù)的持久化處理,建議給表加上鎖的方式。

比如加上樂觀鎖,雖然有時(shí)候用戶提交后會(huì)彈出一個(gè)窗口提示重新刷新數(shù)據(jù),但總比數(shù)據(jù)不一致的后果要好。

2、框架化:

有了這么多的組件,如何把這些組件組裝起來,形成有生命力的總體框架呢?組件之間的相互調(diào)用如何處理?組件之間的數(shù)據(jù)交互如何定義?彼此的事務(wù)如何傳遞?在開源社區(qū)提供了一種不錯(cuò)的搭建項(xiàng)目框架的方法:

struts+spring+hibernate。

當(dāng)然也有不少其他的方式,不過總體為前端采取mvc模式展現(xiàn),中間邏輯采取spring的bean裝配方式,以及事務(wù)申明,后臺(tái)采取hibernate/ibatis/jdbc作為持久層,加上其他一些輔助支撐組件,組成了service+dao+orm的方式,前后臺(tái)通過POJO傳遞數(shù)據(jù)(現(xiàn)在也與時(shí)俱進(jìn)了,有用xml和json方式傳遞數(shù)據(jù)的)。

Serivce采取的是貧血模式,把組件提供的功能當(dāng)作dao的功能來使用,所以在組件這層面就得考慮組件自身的數(shù)據(jù)如何與上層業(yè)務(wù)數(shù)據(jù)的集成,當(dāng)只有組件是充血模型方式,才能保證上層業(yè)務(wù)數(shù)據(jù)的提交一致性;否則自身組件不維護(hù)信息狀態(tài),全部持久化到表中,在事務(wù)回滾的時(shí)刻,就不能保證組件的信息數(shù)據(jù)也能同步回滾。

圖3傳統(tǒng)項(xiàng)目構(gòu)架方式對(duì)于多人協(xié)同軟件,比如大型的OA系統(tǒng),BOSS系統(tǒng),有很多業(yè)務(wù)邏輯是需要多人協(xié)同的,前后關(guān)聯(lián)的,并還有些條件分支和判斷。

當(dāng)然可以在邏輯中使用硬編碼的方式,但做成組件,整個(gè)框架會(huì)更加靈活,多人協(xié)同的邏輯抽象出來,演變成了流程引擎;把條件判斷抽象出來,演變成了規(guī)則引擎。

這樣在業(yè)務(wù)邏輯這塊再細(xì)分為業(yè)務(wù)邏輯塊和流程邏輯層,整個(gè)體系架構(gòu)演化成:

表示邏輯、流程邏輯、業(yè)務(wù)邏輯、數(shù)據(jù)管理邏輯四種基本邏輯。

表示邏輯還是先前的MVC方式;業(yè)務(wù)邏輯仍然是service+dao,數(shù)據(jù)管理邏輯依然由ORM負(fù)責(zé),或者直接使用JDBC,流程邏輯則有workkfowengine來處理。

通過這樣的分解,使其中任何一層邏輯的修改都不會(huì)影響其它三層,與傳統(tǒng)的三層結(jié)構(gòu)相比,將流程邏輯從業(yè)務(wù)邏輯中顯示的抽取出來,形成了相互分離的流程邏輯層和業(yè)務(wù)邏輯層。

從而最大限度的降低系統(tǒng)內(nèi)部的耦合性,提高系統(tǒng)適應(yīng)變化的能力。

這就是所謂的基于工作流的系統(tǒng)架構(gòu)。

圖4基于工作流的軟件架構(gòu)再加上一些基礎(chǔ)設(shè)施,比如日志,異常體系,定時(shí)調(diào)度,遠(yuǎn)程調(diào)用的通用方法,這個(gè)框架的羽翼也逐漸豐滿,假以時(shí)日就能展翅高飛了。

有了組件和框架,其實(shí)施的層次還是很低,要編寫的代碼還是很多,在需求變化的時(shí)候,開發(fā)人員照樣叫苦不迭。

而且我們的框架還不靈活,無法應(yīng)付不同的項(xiàng)目需求。

那我們先看看要面對(duì)的是哪些項(xiàng)目需求,在摸清對(duì)方的要求和套路后,也許就能找到化解的招數(shù)。

WEB應(yīng)用從目前的角度來區(qū)分大體分為互聯(lián)網(wǎng)應(yīng)用,企業(yè)應(yīng)用,2者的涉眾和要求有很大的差別。

企業(yè)應(yīng)用:

包括電子商務(wù)系統(tǒng)、企業(yè)資源規(guī)劃、客戶關(guān)系管理、供應(yīng)鏈管理,辦公自動(dòng)化,數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)倉庫等;需要實(shí)現(xiàn)用戶交互界面,業(yè)務(wù)邏輯,外部系統(tǒng)的集成,數(shù)據(jù)庫;涵蓋到J2EE的各個(gè)方面,包括JSP/Servlet/Java/JMS/Transaction/WebService/XML/ESB/EJB等技術(shù)。

可以細(xì)分為小企業(yè)應(yīng)用和大中企業(yè)應(yīng)用1.小企業(yè)應(yīng)用:

主要表征是表不多(0~100張表),業(yè)務(wù)邏輯不復(fù)雜,用到的技術(shù)也就是頁面展現(xiàn)和數(shù)據(jù)庫的方面2.大中型企業(yè)應(yīng)用:

主要表征是表多(200張表以上),業(yè)務(wù)邏輯復(fù)雜,而且涉及到和遺留系統(tǒng)的集成,開發(fā)時(shí)間長,投入人日多,因?yàn)殚_發(fā)費(fèi)用高,當(dāng)然也是各軟件開發(fā)公司的必爭項(xiàng)目。

互聯(lián)網(wǎng)應(yīng)用:

包括應(yīng)用系統(tǒng):

Blog,wiki;網(wǎng)絡(luò)服務(wù):

在線存儲(chǔ),網(wǎng)絡(luò)磁盤,比較購物;傳統(tǒng)服務(wù):

Email,IM,個(gè)人主頁,新聞信息,門戶,論壇,支付網(wǎng)關(guān),商城;傳統(tǒng)行業(yè):

彩票,保險(xiǎn),電子客票,商旅定餐,訂票,定雜志,定花;技術(shù)上多半采用腳本語言,早期多半用php,現(xiàn)在也有部分應(yīng)用是在rails上實(shí)現(xiàn)。

數(shù)據(jù)庫基本采用mysql,架構(gòu)在linux上,用apache服務(wù)器。

1.普通互聯(lián)網(wǎng)應(yīng)用:

比如有javaeye,itpub,我經(jīng)常上去逛逛的。

它們屬于論壇逐漸發(fā)展起來的。

分別以java為主和以數(shù)據(jù)庫為主的社區(qū),分別是用Rails,php來設(shè)計(jì)的。

目前都從早期簡單的論壇發(fā)展成了社區(qū),集成了圈子,博客,招聘等應(yīng)用,并都有了各自的盈利模式。

2.大型互聯(lián)網(wǎng)應(yīng)用:

典型的有sina,豆瓣網(wǎng),采取了很多技術(shù)來提高頁面訪問并發(fā)量,比如頁面靜態(tài)化,讀寫分離,分布式緩存系統(tǒng)。

但這種技術(shù)在企業(yè)應(yīng)用中用的很少,主要是企業(yè)用戶更加關(guān)心的是數(shù)據(jù)的正確性和一致性。

3.在線運(yùn)營類型:

在線運(yùn)營只是技術(shù)實(shí)現(xiàn)方式,還要看上面承載的業(yè)務(wù)。

Google是老大,什么都有,從搜索引擎到gmail、googledocs,都是在線應(yīng)用的典型應(yīng)用。

淘寶專注與電子商務(wù)和第3方支付;A,專營網(wǎng)上書店;則是最早提出云計(jì)算和軟件即服務(wù)(SaaS)的理念(1999年),國內(nèi)八百客(800APP-PaaS平臺(tái)),山寨了一把salesforce,目前在國內(nèi)也算占據(jù)了一個(gè)山頭。

SAAS盈利的一種模式就是:

用戶每個(gè)月需要支付類似租金的費(fèi)用來使用網(wǎng)站上的各種服務(wù),按次或者按時(shí)間均可。

在后續(xù)的章節(jié)會(huì)繼續(xù)討論在線應(yīng)用。

現(xiàn)在互聯(lián)網(wǎng)應(yīng)用和企業(yè)應(yīng)用有相互滲透的趨勢(shì),一些企業(yè)把業(yè)務(wù)系統(tǒng)的一部分搬到互聯(lián)網(wǎng)上(比如現(xiàn)在淘寶就把電子商務(wù)搬到互聯(lián)網(wǎng)并獲得了成功)。

3、平臺(tái)化平臺(tái)不是框架的簡單豐富,給骨架穿上衣服,它也終究是骨骼,沒有生命力,只有賦予框架以思想,賦予方法論,框架才有了自己的思想,才有血有肉,有了靈與肉的結(jié)合,框架才能躍升為平臺(tái),真正指導(dǎo)程序員去開發(fā)項(xiàng)目。

根據(jù)平時(shí)的接觸,能稱為平臺(tái)的包括有:

上海普元,上海動(dòng)量,廣州天翎,南京聯(lián)創(chuàng)(無線部的boss平臺(tái),其他事業(yè)部的不清楚)。

根據(jù)這些平臺(tái)的定位,大致可以分為2類:

上海動(dòng)量和廣州天翎面向互聯(lián)網(wǎng)的;上海普元和南京聯(lián)創(chuàng)作企業(yè)應(yīng)用的。

根據(jù)前面對(duì)2者的應(yīng)用分析,下面的表格能大致反映其差異性。

比較項(xiàng)企業(yè)應(yīng)用(大中型)互聯(lián)網(wǎng)應(yīng)用(普通)1行業(yè)領(lǐng)域區(qū)分行業(yè),各自領(lǐng)域業(yè)務(wù)背景不一樣,并形成了一定的門檻。

跨行業(yè),按應(yīng)用類型區(qū)分,比如blog,wiki,個(gè)人門店等。

2業(yè)務(wù)邏輯業(yè)務(wù)邏輯復(fù)雜,涉及大量的數(shù)據(jù)和多人協(xié)同處理。

業(yè)務(wù)邏輯簡單,大部分是通過頁面進(jìn)行數(shù)據(jù)的增刪改查。

3數(shù)據(jù)一致性強(qiáng)調(diào)數(shù)據(jù)一致性,需要通過事務(wù),交易中間件,數(shù)據(jù)庫鎖,java同步機(jī)制來保證數(shù)據(jù)的一致性。

要求有事務(wù),但和高并發(fā)博弈中,讓位給高并發(fā)。

4數(shù)據(jù)復(fù)雜度數(shù)據(jù)復(fù)雜,有大量的表,表之間有復(fù)雜的牽涉關(guān)系,在某些行業(yè)維護(hù)這些表之間的關(guān)系和數(shù)據(jù)就需要一個(gè)團(tuán)隊(duì)。

數(shù)據(jù)不復(fù)雜,表之間的關(guān)聯(lián)不多5并發(fā)量不是特別大,比如通用應(yīng)用為100~200并發(fā),重度并發(fā)500的系統(tǒng)就能滿足國內(nèi)大部分的系統(tǒng)要求。

強(qiáng)調(diào)高并發(fā),支持用戶數(shù)量多,采取特殊的技術(shù),比如web反向代理,memcache,表的垂直分隔、水平分隔,強(qiáng)調(diào)高速讀低速寫。

支持百萬用戶。

6系統(tǒng)集成關(guān)鍵系統(tǒng)需要和很多外部系統(tǒng)集成,集成的方式可能采取esb,jms,webservice,socket。

弱。

極少需要和其他系統(tǒng)集成7用戶交互強(qiáng)調(diào)界面交互和數(shù)據(jù)表達(dá),需要支持多種數(shù)據(jù)展現(xiàn)方式,需要眾多數(shù)據(jù)在頁面上的展現(xiàn),傳輸弱。

交互不多,表現(xiàn)方式簡單,更多的是數(shù)據(jù)的增刪改查。

8開發(fā)過程強(qiáng)調(diào)軟件過程,講究行業(yè)經(jīng)驗(yàn),需要撰寫大量的文檔和多人協(xié)同,需要版本控制和問題跟蹤。

強(qiáng)調(diào)敏捷,快速開發(fā),基本不需要版本控制。

總體來說軟件開發(fā)的方法論有2種敏捷方式:

針對(duì)互聯(lián)網(wǎng)應(yīng)用,強(qiáng)調(diào)快速開發(fā),簡略一些中間過程,推崇界面(界面原型)即需求。

提供界面生成工具,通過代碼自動(dòng)生成工具生成部分邏輯,并提供一些管理工具和管理途徑。

在項(xiàng)目中使用到了動(dòng)量(ODE),也接觸了天翎(teamlink,myApps),感受了到互聯(lián)網(wǎng)應(yīng)用對(duì)傳統(tǒng)開發(fā)模式的沖擊,對(duì)傳統(tǒng)開發(fā)模式有了觸動(dòng)。

動(dòng)量和天翎都強(qiáng)調(diào)界面即需求,簡化了傳統(tǒng)軟件工程中的概要設(shè)計(jì)和詳細(xì)設(shè)計(jì),并通過一部分的代碼自動(dòng)生成簡化了編碼工作,但2者的實(shí)現(xiàn)方式有所不同。

動(dòng)量平臺(tái)提供了基于web的在線編輯頁面的方式,并把界面元素生成表結(jié)構(gòu),因?yàn)樵趧?dòng)量內(nèi)部有專門的表來維護(hù)用戶設(shè)計(jì)的表結(jié)構(gòu)和關(guān)系,所以我們?cè)赑D設(shè)計(jì)的表結(jié)構(gòu)是不能直接導(dǎo)入動(dòng)量平臺(tái),只能通過ODE的界面來生成,并生成標(biāo)準(zhǔn)的增刪改查代碼,如果有自己特定的邏輯,則需要在ODE中的規(guī)則進(jìn)行擴(kuò)展,編寫一些java代碼片斷,并提供了一些后臺(tái)組件和方法和數(shù)據(jù)庫進(jìn)行交互,部署后由ODE進(jìn)行編譯生成java類代碼。

因?yàn)樯傻拇a是普通的java代碼,并和前臺(tái)頁面有直接的調(diào)用關(guān)系,所以不支持后臺(tái)邏輯的分布式部署,在大并發(fā)量的情況下只能通過借助應(yīng)用服務(wù)器的集群能力。

動(dòng)量平臺(tái)架構(gòu)在很多開源的工具包上,并提供一些企業(yè)應(yīng)用的關(guān)鍵能力,包括事務(wù),包括流程引擎,定時(shí)調(diào)度,報(bào)表展現(xiàn)等,開發(fā)人員只要關(guān)注界面原型和業(yè)務(wù)邏輯,提高了生產(chǎn)力。

天翎同樣提供了界面設(shè)計(jì)的工具,而且他的擴(kuò)展是通過所謂宏語言(從技術(shù)調(diào)度分析可能是設(shè)計(jì)了一些JS的Lib庫),在界面設(shè)計(jì)方面支持拖拽等更靈活方式,表單設(shè)計(jì)是天翎平臺(tái)的強(qiáng)項(xiàng),并提供了基于手機(jī)的任務(wù)處理途徑。

通過天翎平臺(tái)創(chuàng)建表單,最終是生成的jsp,所以不存在ODE有個(gè)打包編譯部署的過程,發(fā)布后刷新既可用,通過這種方式生成的頁面,大部分的邏輯寫在頁面中,同樣不能做到后臺(tái)邏輯分布式部署,也只能通過應(yīng)用服務(wù)器的集群能力來實(shí)現(xiàn)大并發(fā)的訪問。

在大項(xiàng)目不容易接,小項(xiàng)目利潤薄的情況下,通過敏捷平臺(tái)能快速開發(fā)一批類似的項(xiàng)目,在廣種薄收的季節(jié)里,也能聚沙成塔,集腋成裘。

另外還有一種方式就是把各種小企業(yè)應(yīng)用抽象出來搭建在云應(yīng)用(在線支撐運(yùn)營)上,通過某種租賃方式與眾多小企業(yè)用戶達(dá)成使用協(xié)議,也就是Saas的理念,在后面的章節(jié)會(huì)詳細(xì)討論。

重型方法:

針對(duì)企業(yè)應(yīng)用,以CMM/CMMI為代表,強(qiáng)調(diào)過程受控和里程碑,并通過很多文檔和流程來支持。

典型的如RUP,4大階段,9條流程,以及大量的文檔模板和在里程碑需要出具的物件,通過這些保證軟件過程的可靠有序的執(zhí)行。

聯(lián)創(chuàng)移動(dòng)事業(yè)部的開發(fā)方式代表了這種模式,提倡了表驅(qū)動(dòng)的設(shè)計(jì)理念和前后端分離的開發(fā)體系,前端是使用tapestry實(shí)現(xiàn)的web展現(xiàn),中間層應(yīng)用邏輯搭建在tuxedo服務(wù)器之上,并能多臺(tái)部署,后端是Oracle。

Web只能通過調(diào)用中間層的服務(wù)訪問數(shù)據(jù),不能直接訪問數(shù)據(jù)庫,這樣有幾個(gè)特點(diǎn):

1.中間服務(wù)器層可均衡訪問,并通過tuxedo把并發(fā)訪問削峰填谷,提高系統(tǒng)的健壯性。

2.前端開發(fā)和后端開發(fā)分離,開發(fā)速度快,行業(yè)經(jīng)驗(yàn)?zāi)苡行Ч袒?/p>

在特定的行業(yè)應(yīng)用中,后臺(tái)服務(wù)大體是穩(wěn)定的,變化的只是前端展現(xiàn),通過后端服務(wù)的編排/編制(提供了可視化工具),能快速提供前端展現(xiàn)所需要的服務(wù),前端人員不需要了解后端邏輯,只需要知道是哪個(gè)Api,僅此而已。

如果不是這種開發(fā)模式,每個(gè)省的boss系統(tǒng)不可能在3~6個(gè)月內(nèi)實(shí)現(xiàn)(最近2年上的是ngboss,整個(gè)后臺(tái)都發(fā)生了變化,云南boss作為試點(diǎn),前后用了將近1年)3.數(shù)據(jù)的安全,所有的數(shù)據(jù)訪問,被限定在有限的通道中,非后臺(tái)人員無法知道后端表結(jié)構(gòu)和數(shù)據(jù)。

另外一個(gè)平臺(tái)是EOS。

普元eos從5.0我認(rèn)為才開始成熟,6.0之后已經(jīng)更上了一層樓,而且在6.0加入了SCA的體系架構(gòu),號(hào)稱是銀彈工具。

拋開華麗的包裝不說,以程序員的眼光來看,eos提供了一個(gè)開發(fā)框架和管理平臺(tái):

開發(fā)平臺(tái)包括了一個(gè)web框架,一個(gè)流程引擎,并通過可視化工具(涵蓋web開發(fā),流程建模,數(shù)據(jù)庫表設(shè)計(jì)),包括了表設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼,測試,上線運(yùn)營,監(jiān)控管理等軟件過程等一系列關(guān)鍵活動(dòng),在國內(nèi)算得上比較成熟的軟件平臺(tái)工具。

EOS也是表驅(qū)動(dòng)的設(shè)計(jì)理念,但界面和業(yè)務(wù)邏輯沒有分離(一般來說,基于SCA能支持后臺(tái)邏輯的分離部署,但在公司的手機(jī)支付平臺(tái)項(xiàng)目中,沒有體現(xiàn)這個(gè)特性)。

從軟件開發(fā)的角度來說,使用了EOS,多了一套IDE和流程引擎以及類似struts的web開發(fā)工具,還有一些底層的工具包。

當(dāng)年eos6.0端著通用平臺(tái)的架子來到聯(lián)創(chuàng)移動(dòng)事業(yè)部,打算能替換就有系統(tǒng),但據(jù)說沒有成功。

Eos的web如果調(diào)用后端的tuxedo服務(wù),自身就退化成了一個(gè)web開發(fā)工具;eos工作流引擎是本身在管理數(shù)據(jù)庫的流程狀態(tài),并和頁面的構(gòu)件有著千絲萬縷的調(diào)用關(guān)系,要符合聯(lián)創(chuàng)現(xiàn)有的體系,除非重構(gòu)。

就像2位都有思想的人,結(jié)合在一起就是有些別扭,要不就要聯(lián)創(chuàng)移動(dòng)事業(yè)部遷就eos,要不就是eos重構(gòu)。

(eos在聯(lián)創(chuàng)的其他事業(yè)部有應(yīng)用,比如聯(lián)通)。

另外有個(gè)例子,amdocschina(朗新),承接湖北電信boss時(shí)候,當(dāng)時(shí)沒有現(xiàn)有的平臺(tái),采用的框架是struts1+spring1.+hibernate2/jdbc,工作流引擎是用存儲(chǔ)過程寫的,從05年到07年,人最多的時(shí)候達(dá)到了200多人,開發(fā)和上線時(shí)間比較長。

根據(jù)對(duì)企業(yè)應(yīng)用和互聯(lián)網(wǎng)應(yīng)用的特點(diǎn)進(jìn)行分析,以及在理解和把握國內(nèi)業(yè)界先進(jìn)的平臺(tái)思想體系,我們開發(fā)部也提出了自有的業(yè)務(wù)基礎(chǔ)平臺(tái),業(yè)務(wù)基礎(chǔ)平臺(tái)包括業(yè)務(wù)開發(fā)工具和軟件開發(fā)框架,其中業(yè)務(wù)開發(fā)平臺(tái)提供了流程建模器,F(xiàn)lexUI的界面設(shè)計(jì)器,以及將來提供的規(guī)則設(shè)計(jì)器;軟件開發(fā)框架分為5層,自下而上分別是數(shù)據(jù)訪問層,基礎(chǔ)業(yè)務(wù)層,領(lǐng)域業(yè)務(wù)層,編程接口層,界面交互層。

圖5業(yè)務(wù)基礎(chǔ)平臺(tái)總體框架開發(fā)方法論和聯(lián)創(chuàng)的大體類似,并借鑒了動(dòng)量的Web界面快速生成的思想以及管理模塊的概念,提出了我們特有的方法論。

開發(fā)團(tuán)隊(duì)分為前后端,前端web開發(fā)人員調(diào)用后端服務(wù)設(shè)計(jì)人員編寫的開放業(yè)務(wù)編程接口(OBPI);在需要多臺(tái)后臺(tái)邏輯服務(wù)器的情況下,采取通用遠(yuǎn)程調(diào)用接口(URCI)的方式部署。

前端界面采取FlexUI快速設(shè)計(jì)界面;后端邏輯采取表驅(qū)動(dòng)方式設(shè)計(jì),并依托工具生成基本的增刪改查代碼,前端展現(xiàn)和后臺(tái)通過接口(OBPI)的方式進(jìn)行綁定,這種方式即有利于行業(yè)軟件的自身積累,也能在互聯(lián)網(wǎng)應(yīng)用中快速開發(fā)。

該部分內(nèi)容在《拓維業(yè)務(wù)基礎(chǔ)平臺(tái)可行性研究報(bào)告》中有詳細(xì)說明,這里不詳細(xì)闡述。

圖6基于軟件開發(fā)框架的開發(fā)步驟由此可見,要在國內(nèi)的軟件行業(yè)站穩(wěn)腳跟,要有自己所占據(jù)的行業(yè)領(lǐng)域,以及對(duì)行業(yè)領(lǐng)域的獨(dú)有了解。

正如魯迅所倡導(dǎo),不但要拿來,還要改造,打造出符合公司需要、公司理念的平臺(tái)。

自此才深刻了解為什么這幾年在不斷的引進(jìn)上海普元,上海動(dòng)量,廣州天翎,以及到上海博科去學(xué)習(xí)。

師夷長技以制夷,通過走出去,請(qǐng)進(jìn)來的方式,學(xué)習(xí)業(yè)界先進(jìn)的思想和理念,并加以山寨、改進(jìn)、超越,符合公司獨(dú)有文化,特定領(lǐng)域的需求,才能立于不敗之地,否則我們就只能在項(xiàng)目的泥濘中掙扎彷徨。

與其在項(xiàng)目泥潭中怨天尤人、放逐自我還是奮發(fā)雄起、積極進(jìn)取,在學(xué)習(xí)借鑒把握業(yè)界先進(jìn)平臺(tái)的同時(shí)打造自有的公司級(jí)的平臺(tái),則是我們拓維人對(duì)待軟件的一種態(tài)度和追求。

4、云應(yīng)用互聯(lián)網(wǎng)應(yīng)用和企業(yè)應(yīng)用雖然都屬于web應(yīng)用,但面向的涉眾不一致導(dǎo)致設(shè)計(jì)思想和開發(fā)模式有很大的區(qū)別。

就像我們?cè)诿枋龃笞匀坏默F(xiàn)象,宏觀層面使用廣義相對(duì)論,但在微觀層面使用哥本哈根的量子學(xué)說。

本來是井水不犯河水,大家都相安無事,但如果要解釋宇宙起源的那一刻,是用相對(duì)論還是用量子學(xué)說?當(dāng)企業(yè)應(yīng)用發(fā)布到互聯(lián)網(wǎng),為廣大的普通涉眾提供服務(wù),我們是采用什么方法論呢?再往前推進(jìn)一步,如果推廣公司的大規(guī)模的在線應(yīng)用,我們打算如何構(gòu)造呢?我們的組件,我們的框架,我們的平臺(tái)能承擔(dān)這個(gè)重?fù)?dān)嗎?需要在線運(yùn)營平臺(tái)嗎其實(shí)在線運(yùn)營平臺(tái)的應(yīng)用和我們息息相關(guān):

google,能在浩如煙海的資料中能快速定位我需要的內(nèi)容;QQ,能讓我找到老婆;淘寶,能買到物美價(jià)廉的物品;上amazon買幾本原裝進(jìn)口的書;上/googlecode下載開源的軟件。

。

我們的些類似的在線運(yùn)營公司,比如百度,騰訊,淘寶,都在各自的領(lǐng)域中稱霸一方。

騰訊QQ在前不久已經(jīng)超過了1億的在線用戶數(shù),這是十分驚人的數(shù)量,這么大的用戶數(shù)保證了騰訊山寨后就能把對(duì)手遠(yuǎn)遠(yuǎn)的拋在后面。

比如QQ農(nóng)場,1個(gè)月有5千萬的進(jìn)賬。

工作和生活已經(jīng)離不開這些平臺(tái)應(yīng)用,國內(nèi)一在線運(yùn)營平臺(tái)能帶來變化如果觀察這些在線應(yīng)用,愿意支付費(fèi)用的大概有3種類型的人,商家,玩家,買家。

企業(yè)用戶愿意購買競價(jià)排序的關(guān)鍵字;玩家愿意買狗糧買化肥;買家愿意通過支付寶購買物品。

有了眾多網(wǎng)友的鼎力支持,這些企業(yè)也賺的盆滿缽滿。

潮漲潮落,花開花謝,Borland消失了;sun/weblogic投靠了oracle;novell不做netware,轉(zhuǎn)而支撐linux了;IBM不純賣軟件了,推崇服務(wù)了;微軟不單單只賣office,windows了,也開始推bing,Azure等在線應(yīng)用了;google的界面還是一如既往的這樣清純淡雅。

。

紛紛擾擾,當(dāng)年輝煌的產(chǎn)品成了明日黃花,傳奇的故事已經(jīng)煙消云散,但能從中把握一個(gè)這樣的訊息,輝煌了一時(shí),不會(huì)長久一世,只有貼近廣大用戶的需要,即用戶所想,提供用戶所需,才能永葆青春。

如何貼近用戶?如何把應(yīng)用推送到用戶手上?通過互聯(lián)網(wǎng),把應(yīng)用搭建在互聯(lián)網(wǎng)上。

衣不如新,人不如故,人總是有惰性的,用戶使用習(xí)慣后自然就產(chǎn)生一種黏性效應(yīng),比如我從來只上google不上baidu;只在QQ農(nóng)場偷菜,從不去開心農(nóng)場。

當(dāng)然了,我從不購買狗糧,QQ農(nóng)場中的5千萬的收入收入中沒有我的貢獻(xiàn)。

如何設(shè)計(jì)在線運(yùn)營平臺(tái)微軟認(rèn)為,未來的互聯(lián)網(wǎng)世界將會(huì)是云+端的組合,在這個(gè)以云為中心的世界里,用戶可以便捷地使用各種終端設(shè)備訪問云中的數(shù)據(jù)和應(yīng)用,這些設(shè)備可以是電腦和手機(jī),甚至是電視等大家熟悉的各種電子產(chǎn)品,同時(shí)用戶在使用各種設(shè)備訪問云中的服務(wù)時(shí),得到的是相同的無縫體驗(yàn)。

云計(jì)算這種全新的IT即服務(wù)模式可以提供無可比擬的經(jīng)濟(jì)效益。

而從技術(shù)因素來看,主要得益于多種關(guān)鍵技術(shù)的驅(qū)動(dòng),如互聯(lián)網(wǎng)技術(shù)、廉價(jià)硬件的普及和提升、分布式計(jì)算技術(shù)的進(jìn)步、技術(shù)標(biāo)準(zhǔn)的統(tǒng)一、虛擬化技術(shù)等等。

淘寶在08年就達(dá)到在線商品數(shù)量突破一億,日均成交額超過兩億元人民幣,注冊(cè)用戶八千萬的大型電子商務(wù)網(wǎng)站,淘寶用的是JBoss,框架是iBATIS,緩存服務(wù)器是自己開發(fā)的,基本遵循SNA架構(gòu),水平擴(kuò)展,數(shù)據(jù)庫是Oracle,阿里集團(tuán)的DBA幾乎是國內(nèi)最強(qiáng)悍的,整個(gè)淘寶系統(tǒng)是建立在2萬臺(tái)服務(wù)器之上(具體數(shù)目應(yīng)該有變化)。

目前系統(tǒng)已經(jīng)達(dá)到了當(dāng)前體系架構(gòu)的極限,據(jù)說淘寶的系統(tǒng)架構(gòu)正在重構(gòu),計(jì)劃用兩到三年時(shí)間重寫,目標(biāo)有兩個(gè):

1、水平擴(kuò)展已經(jīng)不滿足需求了,還需要水平加垂直擴(kuò)展2、開放API,讓店家可以把外部網(wǎng)站資源集成到淘寶,不必直接在淘寶開店。

如果是這樣的話,淘寶不單單想把自己做成saas,占據(jù)國內(nèi)電子商務(wù)的nunberone,還要打造成PAAS,為各種應(yīng)用提供支撐。

雖然我很喜歡老婆在淘寶上給我買的衣服,但我對(duì)淘寶的下一代系統(tǒng)架構(gòu)更感興趣。

如果說淘寶的下一代架構(gòu)體系的秘密裝在一個(gè)盒子里,當(dāng)打開這個(gè)盒子,我們能看到什么呢?――我猜是大象;)大象是《hadoopTheDefinitiveGuide》這本書的封面照片,同時(shí)也意味著我們將來構(gòu)造的在線運(yùn)營系統(tǒng)是搭建在大象之上,莊重,沉穩(wěn),健壯,魯棒。

從網(wǎng)上有限

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論