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