文/李凌
從構(gòu)筑大系統(tǒng),到編寫小應(yīng)用
文/李凌
編者按:
教育信息化誕生的歷史并不長,成長的過程中有很多新鮮的理念,回過頭來看,有的是順應(yīng)潮流的,有的又是理想化的。本文觀點來自一位從事教育信息化實踐多年的業(yè)內(nèi)人士,他認(rèn)為,大系統(tǒng)的理念并不符合 IT 界的實際情況,應(yīng)用系統(tǒng)中小型化將成為趨勢。關(guān)于本文內(nèi)容,歡迎您與我們探討,您可發(fā)郵件至 media@cernet.com。

李凌北京理工大學(xué)網(wǎng)絡(luò)信息技術(shù)中心副主任
我剛到學(xué)校網(wǎng)絡(luò)服務(wù)中心工作的時候,對于學(xué)校信息化應(yīng)該做什么,以及應(yīng)該如何做,并沒有太多的概念。記得有一次去參加高校信息化學(xué)會的會議,聽來自某知名學(xué)府的老師介紹 URP,瞬間覺得那真是一個很高大上又極其復(fù)雜的概念。想想我們信息化部門只有區(qū)區(qū)幾個人,遠遠無法實現(xiàn)這一構(gòu)想。
后來在學(xué)校里和同事聊起來,有同事說,你們網(wǎng)絡(luò)中心應(yīng)該做一個大系統(tǒng),我們各個單位用。對于此,有些我非常認(rèn)同,譬如學(xué)校信息化的確應(yīng)該一盤棋,不能亂來。但一個包羅萬象的大系統(tǒng),要投入很多時間很多經(jīng)費,也許光需求調(diào)研就需要幾個月,研發(fā)起來也許要幾年,然后再投入使用……不敢想象。
當(dāng)時,開發(fā)一個大系統(tǒng)的思路在高校信息化界時常被提起。也有企業(yè)的宣傳朝著這個方向努力。于是也就真的有廠商找上門,推銷一體化學(xué)生管理系統(tǒng)等產(chǎn)品,把教務(wù)、學(xué)工、宿管等各個部門的需求,凝聚在一個龐大的軟件里。他們認(rèn)為這樣的系統(tǒng)最大的優(yōu)勢,就是天生沒有數(shù)據(jù)孤島。面對這樣的說辭,還真說不定有人會很心動,做個大系統(tǒng)一下子把信息化推上一個臺階,那真的是大功一件,再加上沒有數(shù)據(jù)孤島,豈不是非常先進?
作為一個每周都要寫幾行代碼的程序員,對于這種大系統(tǒng)之類的說辭,我還是有一點天生的警惕的:
首先,軟件開發(fā)是一項非常復(fù)雜的工作,軟件項目從出現(xiàn)的第一天開始,其失敗率就遠高于其他行業(yè)。譬如,我們很少聽說蓋房子剛蓋好就塌了,但軟件到期做不出來以及上線第一天就崩潰可不是什么新鮮事。并且,一個軟件系統(tǒng)的復(fù)雜性,會隨著功能的增加而呈指數(shù)級增加,量變導(dǎo)致質(zhì)變,用來形容一個系統(tǒng)功能不斷增加和該系統(tǒng)的穩(wěn)定性不斷下降之間的關(guān)系,再合適不過了。
其次,大系統(tǒng)的工期無法控制。單一軟件項目的工期,通常應(yīng)該控制在六個月以內(nèi),如果工期過長,無論是承包商還是相關(guān)部門的業(yè)務(wù)人員可能會因為長時間沒有效果而陷入一種疲勞狀態(tài),同時軟件自身的需求也可能因為業(yè)務(wù)的變化而不斷發(fā)生變化,直接導(dǎo)致軟件的工期更長,進而陷入一種惡性循環(huán)。
再次,按照當(dāng)今高校信息化行業(yè)對軟件價格的普遍認(rèn)識,很多人都認(rèn)為一套軟件系統(tǒng)四五十萬元就已經(jīng)是很高的花費了。但四五十萬元如果扣掉相關(guān)稅款,扣除銷售成本,在如今也就相當(dāng)于一兩個普通程序員一年的工資,而他們掙的錢不吃不喝合起來在北京這樣的一線城市也就能買個廁所。這樣的投入,能找得到做出大系統(tǒng)的人嗎?
最后,即便是在 2010 年,人事、財務(wù)、教務(wù)、圖書館、卡務(wù)、網(wǎng)絡(luò)中心等各個部門就已經(jīng)建立了自己的管理信息系統(tǒng),做一個大系統(tǒng)是要把它們各個部門的系統(tǒng)都放棄然后合在一起,這些完全屬于不同管理領(lǐng)域的事情,真的有一個公司能都弄明白嗎?
在軟件工程領(lǐng)域,人們一直尋找著控制軟件復(fù)雜性的方法,而其中最經(jīng)典的一句話,就是 UNIX 所奉行的設(shè)計哲學(xué): K.I.S.S. = Keep It Simple, Stupid!
Unix 系統(tǒng),就是一個典型的簡單系統(tǒng),系統(tǒng)中的每一個命令行工具,都只完成一個單一的任務(wù),譬如 ls 就只能列目錄、wc 就是用來統(tǒng)計單詞個數(shù),若想知道一個目錄中有多少個文件,就需要用 ls | wc 這樣的組合了。
數(shù)字校園,作為一個涉及不同領(lǐng)域,既要支撐教學(xué)、管理,又要服務(wù)學(xué)習(xí)、生活的龐大 IT 設(shè)施,其必然由各種大大小小的組件構(gòu)成,但這些組件之間又必須建立聯(lián)系,否則就會形成數(shù)據(jù)孤島。在經(jīng)過長時間的調(diào)研、實踐和思考之后,我們心中數(shù)字校園的整體結(jié)構(gòu)和建設(shè)方式開始慢慢清晰,基本上可以用“大平臺、中系統(tǒng)、小應(yīng)用”來描述。
由于今天平臺、系統(tǒng)、應(yīng)用這些詞語有著廣泛的含義,因此有必要對其明確一下定義。平臺,本身并不完成特定的業(yè)務(wù)工作,它的存在就是為了支撐系統(tǒng)和應(yīng)用的正常運行,最典型的應(yīng)該被稱之為平臺的就是基礎(chǔ)服務(wù)層的如統(tǒng)一身份認(rèn)證、展示層的如門戶;系統(tǒng),也就是管理信息系統(tǒng),管理著某個領(lǐng)域的一組特定數(shù)據(jù),并且支撐某個領(lǐng)域的日常工作,譬如人們熟知的教務(wù)系統(tǒng)、財務(wù)系統(tǒng);應(yīng)用,基于平臺和系統(tǒng)中的數(shù)據(jù),為用戶提供某項特定的服務(wù)功能,門戶平臺中集成的成績查詢、網(wǎng)費充值,都可以稱之為一種小應(yīng)用。
大平臺和小應(yīng)用的概念今天已經(jīng)被很多人理解并認(rèn)同,那么“中系統(tǒng)”指的是什么呢?
業(yè)務(wù)系統(tǒng)是數(shù)字校園中不可或缺的一部分,通常是數(shù)字校園建設(shè)過程中最早啟動的那一部分,但也經(jīng)常成為被吐槽最多、失敗率最高的部分。如今已經(jīng)有很多原本做業(yè)務(wù)系統(tǒng)的公司在高校領(lǐng)域都活不下去,這是為什么呢?
1.預(yù)期錯誤:很多人認(rèn)為做業(yè)務(wù)系統(tǒng)就是做軟件,必須好看、功能全面、高大上,做個系統(tǒng)就要一切事情摒棄手工操作、不用 Excel。其實,信息化的根本任務(wù)在于對數(shù)據(jù)的管理,管理信息系統(tǒng),就是幫助業(yè)務(wù)人員管理數(shù)據(jù)的工具。建設(shè)管理信息系統(tǒng)的根本,是梳理數(shù)據(jù)、優(yōu)化管理,軟件只要不出錯、基本好用,可以保證主干業(yè)務(wù)正常運行就足夠。
2.邊界模糊:以高校中使用最為廣泛的教務(wù)管理系統(tǒng)為例,在 10多年前大家剛剛開始做教務(wù)系統(tǒng)的時候,教務(wù)系統(tǒng)本身的功能還是很明確的,主要為了支撐學(xué)校最基本的教務(wù)運行。但隨著教務(wù)處業(yè)務(wù)的不斷增加,很多人覺得諸如計算機等級考試報名等各種各樣的功能都應(yīng)該增加到教務(wù)系統(tǒng)中來。各個軟件廠商迎合這些不合理需求,在自己的產(chǎn)品中加入了越來越多的功能,活生生把學(xué)校的“教務(wù)系統(tǒng)”做成了“教務(wù)處系統(tǒng)”。
3.需求泛濫:在高校做業(yè)務(wù)軟件,需求調(diào)研的過程往往非常奇葩,一種最常見的做法,就是業(yè)務(wù)部門的領(lǐng)導(dǎo)會把部門內(nèi)所有的工作人員聚集在一起,開動員會,讓每個崗位上的具體工作人員向廠商提出軟件修改需求。這種方式,極易導(dǎo)致需求的泛濫和不可控。銀行做軟件會把所有柜臺的服務(wù)人員都聚在一起跟承包商談需求嗎?正確的軟件需求采集方式,應(yīng)當(dāng)是由部門中管理經(jīng)驗豐富、全面掌握業(yè)務(wù)的一兩個人跟軟件開發(fā)方的專家共同商討制定。而一般的工作人員,作為軟件的普通使用者,則應(yīng)當(dāng)按照既定的管理模式工作。
上述問題,都會使業(yè)務(wù)系統(tǒng)不斷膨脹。正如前文所說,隨著功能的增加,軟件的復(fù)雜性也會不斷增加。因此,我們強調(diào)業(yè)務(wù)系統(tǒng),應(yīng)該是“中等規(guī)模的業(yè)務(wù)數(shù)據(jù)管理系統(tǒng)”,一個業(yè)務(wù)系統(tǒng)應(yīng)該只負(fù)責(zé)處理關(guān)聯(lián)極其緊密的、重要的、成熟的、頻繁發(fā)生的業(yè)務(wù),其管理模型應(yīng)當(dāng)是業(yè)內(nèi)普遍采用的。業(yè)務(wù)系統(tǒng)應(yīng)該更多地強調(diào)數(shù)據(jù)準(zhǔn)確性和及時性,易變的流程審批性內(nèi)容則應(yīng)當(dāng)向?qū)W校統(tǒng)一建設(shè)的 BPM 流程平臺遷移。
譬如教務(wù)系統(tǒng),就應(yīng)該只包含學(xué)籍、培養(yǎng)方案、排課、選課、成績、畢業(yè)設(shè)計管理等最基本功能和相關(guān)的學(xué)生、教師服務(wù)界面。如果教務(wù)處還有其他的需求,都可以做成基于學(xué)校數(shù)字校園平臺和教務(wù)系統(tǒng)基礎(chǔ)數(shù)據(jù)而運行的獨立應(yīng)用。以這種模式構(gòu)筑的教務(wù)系統(tǒng),由于其需求穩(wěn)定、數(shù)據(jù)清晰,如果再加上合理的軟件架構(gòu)設(shè)計和精心的實現(xiàn),就可以用很久。
幸運的是,今天已經(jīng)有越來越多的人認(rèn)識到了系統(tǒng)中小型化的必要性和必然性,并且在實踐中按照這種方式構(gòu)建系統(tǒng)。在互聯(lián)網(wǎng)領(lǐng)域,其實也有一種應(yīng)用中小型化的趨勢,也就是今天很多人所說的“微服務(wù)”模型。
互聯(lián)網(wǎng)領(lǐng)域所使用的“微服務(wù)”模型,實際上是將過去一套代碼、一套數(shù)據(jù)庫的單體軟件結(jié)構(gòu),分解為每個模塊一套代碼,每個模塊一套數(shù)據(jù)的結(jié)構(gòu),這樣,不同的模塊可以根據(jù)自身的需要選擇合適的語言編寫,也可以根據(jù)實際應(yīng)用的需要選擇橫向擴展方式。而模塊與模塊之間,則通過消息隊列或是 API 接口等方式進行連接。
如果我們把數(shù)字校園看成一個大的互聯(lián)網(wǎng)平臺,那么今天數(shù)字校園的應(yīng)用小型化趨勢和互聯(lián)網(wǎng)領(lǐng)域的微服務(wù)架構(gòu)其實如出一轍,只不過在模塊劃分的粒度、實現(xiàn)方式的把握上,有著不太一樣的標(biāo)準(zhǔn)罷了。
(責(zé)編:王左利)