優(yōu)惠活動(dòng) - 12周年慶本月新客福利
                                      優(yōu)惠活動(dòng) - 12周年慶本月新客福利
                                      優(yōu)惠活動(dòng) - 12周年慶本月新客福利

                                      如何提升中臺的效率?

                                      我們再回到業(yè)務(wù)層上來(lái)具體看一下如何提升研發(fā)效率。說(shuō)到研發(fā)效率還真不僅僅就是如何寫(xiě)代碼這么簡(jiǎn)單,讀過(guò)《人月神話(huà)》一書(shū)的人都知道,要開(kāi)發(fā)一個(gè)產(chǎn)品,并不是人越多越好,而是涉及人與人之間的信息傳遞成本,有時(shí)候人與人的溝通成本甚至大平寫(xiě)代明的成本,多外,當系統查復雜r以后,代仍應該寫(xiě)在哪里,也就品人數 去理解這個(gè)原有的系統也變得很困難,有個(gè)冷笑話(huà),評信個(gè)業(yè)務(wù)需求, 先羅找各后真正寫(xiě)代碼只需要1天時(shí)間。由此可見(jiàn), 大部分時(shí)間并設有真正化在實(shí)現業(yè)務(wù)需求一個(gè)系統的產(chǎn)品經(jīng)理花上2周評估時(shí)間,然后開(kāi)發(fā)同學(xué)再用2周時(shí)間評估怎么實(shí)現,最上,這樣的研發(fā)效率肯定是不合理的。


                                       
                                      所以要考慮如何解決人性化,人與人溝通的問(wèn)題,這是解決業(yè)務(wù)研發(fā)效率的關(guān)鍵所在。
                                       
                                      1.溝通效率問(wèn)題
                                       
                                      有合作必然就有溝通,提升溝通效率最好的辦法就是形成默契,要形成默契就要通過(guò)規范和約定等手段把大家圈在同個(gè)語(yǔ)言頻道上。
                                       
                                      需求階段的溝通比較多,如統術(shù)語(yǔ),需求結構化表達,統業(yè)務(wù)身份。
                                       
                                      (1)統一術(shù)語(yǔ)。這在一個(gè)公司非常重要,比如在某些公司,“PM"這個(gè)詞是指產(chǎn)品經(jīng)理,而在另外些公司是指項目經(jīng)理;還有諸如應用,系統,模塊這些基本的稱(chēng)謂,如果大家理解不一樣的話(huà)會(huì )很糟糕。
                                       
                                      在公司中形成術(shù)語(yǔ)也有些技巧。比如給產(chǎn)品取一個(gè)好名字,名字既可成為術(shù)講也可以是很好的傳播符號,像滴滴的個(gè)服務(wù)框架叫DiSF ( didi service framework,滴師傅),這個(gè)名字有內容、有含義很容易被記住。在公司中與人溝通也是一樣,如果很難一句話(huà)向別人說(shuō)清楚某個(gè)產(chǎn)品或者項目,那么推廣起來(lái)就會(huì )比較費勁,因此,把自己的產(chǎn)品,項目或任何需要向別人表達的事情術(shù)語(yǔ)化可以減少溝通的成個(gè)。
                                       
                                      (2)結構化表達需求?;ヂ?lián)網(wǎng)公同中都是需求驅動(dòng)產(chǎn)品和技術(shù)的,提出需求的人大多都是運營(yíng)和產(chǎn)品經(jīng)理而非技術(shù)人員,這就不可避免地存在不同崗位人員的溝通理解問(wèn)題。需求的結構化表達就是把需求用“ 系列的術(shù)語(yǔ)、圖標、頁(yè)面等可以更好理解和呈現的方式(一般產(chǎn)出就是PRD)在同一個(gè)語(yǔ)境中表達出來(lái),讓對方更好的理解。溝通需求的過(guò)程就是把不確定性確定下來(lái)的過(guò)程,需求越具體溝通越容易。把需求結構化,和把系統中需要經(jīng)常改動(dòng)的邏輯配置化要達到的效果是樣的,最終產(chǎn)生的結果就是一個(gè)變更記錄。
                                       
                                      (3)統業(yè)務(wù)身份。業(yè)務(wù)身份是管理一個(gè)業(yè)務(wù)在各個(gè)業(yè)務(wù)城中定義的業(yè)務(wù)規則索引,是一串平臺可識別的編碼,該編碼由構成業(yè)務(wù)的要素經(jīng)過(guò)一定組合關(guān)系運算生成,在平臺的運行城中,各個(gè)業(yè)務(wù)域的系統根據輸人的參數條件,進(jìn)行業(yè)務(wù)身份判斷運算,最終根據識別出的業(yè)務(wù)身份結果,執行該業(yè)務(wù)在本系統定義的業(yè)務(wù)規則。要實(shí)現統一業(yè) 務(wù)身份必須要解決:
                                       
                                      系統之間同一項業(yè)務(wù)的聯(lián)通性問(wèn)題,讓系統自動(dòng)呈現業(yè)務(wù)整體視圖;
                                      業(yè)務(wù)條件沒(méi)有生命周期管理、系統長(cháng)期維護困難的問(wèn)題,要統一業(yè)條件識別;
                                      業(yè)務(wù)上下線(xiàn)相互影響、回歸工作量大和效率較低的問(wèn)題。這就要對業(yè)務(wù)邏輯進(jìn)行能力抽象,建立封閉性,從而隔離業(yè)務(wù)。要對業(yè)務(wù)身份進(jìn)行統一管理,需要實(shí)現:
                                      對業(yè)務(wù)身份標識的統一注冊和管理,一般需要構建一個(gè)運營(yíng)平臺;。有業(yè)務(wù)規則的配置界面;規則的執行引擎。
                                       
                                      所以統一業(yè)務(wù)身份需要人口的注冊管理、規則的配置與變更,以及規則的運行域,缺一不可。
                                       
                                      2.開(kāi)發(fā)效率
                                       
                                      如何高效地寫(xiě)代碼是程序員永恒的話(huà)題。這涉及很多因素,如程序員對代碼語(yǔ)言本身的掌握程度(比如JDK8中引人閉包代碼可以使代碼更簡(jiǎn)潔),寫(xiě)代碼所用的IDE以及快捷鍵的使用程度,等等。筆者在這里先拋開(kāi)這些問(wèn)題,闡述下從開(kāi)發(fā)到測試再到運維的整個(gè)效率問(wèn)題。
                                       
                                      開(kāi)發(fā),人員都不希望別人亂碰自己寫(xiě)的代碼,對代碼有絕對的控制權,所以一般都喜歡掌控(Owner)系統,即這個(gè)系統我說(shuō)了算。在這種情況下,曾有一段時(shí)間我們把系統拆得很小,結果誕生了很多同質(zhì)的系統,越來(lái)越多地在做重復的事情;此后又經(jīng)歷了系統合并的階段。但是,系統合并也會(huì )帶來(lái)新問(wèn)題,即開(kāi)放過(guò)程中沖突比較厲害,包括打包部署的效率都很低,在這種情況下會(huì )有兩種解決方案:一是開(kāi)發(fā)態(tài)和運行態(tài)分離;二是對系統進(jìn)行分層和抽象建模。
                                       
                                      所謂開(kāi)發(fā)態(tài)和運行態(tài)分離,就是大家線(xiàn)下的開(kāi)發(fā)都是獨立進(jìn)行的,包括打包和部署,接口的調用分開(kāi),走遠程調用。但是在線(xiàn)上部署時(shí),都是部署在同一個(gè)容器中,把遠程調用變成本地調用。這種思路我們在“合并部署”一章中有介紹,本質(zhì)上可以做到開(kāi)發(fā)態(tài)和運行態(tài)的分離,同時(shí)兼顧開(kāi)發(fā)效率和運行效率。
                                       
                                      3.測試效率
                                       
                                      整個(gè)軟件生命周期涉及很多環(huán)節:需求、開(kāi)發(fā)、測試、上線(xiàn)、運維…涉及很多協(xié)作。這些環(huán)節都會(huì )對效果有影響。其中,測試效率非常重要,因為測試花費的時(shí)間幾乎和開(kāi)發(fā)所花的時(shí)間是一樣的。關(guān)于如何提升測試效率,我們總結了一些實(shí)踐經(jīng)驗,分述如下。
                                       
                                      (1)全鏈路Beta測試
                                       
                                      繼續保持Beta環(huán)境與線(xiàn)上環(huán)境的一致性,將核心鏈路上的應用,Beta環(huán)境HSF打通,減少90%由于環(huán)境問(wèn)題導致的P1、P2故障。
                                       
                                      打通之后,可以實(shí)現以下效果
                                      測試環(huán)境可以做到召之即來(lái),揮之即去;
                                      在分批發(fā)布前,可以在極短的時(shí)間內有針對性地驗證核心功能;也可以選擇性地屏蔽 Cache的訪(fǎng)問(wèn);數據軌跡可以實(shí)時(shí)透出。
                                       
                                      4.運維效率
                                       
                                      運維包括線(xiàn)上和線(xiàn)下兩部分,運維效率會(huì )在兩個(gè)環(huán)節表現得最明顯,一個(gè)是線(xiàn)下的打包編譯步驟、代碼分發(fā)步驟;一個(gè)是線(xiàn)上的下線(xiàn)一重啟一上線(xiàn)步驟、發(fā)布檢查步驟和回滾步驟。下面我們分別看看在這些環(huán)節有哪些地方可以?xún)?yōu)化。
                                       
                                      1)打包編譯環(huán)節
                                       
                                      優(yōu)化流程。環(huán)境分配,可以預先分配好代碼copy,要主動(dòng)準備而不用每次編譯代碼時(shí)再做環(huán)境方面的準備工作;
                                       
                                      預處理。監控代碼版本修改,當代碼被修改后,自動(dòng)觸發(fā)代碼合并沖突檢查做代碼編譯和打包操作,不要等到用戶(hù)點(diǎn)擊再觸發(fā);每個(gè)分支代碼更新主動(dòng)和主干做 Merge,發(fā)現有沖突要主動(dòng)通知相應開(kāi)發(fā)人員修改,不要等到打包部署時(shí)再臨時(shí)修改;
                                       
                                      代碼編譯優(yōu)化。規則檢查,業(yè)務(wù)依賴(lài)的包要做依賴(lài)規范化管理,通過(guò)工具識別依賴(lài);減少應用依賴(lài) SNAPSHOT版本Jar,可以節省 Maven編譯時(shí)間; Maven打包優(yōu)化,優(yōu)化 Maven配置減少不必要的消耗;
                                       
                                      增量編譯。減少編譯時(shí)間的辦法之一就是只編譯變化的部分;比較代碼修改時(shí)間和編譯的代碼更新時(shí)間可以區分那些修改的類(lèi),并針對它們做增量編譯,大大減少編譯時(shí)間。
                                       
                                      打包機器硬件升級。提升編譯速度的另一個(gè)辦法是升級機器硬件,使用更多的CPU或者更多的內存可以明顯提升編譯速度;多組機器 standby以處理并發(fā)修改情況,并始終保持應用處于可用狀態(tài),減少開(kāi)發(fā)上廁所的次數。
                                       
                                      (2)代碼分發(fā)步驟
                                       
                                      代碼分發(fā)主要考慮兩個(gè)問(wèn)題,一個(gè)是代碼的下載,最好是支持P2P下載,這樣的下載效率最高(雖然大部分情況是HTTP下載較多,但真心不建議采用);二是如果代碼包比較大且同時(shí)下載的機器比較多時(shí),要考慮下載機器的網(wǎng)卡流量是否滿(mǎn)足,這點(diǎn)必須特別留意。
                                       
                                      (3)下線(xiàn)、重啟、上線(xiàn)步驟
                                       
                                      下線(xiàn)環(huán)節。下線(xiàn)被動(dòng)等待15秒健康檢查失敗,能否主動(dòng)通知LVS下線(xiàn),而不是被動(dòng)等待3次3秒的檢查失敗后再下線(xiàn);
                                       
                                      重啟。初始化各種服務(wù),去掉不必要的服務(wù)初始化,將一些服務(wù)改成慢加載,部分服務(wù)可以并行初始化。
                                       
                                      (4)回滾
                                       
                                      回滾等于重新發(fā)布,直接利用本機的老war包快速重啟,不需要再走包分發(fā)網(wǎng)站建設步驟,要有手動(dòng)回滾腳本。如果回滾時(shí)間長(cháng)則減少回滾批次,采用發(fā)布一批機器就下線(xiàn)一批機器的方式:下線(xiàn)的機器保持 standby,老代碼不提供服務(wù),出現問(wèn)題后再立即下線(xiàn)新發(fā)布的機器,將 standby的機器立即上線(xiàn)。這樣可以快速達到回滾的目的,在30秒內就能完成回滾。
                                      本文地址:http://www.havencoinwallet.com//article/4465.html
                                      相關(guān)文章:
                                      最新文章:
                                      国产免费丝袜调教视频爱剪辑|国产小受18asian|国产福利91精品一区二区三区|久久久青草大香|欧美丰满熟妇xxxx性