朱曉東
(廣西壯族自治區(qū)計(jì)算機(jī)公司 廣西南寧 530022)
Web應(yīng)用框架構(gòu)建集約化統(tǒng)一維護(hù)的探討
朱曉東
(廣西壯族自治區(qū)計(jì)算機(jī)公司 廣西南寧 530022)
隨著社會(huì)的發(fā)展,在信息化的今天,人們對(duì)網(wǎng)絡(luò)越來越依賴,因此,Web的應(yīng)用框架也越來越受到人們的重視,本文就Web應(yīng)用的框架構(gòu)建集約化統(tǒng)一維護(hù)進(jìn)行簡(jiǎn)要的分析總結(jié),在省市一體集約化運(yùn)營(yíng)思想指導(dǎo)下,應(yīng)用開源通過集成Web服務(wù)器、Web應(yīng)用框架、分布式文檔數(shù)據(jù)庫等進(jìn)行組建,為網(wǎng)絡(luò)運(yùn)營(yíng)商最重要的生產(chǎn)系統(tǒng)提供統(tǒng)一維護(hù)平臺(tái),有助于實(shí)現(xiàn)運(yùn)維支撐的專業(yè)化程度。為我國(guó)網(wǎng)絡(luò)運(yùn)營(yíng)的發(fā)展提供微薄之力。
統(tǒng)一維護(hù)平臺(tái);維護(hù)腳本;開源;集約
近幾年來,隨著網(wǎng)絡(luò)信息安全深度的演進(jìn)、專業(yè)細(xì)化、系統(tǒng)演化以及完整的配備,關(guān)于對(duì)信息化的建設(shè)投資規(guī)模不斷增長(zhǎng),CA公司客戶關(guān)系管理(CRM)專業(yè)領(lǐng)域所涵括的項(xiàng)目、體系以及設(shè)備也隨著上述項(xiàng)目的增長(zhǎng)而改善。同時(shí),網(wǎng)絡(luò)信息技術(shù)(信息技術(shù))系統(tǒng)的運(yùn)行支持工具,因?yàn)闆]有嚴(yán)謹(jǐn)?shù)囊?guī)章與制度,在一定程度上存在以下問題:發(fā)生故障的區(qū)域很難定位、質(zhì)量很難得以保證、數(shù)據(jù)維護(hù)不及時(shí)、硬盤數(shù)據(jù)很難得到共享、新人操作起來有困難、缺乏自動(dòng)化等。
CA公司在省市一體集約化運(yùn)營(yíng)思想指導(dǎo)下,試圖整合一系列高性能的開源框架構(gòu)建CRM領(lǐng)域的核心生產(chǎn)系統(tǒng)——業(yè)務(wù)支撐系統(tǒng)(BSS)統(tǒng)一維護(hù)平臺(tái)。正如項(xiàng)目研發(fā)明確提供標(biāo)準(zhǔn)的集成開發(fā)環(huán)境(IDE),對(duì)應(yīng)系統(tǒng)運(yùn)維支撐也應(yīng)明確提供標(biāo)準(zhǔn)的統(tǒng)一維護(hù)平臺(tái)(UMP),從而能有助于實(shí)現(xiàn)業(yè)務(wù)支持高度整體化、智能化、標(biāo)準(zhǔn)化以及專業(yè)化標(biāo)準(zhǔn)。
統(tǒng)一維護(hù)平臺(tái)將Web服務(wù)器Nginx和Web應(yīng)用框架Rails以及分布式文檔數(shù)據(jù)庫mongoDB(數(shù)據(jù)庫)進(jìn)行整合,以實(shí)現(xiàn)各層負(fù)載均衡(實(shí)現(xiàn)網(wǎng)絡(luò)負(fù)載均衡、Web服務(wù)器和數(shù)據(jù)庫均集群部署)的效果,支持客戶端的瀏覽器類型的多樣性(谷歌,火狐),可調(diào)度的任務(wù)引擎的腳本到隔離調(diào)度維護(hù)終端直接生產(chǎn)數(shù)據(jù)庫以及對(duì)數(shù)據(jù)來源機(jī)型配置和分析可訪問的數(shù)據(jù)庫連接配置,與傳統(tǒng)的大型重量級(jí)構(gòu)架相比較,該維護(hù)平臺(tái)顯得更輕量級(jí)、更具有先進(jìn)性,在未來將會(huì)得到很好的發(fā)展與使用。
2.1 Web開發(fā)框架Rails
Ruby on Rails,又被簡(jiǎn)稱為Rails,是一個(gè)使用Ruby語言編寫的Web應(yīng)用開發(fā)框架,他的優(yōu)點(diǎn)就在于在編碼量很少的情況下,能直觀的用Block語法來實(shí)現(xiàn)循環(huán)遍歷和函數(shù)回調(diào)。Rails的核心是MVC(模型、視圖、控制器)架構(gòu),該架構(gòu)可把業(yè)務(wù)邏輯從用戶界面中輕松的脫離出來,易于使代碼不做重復(fù)的事,明確指出不同的類型代碼適用于不同的場(chǎng)合。
上文對(duì)Rails進(jìn)行了分析,下面我們將對(duì)其相關(guān)聯(lián)的Ruby進(jìn)行簡(jiǎn)要的介紹。Ruby是一種跨平臺(tái)、面向?qū)ο蟮膭?dòng)態(tài)類型編程語言。Ruby體現(xiàn)了表達(dá)的一致性和簡(jiǎn)潔性,Ruby不僅作為一種編程語言,而且它還是一種簡(jiǎn)潔的表達(dá)思想的方式。
由于Rails框架的使用,所有的統(tǒng)一維護(hù)平臺(tái)的腳本全都使用這個(gè)簡(jiǎn)化的Ruby語言,并且支持中文名稱,與自然語言非常接近,對(duì)SQL(結(jié)構(gòu)化查詢語言)的使用次數(shù)大大減少,非常方便學(xué)習(xí)和維護(hù)。
2.2 分布式文檔數(shù)據(jù)庫mongoDB
一個(gè)NoSQL(非關(guān)系型數(shù)據(jù)庫)提供了一個(gè)簡(jiǎn)單的、輕量級(jí)的數(shù)據(jù)存儲(chǔ)和檢索機(jī)制,許多學(xué)者將他稱之為“Not Only SQL”,一般不使用“SQL”數(shù)據(jù)存儲(chǔ)器來進(jìn)行存儲(chǔ)數(shù)據(jù)。NoSQL數(shù)據(jù)庫通常是對(duì)檢索高度優(yōu)化和進(jìn)行額外的操作;除以松散的一致性存儲(chǔ)記錄外(如鍵值存儲(chǔ)),其提供的功能往往很少。一個(gè)完整的SQL數(shù)據(jù)庫,為了使一些數(shù)據(jù)模型的擴(kuò)展性以及性能得到顯著的提高,往往會(huì)將NoSQL的靈活性進(jìn)行降低,并以此達(dá)到該目的。
mongoDB(來源于“humongous”,直譯過來就是堆積如山的意思)。目前,mongoDB是一種在NoSQL數(shù)據(jù)庫中非常熱門的、性能很高的、開源的以及無模式的文檔型數(shù)據(jù)庫。在許多情況下,它用于替代傳統(tǒng)的關(guān)系型數(shù)據(jù)庫或鍵/值(key-value)存儲(chǔ)方式,除了具有高性能、易于部署、易于使用,它還具有非常友好的數(shù)據(jù)存儲(chǔ)。
統(tǒng)一維護(hù)平臺(tái)主要的就是采用mongoDB對(duì)NoSQL數(shù)據(jù)庫進(jìn)行構(gòu)建,和集群部署,用于存儲(chǔ)腳本的維護(hù)記錄和運(yùn)行腳本。
2.3 任務(wù)調(diào)度引擎
信息安全基線既是數(shù)據(jù)庫的產(chǎn)生不能直接從個(gè)人安全維護(hù)終端中得出,所以,維護(hù)終端訪問庫往往是由一項(xiàng)任務(wù)調(diào)度引擎來進(jìn)行操作的。靈活的調(diào)度引擎支持?jǐn)?shù)據(jù)源,并且可以配置、解析腳本并對(duì)應(yīng)相關(guān)的數(shù)據(jù)庫進(jìn)行操作。
在推廣這一平臺(tái)之前,就事先確定了最基本維護(hù)腳本的幾個(gè)特點(diǎn):①使用量小的代碼做更復(fù)雜工作;②具有良好的可讀性和可維護(hù)性;③盡量對(duì)數(shù)據(jù)庫過分依賴;④與SQL相比,維護(hù)腳本的功能和擴(kuò)展性將全面超越前者。從上述的特性來看,我們對(duì)多種語言進(jìn)行考察,最終選擇了以Ruby為基礎(chǔ)的腳本語言。與此同時(shí),Rails具有極強(qiáng)的靈活性特點(diǎn),使統(tǒng)一維護(hù)平臺(tái)具有不同于其他平臺(tái)特性。
3.1 基于Ruby的定制化維護(hù)腳本
BSS統(tǒng)一維護(hù)平臺(tái)的腳本維護(hù)實(shí)質(zhì)上是一種以Ruby語言為基礎(chǔ),以Rails框架為運(yùn)行環(huán)境,并且以BSS生產(chǎn)數(shù)據(jù)庫代碼的文本為基本操作目標(biāo)。由腳本屬性和文件檔案以及代碼三個(gè)部分組成的維護(hù)腳本。
整個(gè)腳本代碼分為以下五個(gè)大部分:定義參數(shù)、定義方法、準(zhǔn)備、執(zhí)行、清理。五個(gè)代碼除了“執(zhí)行”部分,其他代碼都是可選的。每一個(gè)代碼都以“代碼名稱do”開頭到對(duì)應(yīng)“end”結(jié)束。不同的代碼有不同的用途,不能重復(fù)使用Ruby語言的腳本代碼。與傳統(tǒng)的Ruby程序,腳本代碼需要遵循一個(gè)固定的格式,并存在一些額外的限制。同時(shí),該平臺(tái)提供了各式各樣的自定義AP(I應(yīng)用程序接口),并引入了許多擴(kuò)展庫,有助于底層功能的封裝工作。所以與普通Ruby程序相比,它具有更好的維護(hù)功能??梢砸暈槠脚_(tái)專用的領(lǐng)域特定語言。
3.2 清新簡(jiǎn)潔的平臺(tái)特性
統(tǒng)一維護(hù)平臺(tái)在采用Rails后,比以往編寫新的應(yīng)用程序和增加新功能變得更加容易。新功能開發(fā)效率高,部署過程在線控制,對(duì)生產(chǎn)并不影響。
在2012年8月關(guān)于統(tǒng)一維護(hù)平臺(tái)成功上線,然后在2012年10月以及11月這兩個(gè)月期間內(nèi)該平臺(tái)進(jìn)行了大范圍的推廣,2012年12月份一開始,該平臺(tái)已經(jīng)完成了205個(gè)手工維護(hù)腳本,遷移114個(gè)數(shù)據(jù)庫后臺(tái)定時(shí)任務(wù),運(yùn)行123961次,成功處理120661個(gè)故障。平臺(tái)上線后,維護(hù)工作的整體狀況得到改善,以及在維護(hù)人員的工作狀態(tài)等方面都帶來了明顯的提升。
4.1 提高運(yùn)營(yíng)維護(hù)工作質(zhì)量
統(tǒng)一維護(hù)平臺(tái)在一定程度上大大提高了維修工作的工作效率,具體表現(xiàn)如下:①為維護(hù)平臺(tái)的統(tǒng)一性提供了一個(gè)通用的異常處理入口。維護(hù)人員可以快速處理障礙,可以更好地安排某個(gè)人員調(diào)配(兩個(gè)人一組,若一方出現(xiàn)請(qǐng)假或出差情況,另一方則頂其崗位),甚至可以提高維護(hù)人員的學(xué)習(xí)效率。②平臺(tái)的腳本是遠(yuǎn)遠(yuǎn)超過PL/SQL(過程化SQL)的功能,因此平臺(tái)可以提供更高層次的維護(hù)手段,通過對(duì)統(tǒng)一維護(hù)平臺(tái)的使用,使得維護(hù)工作變得更加智能化、自動(dòng)化、標(biāo)準(zhǔn)化。③通過對(duì)腳本安全性的檢查和預(yù)防,從根本上減少了操作過程中經(jīng)常出現(xiàn)的錯(cuò)誤。④提供了一個(gè)科學(xué)的日志記錄和數(shù)據(jù)備份方案,便于后期的審核和恢復(fù)工作。
4.2 提升維護(hù)人員狀態(tài)士氣
統(tǒng)一維護(hù)平臺(tái)得到全面推廣后,維修人員需要進(jìn)行必要的熟悉運(yùn)用,維護(hù)人員必須掌握維修腳本的開發(fā),維護(hù)本地日常故障異常處理腳本遷移到一個(gè)平臺(tái)和生產(chǎn)數(shù)據(jù)庫后端的時(shí)序任務(wù),完成后,上述工作可以逐步從繁雜的事務(wù)處理脫離出來,這樣的工作環(huán)境使得維護(hù)人員的工作積極性得到極大激發(fā),使維修人員在許多方面有很大的改變。提高工作效率。
統(tǒng)一維護(hù)平臺(tái)作為Web應(yīng)用框架強(qiáng)大的后背,接管大多數(shù)BSS的運(yùn)維工作,滿足并超越了早期技術(shù)驗(yàn)證的目標(biāo)。目前正在順利運(yùn)行。隨著應(yīng)用的不斷深化,維修人員提出了更多的改進(jìn),對(duì)管理人員也有很高的期望。因此,對(duì)統(tǒng)一維護(hù)平臺(tái)考慮的發(fā)展方向是:建設(shè)成許多維護(hù)平臺(tái),可為以后的運(yùn)營(yíng)支撐做維護(hù)準(zhǔn)備;實(shí)現(xiàn)以平臺(tái)成為基礎(chǔ)的一線人員異常處理工具,如嵌入原系統(tǒng)、腳本可見性控制、時(shí)間段控制;提供外部系統(tǒng)集成能力,對(duì)外提供調(diào)用接口;增強(qiáng)維護(hù)文檔的管理功能,增加提問與解答的互動(dòng)機(jī)制,全省共享機(jī)制,對(duì)維護(hù)文檔、腳本可以打分并發(fā)表評(píng)論等。
CA公司基于開源Web開發(fā)框架Rails,建立BSS相關(guān)的集約經(jīng)營(yíng)統(tǒng)一維護(hù)平臺(tái),平臺(tái)推出后,提高了BSS異常問題維修效率,使維護(hù)工作透明,維護(hù)的集中管理、維護(hù)保養(yǎng)工作、維護(hù)計(jì)劃知識(shí)庫共享等都得到實(shí)現(xiàn),可阻斷個(gè)別維護(hù)終端直接生產(chǎn)數(shù)據(jù)庫,確保系統(tǒng)數(shù)據(jù)的安全性,促進(jìn)故障管理、問題管理的規(guī)范。
[1]WhatisRails.[EB/OL].[2013-05-28].http://guides.rubyonrails.org/get-ting started.htm l.
[2]NoSQL.[EB/OL].[2013-05-28].http://en.wikipedia.org/wiki/NoSQL.
[3]MongoDB.[EB/OL].[2013-05-28].http://zh.wikipedia.org/zh/MongoDB.
TP393
A
1004-7344(2016)15-0295-02
2016-5-10
朱曉東(1986-),男,大專,主要從事CA運(yùn)營(yíng)維護(hù)工作。