深入理解網(wǎng)站開發(fā)與運(yùn)維
- 編輯:admin -運(yùn)維的概念源于工業(yè)革命,因?yàn)楫?dāng)時(shí)工廠開始大規(guī)模制造商品。到了現(xiàn)在,運(yùn)維是指在生產(chǎn)商品和服務(wù)的過(guò)程中所涉及的資源使用(包括資金、原材料、技術(shù),以及人員技能及知識(shí)儲(chǔ)備)。一方面,軟件開發(fā)與制造過(guò)程也非常相似。系統(tǒng)管理員與軟件工程師通常各自隸屬于兩大相互封閉、各自等級(jí)分明的部門中,而不像傳統(tǒng)制造業(yè)樣。
運(yùn)維的概念源于工業(yè)革命,因?yàn)楫?dāng)時(shí)工廠開始大規(guī)模制造商品。到了現(xiàn)在,運(yùn)維是指在生產(chǎn)商品和服務(wù)的過(guò)程中所涉及的資源使用(包括資金、原材料、技術(shù),以及人員技能及知識(shí)儲(chǔ)備)。一方面,軟件開發(fā)與制造過(guò)程也非常相似。系統(tǒng)管理員與軟件工程師通常各自隸屬于兩大相互封閉、各自等級(jí)分明的部門中,而不像傳統(tǒng)制造業(yè)樣。
在一個(gè)開展在線業(yè)務(wù)的單位中,軟件開發(fā)部門負(fù)責(zé)開發(fā)應(yīng)用程序,用于支持面向客戶或開展業(yè)務(wù)的網(wǎng)站或服務(wù)。同時(shí),運(yùn)維團(tuán)隊(duì)負(fù)責(zé)監(jiān)控和維護(hù)這些應(yīng)用程序,使它們保持正常狀態(tài)并服務(wù)于業(yè)務(wù)職能。在大多數(shù)情況下,只有在發(fā)布新版本或者出現(xiàn)需要Web開發(fā)人員和運(yùn)維人員共同解決的問(wèn)題時(shí),他們雙方才會(huì)發(fā)生交流。然而,隨著開發(fā)的Web應(yīng)用程序數(shù)量越來(lái)越多,加上市場(chǎng)競(jìng)爭(zhēng)要求即刻將應(yīng)用程序部署到生產(chǎn)環(huán)境供客戶使用(而不像以前那樣通過(guò)實(shí)體銷售來(lái)交付應(yīng)用程序),因此現(xiàn)在比以前更迫切要求兩個(gè)團(tuán)隊(duì)必須掌握相同的技術(shù)。
從Web出現(xiàn)開始,這種變化就- -直在發(fā)生。Tim Berners-Lee在發(fā)明Web時(shí)就指出,它的主要目標(biāo)是通過(guò)共享知識(shí)促進(jìn)交流,而其中協(xié)作是一大推動(dòng)力:“通過(guò)創(chuàng)建超文本W(wǎng)eb,使各種規(guī)模的群體都可以輕松表達(dá)自己的觀點(diǎn),快速查詢和傳遞知識(shí),消除交流誤差,減少重復(fù)勞動(dòng)。”開發(fā)運(yùn)維的思想即源于這些沿用至今的核心原則,但是更注重開發(fā)人員與運(yùn)維人員的協(xié)作,以及使用自動(dòng)化技術(shù)和工具推動(dòng)文化轉(zhuǎn)變,從而以更快的速度開發(fā)和改進(jìn)軟件。
介紹的大多數(shù)原則都可以應(yīng)用到其他角色間的互動(dòng)上,如運(yùn)維工程師與銷售人員之間的互動(dòng),或者開發(fā)人員與管理人員或質(zhì)量保證人員之間的互動(dòng)。為簡(jiǎn)單起見,我將主要關(guān)注運(yùn)維團(tuán)隊(duì)和軟件開發(fā)團(tuán)隊(duì)之間的互動(dòng)。
在敏捷軟件開發(fā)過(guò)程出現(xiàn)之后,現(xiàn)代Web應(yīng)用也采用一一種快速迭代的開發(fā)過(guò)程,即先設(shè)計(jì)和發(fā)布代碼,然后在出現(xiàn)問(wèn)題時(shí)快速修復(fù)問(wèn)題。敏捷過(guò)程已經(jīng)擴(kuò)展到開發(fā)團(tuán)隊(duì)之外,系統(tǒng)管理員和其他運(yùn)維人員也要參與應(yīng)用與代碼相關(guān)問(wèn)題的修復(fù)過(guò)程,他們與軟件開發(fā)團(tuán)隊(duì)緊密協(xié)作,實(shí)際上也變得越來(lái)越像軟件工程師了。系統(tǒng)管理員以前就只是負(fù)責(zé)監(jiān)控系統(tǒng),偶爾在需要時(shí)重啟一下應(yīng)用程序或Web服務(wù)器,但是這種日子已經(jīng)-去不復(fù)返了?,F(xiàn)代應(yīng)用程序都是根據(jù)不斷改變的業(yè)務(wù)趨勢(shì)而持續(xù)開發(fā)和測(cè)試的,所以運(yùn)維團(tuán)隊(duì)不僅需要知道如何編寫代碼,也需要知道如何接收開發(fā)團(tuán)隊(duì)轉(zhuǎn)移過(guò)來(lái)的代碼,以及如何部署與管理這些代碼。運(yùn)維團(tuán)隊(duì)必須與開發(fā)團(tuán)隊(duì)緊密協(xié)作,共同創(chuàng)建這些過(guò)程,使Web軟件的開發(fā)、部署和管理等過(guò)程都能夠順利運(yùn)轉(zhuǎn)。開發(fā)人員與運(yùn)維工程師都必須有同等水平的能力,不需要過(guò)于依賴其他人(像以前那樣)就能夠獨(dú)立完成必要的任務(wù),而且他們還必須提高工作效率,避免浪費(fèi)時(shí)間。
開發(fā)團(tuán)隊(duì)與運(yùn)維團(tuán)隊(duì)之間的壁壘也必然開始消失。現(xiàn)代軟件的開發(fā)速度越來(lái)越快,許多大型軟件組織可以每天發(fā)布新版本,有的甚至一天發(fā)布幾個(gè)版本,當(dāng)然大多數(shù)軟件的發(fā)布周期仍然以一周或兩周為時(shí)間單位。文化上的轉(zhuǎn)變通常需要幾年時(shí)間,而Web開發(fā)只有30年的歷史。但是Web開發(fā)文化現(xiàn)在已經(jīng)開始形成,這體現(xiàn)在工具的發(fā)展上,它們可以提高生產(chǎn)力,能夠?qū)鹘y(tǒng)上獨(dú)立的團(tuán)隊(duì)融合為一個(gè)整體。Web開發(fā)人員的文化變革深受Web誕生于學(xué)術(shù)領(lǐng)域這個(gè)背景的影響。敏捷是下一組改變Web應(yīng)用開發(fā)方式的重要“法則”,由于開發(fā)人員與運(yùn)維工程師在目標(biāo)和活動(dòng)上有越來(lái)越多的相似點(diǎn),所以開發(fā)運(yùn)維將成為這種文化轉(zhuǎn)變過(guò)程中的重要活動(dòng)。
運(yùn)維工程師一直都有涉足程序 員的部分工作,雖然他們并不像軟件開發(fā)人員那樣擁有正統(tǒng)的計(jì)算機(jī)科學(xué)教育背景。傳統(tǒng)上,運(yùn)維人員一直充當(dāng)著學(xué)徒的角色,他們管理大型Web環(huán)境的大部分知識(shí)均來(lái)自一線的工作經(jīng)歷。
運(yùn)維工程師現(xiàn)在越來(lái)越注意向軟件開發(fā)人員靠近一這 也是必然的。如果運(yùn)維工程師需要支持有競(jìng)爭(zhēng)力的、外向型的軟件開發(fā)文化,那么他必須理解開發(fā)工具和實(shí)踐方法,如持續(xù)集成、測(cè)試和自行開發(fā)工具。當(dāng)前的趨勢(shì)是,軟件工程師不太可能采用運(yùn)維工程師在長(zhǎng)期一線工作經(jīng)歷中積累的實(shí)踐方法和過(guò)程。由于沒有像運(yùn)維人員那樣的學(xué)徒經(jīng)歷,所以軟件開發(fā)人員不太可能采納運(yùn)維工程師日常習(xí)慣使用的配置管理、自動(dòng)化、監(jiān)控和性能測(cè)試等實(shí)踐方法。
軟件工程師通常忙于開發(fā)軟件,因此他們很難去學(xué)習(xí)運(yùn)維工程師的做法。例如,一位軟件工程師可能不愿意學(xué)習(xí)如何編寫一個(gè)用于部署試發(fā)布新環(huán)境的腳本,因?yàn)樗诤蛨F(tuán)隊(duì)成員一起全力開發(fā)些新功能。開發(fā)人員也幾乎不可能去學(xué)習(xí)配置管理工具的領(lǐng)域?qū)S谜Z(yǔ)言。但是,現(xiàn)代的開發(fā)人員必須樂(lè)于學(xué)習(xí)-些新工具,如運(yùn)維人員經(jīng)常使用的配置管理工具。這樣做不僅可能提高兩個(gè)團(tuán)隊(duì)之間的協(xié)作效率,而且也可以幫助軟件開發(fā)人員從另一個(gè)角度看待配置管理工具的作用,從而更好地理解它最終在特定環(huán)境軟件架構(gòu)上的實(shí)現(xiàn)結(jié)果。如果雙方?jīng)]有這些共識(shí),則開發(fā)進(jìn)展會(huì)十分緩慢。
顯然,開發(fā)人員和運(yùn)維工程師學(xué)到的對(duì)方領(lǐng)域的專業(yè)知識(shí)越多,他們就越有可能在需求和方法上達(dá)成共識(shí)。下面是開發(fā)人員通常應(yīng)該學(xué)習(xí)的一些大的專業(yè)領(lǐng)域。
操作系統(tǒng)
網(wǎng)絡(luò)架構(gòu)
網(wǎng)絡(luò)安全
Web應(yīng)用安全
配置管理
自動(dòng)化實(shí)踐方法
反過(guò)來(lái),如果想與Web開發(fā)人員建立更緊密的合作關(guān)系,那么運(yùn)維工程師需要了解以下幾方面,才能以更高的效率創(chuàng)建和維護(hù)一個(gè)復(fù)雜的網(wǎng)站。
交流方式
配置管理
程序設(shè)計(jì)
軟件設(shè)計(jì)與架構(gòu)
兩個(gè)團(tuán)隊(duì)不太可能互換角色,最后真正精通對(duì)方的技術(shù)。Web開發(fā)人員喜愛編寫代碼,而網(wǎng)站建設(shè)運(yùn)維人員則喜歡管理整個(gè)基礎(chǔ)架構(gòu)。但是可以肯定,知識(shí)將通過(guò)各種途徑傳輸?shù)綄?duì)方,包括運(yùn)維團(tuán)隊(duì)與開發(fā)團(tuán)隊(duì)的緊密合作和培訓(xùn),甚至在某些情況下可以直接取消運(yùn)維部門,將兩種技術(shù)群體合并在一起(這可能更適合小型組織)。為了達(dá)到這個(gè)目標(biāo),兩個(gè)團(tuán)隊(duì)都需要在技術(shù)和協(xié)作方面深人對(duì)方的領(lǐng)域,然后在實(shí)現(xiàn)知識(shí)和職責(zé)共享之后再一起協(xié)作。
