工程師成長錄:做項目的那些事兒
原創(chuàng)【51CTO.com獨家特稿】作為一名項目施工人員,撫琴煮酒前前后后也實施過一些大大小小的項目了,有并發(fā)量大的CDN廣告網(wǎng)站,還有證券類資訊網(wǎng)站以及電子商務(wù)網(wǎng)站等,還有就是一些并發(fā)不大但要求作成HA的小型網(wǎng)站等,感覺其實在實施過程還是有蠻多技巧和心得的,特寫出來與大家分享一下。
一、準(zhǔn)備工作一定要做好做細(xì)
做為項目實施工作,還是比較有技術(shù)含量的,有的還因為合同期限,有時間限制,所以一定要在公司將所要布署的施工方案的技術(shù)活細(xì)化,最好是做個幾十遍,將各種各樣的意外都設(shè)想進(jìn)去。眾所周知,Linux下軟件如果是源碼編譯安裝的話,有的也區(qū)分32位和64位的;更別說windows下的程序了,吃了一次虧后我后期就直接建議上級領(lǐng)導(dǎo),以后程序的開發(fā)環(huán)境和測試都統(tǒng)一為64位了,布署環(huán)境我們現(xiàn)在都統(tǒng)一為64位的CentOS5.x及windows2003 企業(yè)版+SQL Server2008,這說的是服務(wù)器的操作系統(tǒng)的統(tǒng)一性。
再說下軟件版本的問題,比如說我們要用Nginx作負(fù)載均衡,這時候是用nginx 0.7x還是nginx0.8.15呢,我們經(jīng)過了大量測試,并且作了相關(guān)的壓力測試,最后決定了用nginx0.8.15,在項目實施后發(fā)現(xiàn)其穩(wěn)定性相當(dāng)不錯,所以后期的項目實施中一直采用nginx0.8.15,其它的軟件版本類似,即測試的工作一定要作好做細(xì)做多,可能要浪費不少時間和精力,但這個工作一定要做,必須的。另外的是就是要跟客戶那邊的IT技術(shù)部門多溝通,弄清楚他們的機(jī)房帶寬,服務(wù)器是放在自己機(jī)房還是放在電信機(jī)房,值班人員是否24小時監(jiān)控,服務(wù)器的性能如何?是否是四核至強(qiáng),單臺大約能承受多少并發(fā)(很遺憾,這個問題基本沒多少IT技術(shù)能弄得很清楚),最好的做法是給對方的IT技術(shù)一張關(guān)于網(wǎng)絡(luò)和系統(tǒng)的調(diào)查表,然后一定要得到對方肯定的反饋,我最喜歡的情況之一是對方什么都沒,從路由器到服務(wù)器和存儲都是我們推薦,他們購買,這種情況就能對服務(wù)器性能一清二楚了。根據(jù)我所了解的系統(tǒng)管理員,一般都很熟悉windows系列,但一談到Linux和unix,尤其是Centos和FreeBSD,基本就處于空白期了,所以一定要耐心跟他們核對。
另外有一個件事,一定要跟大家提個醒,我們帶過去的程序,如果是Linux的源碼和數(shù)據(jù)庫的文件估計還好,但如果是windows的文件,尤其是執(zhí)行文件(一般是移動硬盤直接攜帶),一定要用最新的殺毒軟件,我們一般是NOD32和卡巴斯基,但這樣還不保險。最后是跟對方的技術(shù)支持多溝通,用對方的殺毒軟件來進(jìn)行檢查,這個我們是有教訓(xùn)的;如果你的軟件有病毒,損失全由你方來承擔(dān),而且這個對于系統(tǒng)管理員而言,太不專業(yè)了。由于我負(fù)責(zé)的多是linux/unix機(jī)器(我安裝的MySQL機(jī)器也很多),我這邊基本是從沒出過問題;而同事攜帶的移動硬盤,由于用的人太多了,結(jié)果拿到客戶的機(jī)房一掃,居然有毒,所以這事最好是在己方公司做好,不要因為細(xì)節(jié)影響大局。另外要多了解下對方那邊有無網(wǎng)絡(luò)安全方面的防火墻,一定要一臺防DDOS攻擊的,目前這方面還比較好,客戶做的多是證券系統(tǒng)和電子商務(wù)的,非常注意安全,一般都有Juniper系列的防火墻。#p#
二、在項目實施過程一定要注意多部門的溝通和配合
這一點其實也很重要,一套系統(tǒng),一般包含的是程序+數(shù)據(jù)+圖片等文件,所以你作為項目實施人員,平進(jìn)一定要注意與這些部門多溝通多了解,我的同事們很不了解,我為什么總是跟開發(fā)的一起工作和探討問題。其實作為系統(tǒng)工程師,即System Admin,你可以不精通C++或PHP,但一定要懂這些,比如php、比如java,另外跟數(shù)據(jù)部門也要多注意交流,看數(shù)據(jù)庫是運行在什么平臺下?是MySQL還是SQL server2008,這樣才能做的有的放矢,胸有成竹。公司內(nèi)部的交流基本應(yīng)該還算是比較順利的,難點就在于項目施工過程中的多部門協(xié)調(diào)和交流問題。我跟同事的做法是,我們會提前跟客戶的業(yè)務(wù)領(lǐng)導(dǎo)打招呼,約定在一個時間段將所有的施工人員召集起來開一個交流會。比方說,我在南京做的某證券系統(tǒng),我們是從武漢出飛,三小時的動車。下了火車后我們直接就去客戶的辦公室,拿出了項目的施工拓補(bǔ)圖,迅速的跟所有的施工人員開了一個會,說了項目施工中的重點和困難。人確實很辛苦很累,但這事最好提前和迅速,鬼知道項目實施過程中會出現(xiàn)什么樣的意外。第二天我們?nèi)ル娦艡C(jī)房時,還是有的吃驚。HP的工作人員一下子來了六位,剛開始我不是特別理解,后來明白了,4U的服務(wù)器確實長得彪悍,小弟我在北京時練就了一點本領(lǐng),就是能扛著1U的服務(wù)器,奔流如飛。結(jié)果在4U的服務(wù)器前硬楞了,怕閃腰不敢上;還是HP想得比較周到,派的都是年輕小伙,呵呵。言歸正傳,我記得那個項目算是中等項目,一共有六位HP的工程師,華賽派了一位網(wǎng)絡(luò)工程師,天泰派了一位安全工程師,我們的客戶是派了三個IT技術(shù)支持過來,我們這邊是我和同事二人。人多力量大,毛爺斧說的好,各人各司其職,迅速的做事,效率還是蠻高的,HP用了KVM來安裝系統(tǒng),8臺服務(wù)器同時安裝;那邊的二位工程師也很迅速的設(shè)定IP,做內(nèi)網(wǎng)IP映射等??傊?,我擔(dān)心的意外也沒發(fā)生,基本一天的時間,可以將所有服務(wù)器的系統(tǒng)安裝正常,開放Linux的遠(yuǎn)程(SSH:22)和windows的遠(yuǎn)程(我們是用Remote Admin),網(wǎng)絡(luò)方面基本也暢通。天泰的安全工程師也調(diào)試了一天,開啟了防火墻的透明(Transparent模式)后,留下了他的聯(lián)系方式給我們就回上海了,臨走時說我們可以24小時找他。我們都笑了,白天上班時間還是可以找的,晚上就算了,免得大煞風(fēng)景。這是比較成功案例,失敗的例子我也經(jīng)常遇到,比如網(wǎng)絡(luò)不通或?qū)Ψ綄⑽覀兊木W(wǎng)絡(luò)設(shè)置錯誤等等,那就是比較折磨人了,這事我放在第三點來說。#p#
三、迅速和穩(wěn)定的處理項目實施中遇到的突發(fā)事件
這一點不好說,看項目實施人員的經(jīng)驗和能力了。比如我有次去武漢某證券公司布署Nginx+Apache(web)的1+3的小型網(wǎng)站時,忽然發(fā)現(xiàn)有臺HP360的主板壞了,怎么也裝不上系統(tǒng);我當(dāng)機(jī)立斷,立馬放棄這臺,只部署成1+2方案,然后最后將情況跟負(fù)責(zé)我們的副總匯報了下,保證整臺系統(tǒng)還是按額定的時間上線,然后我又跟公司的Qs做了大量的壓力測試,發(fā)現(xiàn)能頂上,所以就暫時就定成1+2了;還有一次就比較郁悶了,我們過去實施時,發(fā)現(xiàn)客戶已請了家外包公司將機(jī)房的網(wǎng)絡(luò)做好了,讓我無語的是,由于客戶要求做HA系統(tǒng),所以我們將施工拓補(bǔ)圖上多畫了一個網(wǎng)段,即10.0.0.0網(wǎng)段,然而客戶這邊的IT老總意圖理解錯了,居然將整套系統(tǒng)做成了二個網(wǎng)段,還劃分了VLAN,當(dāng)時就徹底把我雷翻了,本來明明就是在局域網(wǎng)的一套系統(tǒng),怎么搞得這么復(fù)雜啊?沒辦法,只好花了一下午時間跟他解釋什么叫Heartbeat,然后跟他解釋這世上還有一種東東叫雙絞線,等他明白過來,再讓外包公司的人過來重新布線和分配交換機(jī)的IP時,寶貴的工期已足足過了三天;我那三天也沒辦法,只能先將系統(tǒng)和能布署的全布署上去,最后只等網(wǎng)絡(luò)ping通了,期間也想過增加一條靜態(tài)路由的方法,但對方的網(wǎng)絡(luò)工程師不停的做抽插網(wǎng)線的實驗,最后只有作罷。還有一件事也比較郁悶,也是替客戶將所有系統(tǒng)布署好后,發(fā)現(xiàn)80端口怎么也通不了;仔細(xì)盤查了對方的網(wǎng)絡(luò)工程師,確定問題不出在對方這里(熟練的網(wǎng)工難道還不會映射一個80端口?),我用遠(yuǎn)程telnet 對方映射的外網(wǎng)IP 80端口時發(fā)現(xiàn)好無反映,忽然想到:是不是機(jī)房封了80?我的神額,這么簡單的問題難道事先沒溝通好,暈死我了,立馬讓對方的老總跟機(jī)房備案,開通80,但時間還是浪費了不少...總之,在項目施工中,不斷的會遇到許多煩心的事,讓你焦頭爛額,讓你心跳加速,所以這也要看你的應(yīng)變能力了。注意的是,耐心的跟對方溝通,畢竟人跟人之間需要交流;你要理解的是:就是你是某方面的權(quán)威,但在另一方面,你可能什么都不算。所以,低調(diào)做人,高調(diào)做事,這也是項目施工中應(yīng)該注意的。#p#
四、在項目施工中多學(xué)習(xí),提高個人的能力
實際的線上環(huán)境還是很鍛煉人的,這也是現(xiàn)在不少公司為什么一定要招有項目實施經(jīng)驗的人的原因。我個人感覺,一個成熟并安全的系統(tǒng),還是很有技術(shù)含量的。你要了解網(wǎng)絡(luò)、程序、數(shù)據(jù)庫,還要了解什么叫并發(fā),什么叫SSL(哪家公司支持多域名的SSL),什么叫網(wǎng)架架構(gòu),你的網(wǎng)站安全嗎,監(jiān)控怎么辦呢?文件服務(wù)器壓力大嗎,單臺web崩潰了怎么辦,PHP的session共享怎么解決,MySQL數(shù)據(jù)庫做成什么樣的,是主從復(fù)制還是做成MySQL-cluster(別被MySQL群集忽悠了,還是主從復(fù)制更適用于你的線上系統(tǒng),相信哥吧),你的SQL Server2008是單臺還是做成SQL Server 2008故障轉(zhuǎn)移群集?shell很熟悉了吧,Apache下的正則熟悉不,能不能在十分鐘搞定,兄弟,別笑,我現(xiàn)在經(jīng)常被我們的Manager鄙視,寫得太慢了,要努力加強(qiáng)啊(沒辦法,這幾年迷住了nginx,喜歡上了在它下面玩正則,唉),有時候,做系統(tǒng)集成這塊也挺累的,你要掌握的東西太多了,而網(wǎng)工相對而言壓力就小多了,你只要保證網(wǎng)絡(luò)通暢即可;小公司就不說了,一個IT技術(shù)支持就要做N多的事,有意思嗎?我不知道大家有沒有這種情況,我現(xiàn)在維護(hù)的電子商務(wù)網(wǎng)站,我跟同事經(jīng)常會遇到老大就站在身后,看你處理故障的事情,如果2分鐘能處理的事,我絕對不會拖到第3分鐘,沒辦法,壓力逼著人成長。項目實施一般都是有合同時間期限的,所以需要大家在短期內(nèi)做好布署工作,測試這塊可以跟對方商量,對方也要花一段時間進(jìn)行內(nèi)測的;一個成熟安全的系統(tǒng)下來,你會發(fā)現(xiàn)你成長得非???,平時不太注意的細(xì)節(jié)在線上就是重大的安全生產(chǎn)問題了。所以公司一般有外出部署項目,我一般會同意出去,雖然累,雖然項目提成少得可憐,但為了成長值也就忍了。#p#
五、最后就是系統(tǒng)的測試和監(jiān)控了
壓力測試和性能測試一般由公司和對方的測試人員進(jìn)行,這個大家一般都會給比較充分的時間,這個問題不大。特別是壓力測試這塊,公司很多Qs不是太懂并發(fā),所以你可以耐心跟他們溝通,順便熟悉下他們用的Load Runner,那東東我了解了幾次,說老實話,很復(fù)雜,還是Apache自帶的工具和webbench簡單些,呵呵。監(jiān)控這塊我強(qiáng)烈建議用Nagios,郵件和短信通知都要做,并求對方的系統(tǒng)工程師24小時開機(jī),遇到緊急事件要即時處理。事實證明,如果都是做雙機(jī)HA,并且有DDOS防火墻的話,緊急事件還是比較少的。
以上即時我為項目實施工程中的一些經(jīng)驗和心得,與大家共享下。記住,技術(shù)不能完全左右項目的成功與質(zhì)量,因為技術(shù)只占其中一半的分量,有可能一半也算不上。實施完一個成熟和安全的網(wǎng)站或系統(tǒng),其中的成就感和酸甜苦辣也只有自己知道,希望大家能從中學(xué)習(xí)到東西(特別是項目實施人員),謝謝.
【51CTO.com獨家特稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載!合作媒體轉(zhuǎn)載請注明原文出處及作者!】