程序猿的起點
回頭一看,已然做了程序猿兩年多了,這兩年里,雖然不算風風雨雨,但也算坎坎坷坷吧。想當初,自己還是個毛頭小子的時候,每天上班那叫一個干勁十足,每次接到任務都像去推對方高地似的,頗有一股堅持不懈的勁。
當時公司里人少,是一家小型的互聯網公司,滿打滿算,我們JAVA組也就四個人,一個項目經理兼產品經理兼研發經理兼部門經理兼技術經理兼技術總監的頭,另外就是我們三個臭皮匠。這三個臭皮匠也分工的剛剛好,LZ負責后台開發兼測試兼運維兼DBA,另外兩個人全權負責前台。我們的項目也是采取的當時最高大上的三大框架---SSH,以及當時全球著名的JS框架jquery和風靡全球的數據庫mysql。
我們的項目當時部署在一個非常高端的大廈的...地下室,不過這對於當時的LZ來說,已然是小流氓看到了花姑娘一樣,甭提多興奮了。地下室里服務器嗡嗡的轟鳴聲,激起了LZ的腎上腺激素,瞬間就像打了雞血似的,投入到了當時的工作當中。
說了這么多,其實也就是一番感概吧,兩年前,LZ還是一個只會寫寫Action,連java當中如何將整數轉換為字符串這種小問題都需要百度的菜鳥,如今終於成為了依然只會百度的菜鳥。人生在世,果然恍若瞬間啊。
一次小討論
說了這么多閑話,也該扯扯正題了。本篇文章的起因來自於之前的一次關於集群的小討論,這次討論的起因要從去年的11月份說起。當時公司的業務模式發生變化,導致LZ的系統用戶數驟然增加,再加上系統本身就年代久遠,各種垃圾代碼如蟻蟲般攀附在系統當中,最終的結果是,系統頻繁宕機,盡管最終找到了問題的關鍵點,是由於一個異常的SQL查詢導致的問題,但為了安全起見,還是將集群的部署提上了議程。
不提還好,這一提可出了事了。LZ與部門的測試經理經過一番討論,最終制定了一個集群方案,由硬件負載均衡器將流量分發到DMZ區的web服務器,再由web服務器轉發到后端的應用服務器,由硬件負載均衡器負責心跳檢測。這個方案其實是比較完美的,從安全性、穩定性、伸縮性角度上來講,還是十分可行的。
經過我們近一個月的測試,集群最終測試完畢,bingo,合並代碼准備上線。結果,噩耗來了,CTO助理忽然來電一封,表示“你們的集群,必須要經過我手下人的測試才能上線”。這下LZ愁了,代碼都合了,退也不是不能退,但比較麻煩,而且上線的安排都是非常緊湊的,這一拖難免要影響后續的計划。不過沒辦法,誰讓LZ這小小程序猿沒有話語權呢。於是退代碼,打包,准備給CTO助理手下的人再去測試一遍。
這一測不要緊,事又來了。LZ當時為了處理緩存的問題,並為了顧及系統的安全,也為了保證在原有系統的基礎上進行無傷的集群擴展,設計了一個簡單的集群MQ消息傳送,道理很簡單,就是利用fanout交換器進行集群刷新。這一下被CTO助理手下一幫子人盯上了,說這個不行,那個不行,非要LZ撤掉重寫,改用memcached。事實上,LZ實話實說,memcached當然可行,而且當時ORM框架的二級緩存已經被換成了memcached,這也是大部分情況下的分布式緩存解決方案。但問題是,一則是LZ的集群MQ刷新已經寫好了,再改自然是額外的工作量,另外更重要的一點就是集群MQ的刷新是完全不需要動原來代碼的,而如果把原來位於常量池的緩存拉到memcached,就需要改動大量的代碼,很有危險性。沒辦法,誰讓這系統當時沒及時重構呢。最終結果還好,LZ還說歹說,各種理由一起上,還是留下了這個解決方案。
事情到這里,原本就可以結束了,但還遠遠沒有結束。后來CTO助理的一幫手下又提出了一個新的集群方案,並一再表示這個更好,而且言語中的意思就是,你不用這個方案也行,出了問題你自己負責就好。
各位猿友,這你能忍嗎?
什么?你能?反正LZ不能!
於是LZ翻各種英文文檔,尋找更好的解決方案,因為他提的方案當中,有很明顯的缺陷,針對這個缺陷,LZ終於找到了更好的方案。最重要的問題在於,我們原本的方案被否定的原因是,某人曰:“我們以前沒這么用過”,擦!
LZ所提的這個方案,相對來說是最復雜的,因為需要解決很多問題,比如負載是否均衡,能否保持高可用。開始大家都覺得這個方案太復雜了,風險比較大。不過LZ此時倒不着急上線了,風險大?測試唄。
於是緊張的測試又開始了!
榜樣的力量是無窮的
事情到這里,原本可以結束了,就等着測試上線了,但是還遠遠沒有結束。14年回來,大概是3月份左右,LZ收到一封CTO助理來電。LZ心想,難道是集群測試結束了?
不,你錯了!
我們的方案還是要變!
CTO助理將我們一幫子人叫到一個會議室,開始了最后一次的討論。我們都是各抒己見,各自訴說着各個方案的好處與壞處。最終CTO助理提了一個方案,這個方案與我們剛開始提的如出一轍,不過去掉了心跳檢測,采取運維組的監控系統進行可用性檢測。
LZ剛開始還是比較抗拒的,因為年前就開始測試LZ的方案了,到當時已經大概測試了一個半月,這突然又要改方案,LZ頓時有點hold不住了。不過CTO助理的一句話完敗了LZ,這句話讓LZ徹底的決定采取這個方案,哪怕重新測試也在所不惜。
他說的話是,“工商銀行就是這么做的!”
高潮來了,榜樣的力量絕對是無窮的。好吧,都說到這份上了,LZ還能說什么呢。難道LZ比工商銀行的架構師還牛B?扯淡吧,還是閉嘴吧。
榜樣高於一切
其實仔細想想這個問題,很多時候都是這樣,很多人在公司都會發生激烈的討論,你說這個甜,我說那個香。最終爭的你死我活,還是討論不出來個結果。不過如果有人說這么一句話的話,那么基本上這場討論就到此結束了。這句話就是,“XXX就是這么做的”。(請將XXX意淫為阿里、百度等等)
這就是為何中國缺少創新,因為人都怕擔責任,都喜歡穩妥的路線。而且最主要的是,一旦有人說了這句話,那么接下來,如果你再想讓別人認可你的方案的話,除非你能拿出特別能讓人信服的理由,否則的話,還是乖乖閉嘴吧。沒人會喜歡你的創新的,大家喜歡的都是你開心我快樂,系統不掛就萬事大吉。
這就是榜樣的力量,也是為何從BAT等公司出來的人都如此牛B,因為在討論的時候,他們總能以一句“我們以前就是這么做的”一招秒殺你!(請將這里的“我們”依舊意淫為阿里、百度等等)
LZ想說的
這樣的人是不是太高傲了?太沒節操了?LZ真心的鄙視這種人。所以,如果你認識這種人,請務必讓LZ來好好教育一番,LZ只想對他們說:“大牛,做個朋友吧!”
-----------------------------------------------------------
創新需要勇氣和實力,猿友們,堅持吧,至少LZ在盡全力堅持!