這是農曆去年(陽曆2016.1.29)的事了。公司的一個項目已開發得七七八八了,要準備上線了。項目經理與公司上司及使用者協商,定于2016.1.28日(周四)上線。但這天由于項目經理需要去機場接人,加上運維組同僚也忙着。就推後一天上線。這裡就不得不談下公司的項目從開發到上線的過程:公司項目分開發,測試,預釋出,正式四個環境。開發和測試環境由開發人員部署,預釋出環境由開發人員協助測試人員部署(我們組的測試不懂,全程操作還是由開發來部署),正式環境由開發人員協助運維組部署。
這個項目上線所需要部署的有DB,WEB程式,WCF接口程式,Windows服務程式以及檔案伺服器部署。 由于我們這個是嶄新的項目第一次上線。就有有很多工作要做。一周前已由項目經理申請了三台機器:DB一台機器,WEB,WCF,Windows服務共用一台機器,檔案伺服器一台機器。定于周五上午九點半正式開始上線,我(開發)準時去找運維同僚,運維沒來,加上其他一些事直到10點多上線正式開始,我也是在這家公司的第一次協助運維做新項目上線,首先,找到運維人A(女),催促其上線。上線一般都是先部署DB(大家都知道),A說DB的部署不歸她負責,叫我找B(男),我就找B并轉發上線郵件包括上線說明文檔,B知道後說知道我們的這個項目要上線這回事,但這三台機器好像沒交到他們運維手上(沒收到郵件,由另外的同僚發出的,具體誰不清楚),然後和A及其運維上司讨論說了下,說機器應該是已經在運維手上了,然後B查了下,果然他們已有權限操作。B又說,這個DB部署的話要裝資料庫,這台機器應該是沒有裝SQL的。然後說要現狀SQL,那就裝吧。因為是年底了,技術部很多小組的項目都在等着上線或執行DB腳本,運維的都很忙。中間時不時有人打斷,運維組的中午又有聚餐。11點半,我回到自己的座位,下午2點半,又拿着電腦去運維組那邊。催促B,此時B開始裝SQL,大約4:20分樣子,SQL安裝好了。然後DB配置這台新機器的環境以及部署我所提供的本項目的資料庫。下午5點過點部署完成。因為項目有資料同步,需要通路其他項目組的資料庫,B還需要配置其他資料庫針對本項目的權限及安全措施什麼的。 我看他這邊差不多了,在去找A,讓A部署程式包。A這邊部署比較順利,三個部署包加配置檔案修改差不多三十多分鐘。至此,A,B這邊都已部署完成。項目正式部署完成。
問題來了:由于一些主資料是Windows服務從上遊資料庫同步過來的。好,先啟動服務程式。查資料庫同步的資料及看服務Log,嘎嘎!資料沒有同步過來,但服務日志沒有報錯資訊。初略的想了下,感覺部署配置什麼的沒有問題,我去找開發資料同步功能的同僚C(女)過來看。好吧,她也沒找到問題所在。又請教了下另外一位開發同僚(架構師),猜想應該是哪裡異常沒記錄,沒辦法,我隻得看代碼了,果然:此段代碼中有try catch但catch中沒有記錄日志和抛出異常的處理,加上異常處理重新部署Windows服務程式,還是無資料無異常日志,繼續看代碼,發現方法内調用的一個方法(因為代碼的邏輯并不是都在一個方法裡,而是方法1中會調用方法2方法3或者更多)也有try catch但catch中沒有記錄日志和抛出異常的處理,加上并檢查其他方法,然後重新部署,好了,服務LOG中記錄了異常資訊:無權限通路本項目的資料庫,去找B,B重新開機了下DB這台機器,然後又報另外一個異常:無權限通路USERbase資料庫,完了,上遊資料庫出無權限通路了。此時B已經下班走了,幸好另外一位運維同僚D也有權限操作,讓D權重限。再次啟動同步服務。同步的資料還是沒有過來,繼續看日志,出來了兩個異常。上遊DB庫M沒有某個視圖,上遊DB庫N某個視圖中缺少某個字段。完了,上遊其他系統提供給本項目的一些東西都還沒有上線,沒辦法了。此時已經差不多八點多了。之前同僚C和其他組确認過,都是說已經上線了,臨了居然沒上。項目經理和我們商量着說,隻有等到明年在上了(因為下周我們組人差不多都回家過年走了)。運維這邊說上線單還是按已完成來做,發郵件說明明年來了在上。然後各回各家了。
悲催的一次上線經曆。待續。