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