架构师接龙:百姓网潘晓良VS. 盛大许式伟
主持人:馮大輝,現任丁香園?(http://www.dxy.cn)網站CTO。曾歷任支付寶架構師、數據庫團隊負責人等職。
潘曉良:你們是否面臨著南北問題?你們是如何解決南北問題的呢?
許式偉:南北問題,是所有網絡服務共同面臨的難題。
我們解決南北問題的思路是“動靜分離”。具體來說,就是把網站中不易變的部分和易變的部分明確區分。
不易變的部分,舉個特例就是靜態資源文件如JS、CSS、image之類,可以使用CDN技術作為解決方案。易變的部分,又區分為狀態保持型和計算型(也就是狀態都是內部的狀態,整個服務對外是個無狀態的服務),如果是計算型的,那么如果該服務壓力比較大的話,也是可以通過在南北各部署若干套服務,然后通過DNS解析來分流;對于狀態保持型,這個是最麻煩的,因為多份部署對它來說并不適用(多份部署存在數據一致性問題),只能采用集中式部署。我有兩個建議:第一,應該盡可能通過調整架構來減少這種服務的壓力需求;第二,如果實在沒辦法的話,花錢解決,將這部分的服務部署在優質的機房。
潘曉良:你們是否嘗試過敏捷的一些方法?有什么敏捷心得嗎?
許式偉:我們嘗試過敏捷方法,例如10分鐘站立會、Pair Programming等,并且還在繼續堅持。
對于敏捷,我的看法是,覺得合適、有效果就行,沒效果就換著試試別的辦法。方法學都是與團隊文化息息相關的,并不是一種放之四海而皆準的標準。
潘曉良:你們是如何監控代碼的執行效率?又是如何來找到瓶頸的?
許式偉:我們并不“監控”代碼的執行效率。只有在業務上說某個特性性能沒有達到需求,比如測試發現執行效率沒有達到業務預期的目標,或者依據網站訪問的日志發現某個功能的執行效率會嚴重影響用戶體驗,我們才去分析瓶頸在哪兒。
我們使用的找瓶頸的方式很傳統,就是 Profile。對于這種分析方式,多數語言的編譯器都是支持的。
潘曉良:你們是如何衡量代碼質量的?是行數、執行效率、Bug數量還是其他的?
許式偉:這是一個很有意思的話題。
代碼行數是衡量代碼質量一個非常粗糙的指標,代碼量大,意味著潛在的問題概率也大,但顯然只能是一個預警指標,而不是精確的。另一個預警指標是測試案例的覆蓋率。測試案例覆蓋率越低,代表著代碼潛在的問題也越大。個人認為它比代碼行數更有參考價值。
我認為衡量代碼質量的尺度,是保證測試案例覆蓋率情況下Bug的變化曲線。如果Bug曲線下降迅速,那么意味著代碼質量很棒;如果Bug迅速下降到一個基點,并且穩定在這個基點長期無法下去,這意味著代碼質量不錯,但是存在設計缺陷,在某些特性上無法滿足;如果Bug長期居高不下,不斷衍生出新Bug,或者Bug被反復Reopen,那么代碼質量就低。
潘曉良:互聯網產品的更新周期很快,我們是一天發布一次,但是這時候測試就變得很重要,既不能大規模地測試,因為有改動的時候更新比較多,光維護測試用例都來不及;又不能減少測試,因為如果Bug太多,光修復的開銷就很大。你們有什么經驗或者建議嗎?
許式偉 :互聯網確實帶來了巨大的革新,對軟件開發方式的影響也是如此。如同解決南北問題一樣,我們主要是從架構上做保障,同樣的方法 : “動靜分離” 。
具體來說,就是把業務區分出易變的部分和不易變的部分。盡可能把更多的服務做成基礎性的、不易變的、與用戶交互無關的。對于這種服務,維護周期可以較長 ;而業務相關的,變動就要多一些,這里可以做的事情是,盡可能解耦功能之間的關聯性,讓一個功能的調整不要影響到另一個功能。如此這樣的話,一方面可以保證待測試的代碼量盡量少(代碼行少,至少出問題的機會也就少),另一方面出問題影響的范圍也小。
潘曉良: 你們是否嘗試過Pair Programming?我們試下來確實很好,但問題是推廣比較難做,你們是否有一些這方面行之有效的經驗?
許式偉 :我們鼓勵Pair Programming,但是沒有強推。如前所述,沒有強推是因為覺得它并不一定適用所有人,所以喜歡就用。而且我們也不是所有任務都來個Pair Programming,只有在覺得某個任務適合的情況下才做。
潘曉良:互聯網產品的網絡訪問日志是非常寶貴的資源,但是卻因為存儲容量的限制等問題,沒有好好地用起來,你們對網絡訪問日志會分析什么?怎樣分析呢?
許式偉:我很認可這一點 :互聯網產品的網絡訪問日志,是網站運營積累下來的寶貴財富。
我個人傾向于盡可能地保留更多的原始日志信息,當然很多公司出于成本的考慮會拋棄一部分歷史數據而僅僅留下分析結果。保存原始日志信息的意義是顯然的,因為我們期望統計的用戶行為其實是不斷調整的。今天你關心獨立IP數,明天可能就變另一個參數,而一旦你丟棄原始日志,也就無法再對這段歷史進行新參數的統計。分析日志我們會傾向于用第三方如Google Analytics與自有的數據分析的系統結合。自有的數據分析,我覺得Hadoop是一個不錯的成熟方案,可以直接使用。
總結
以上是生活随笔為你收集整理的架构师接龙:百姓网潘晓良VS. 盛大许式伟的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 敢问路在何方——项目经理成长手记
- 下一篇: sap获取日期代码