以最少時間完成系統(tǒng)升級并獲客戶認可的開發(fā)之道
Dyn的CTO Cory Von Wallenstein,主要負責公司IaaS平臺技術的決策、創(chuàng)新和發(fā)展的方向的制定。近日他在Wired上撰文給大家描述省時省力的系統(tǒng)升級之路——黑暗架構(Dark Architecture)。以下為譯文:
任何公司目標都是業(yè)務的增長,但是增長需要不斷的衍化公司的每個部門,其中不只是你的技術基礎設施。許多企業(yè)一直使用著非常原始的途徑去完成這個衍化,雖然這里存在著極為簡單的解決方案。
而公司升級其基礎設施及系統(tǒng)架構一般出于以下3個原因:
為了規(guī)模——以獲得當下十倍或百倍的容量
為了性能——試圖移除一個系統(tǒng)瓶頸,讓工作的執(zhí)行更加快速
為了解耦——為了獲得更好的可靠性及可維護性,當然也為了將來的擴展做努力
早先的方法屬于全盤否定類:首先制定一個3個月的計劃,然后開發(fā)人員開始全力以赴的打造新系統(tǒng),希望3個月后能順利完成。事實上經常出現(xiàn)的情況就是3個月變成6個月(不可避免的比預期時間要長),而業(yè)務從老系統(tǒng)遷移至新系統(tǒng)也面臨著非常高的風險。當新系統(tǒng)100%實現(xiàn)老系統(tǒng)所有功能后,遺留的舊系統(tǒng)便只能被廢棄。
鑒于這六個月的開發(fā)時間里缺乏優(yōu)先順序及舊系統(tǒng)的其它改進,業(yè)務毫無疑問的喪失了靈活性。這種更新方式就像是“全部”或“一無所有”的命題,并且直到開發(fā)團隊完成新系統(tǒng)的建設并且將所有業(yè)務轉移到新系統(tǒng),這段時間內對業(yè)務的提升基本為零。而面對來自客戶的抱怨,技術團隊的士氣也一滑再滑。這種方法需要改進的地方主要歸結于3個方面:
立刻給客戶帶來價值——我們沒必要一直等到整個新系統(tǒng)完工并投入使用再實現(xiàn)價值
減少成品引進的風險——我們需要避免“全部”或“一無所有”的遷移計劃
保持業(yè)務提供靈活性——可以選擇優(yōu)先級,最少要保證核心價值的及時交付(如果可以選擇的話,我們要做到最快的解決并交付相對重要的解決方案)
針對以上解決方案:黑暗架構的實現(xiàn)途徑
黑暗架構(Dark Architecture)不僅是一種思想,同樣還是個技術解決方案;用以解決規(guī)模、性能及耦合問題,黑暗架構不僅讓硬件通向成功而且可以讓員工有一個清晰的思維。可以通過以下途徑實現(xiàn):
優(yōu)先提升系統(tǒng)中的工作流,而不是改變系統(tǒng)的組件
并行運行老系統(tǒng)及黑暗架構
給兩個系統(tǒng)同時發(fā)送輸入數(shù)據,收集輸出數(shù)據,對比輸出結果,然后拋棄一個
使用暗黑架構途徑,運作方式將如下所示:
1. 在接觸代碼與系統(tǒng)之前,先按照以下順序優(yōu)化系統(tǒng)中的數(shù)據流:短板、機遇、業(yè)務價值或者其它經驗證后對業(yè)務有意義的事情。
2. 于其著眼考慮組件相關(比如使用Cassandra替代原系統(tǒng)中的MySQL),不如考慮流系統(tǒng)(比如,為顧客X執(zhí)行一次通配符查詢類型圖渲染大約需要40秒,而使用其它圖渲染類型要快的多)。這個步驟能讓你看到系統(tǒng)中的弊端所在,所以你可以首先聚焦這個瓶頸的解決方案,然后再考慮其它的問題。
3. 如果使用流優(yōu)化優(yōu)先(假設優(yōu)化的功能占整個系統(tǒng)的2%),事實上下一步做的并不是直接建立功能。取而代之的是為這些功能建立相關支架,讓系統(tǒng)可以同時使用兩個不同的方式進行計算(為了對比輸出結果,有差異時做記錄)。
黑暗架構具體實踐方案
從實際情況出發(fā),這可能是復制一個網絡服務調用(舊的和新的)或者是復制數(shù)據庫交互調用(同樣一新一舊),然后對比返回值,如果存在不同則將其記錄到一個文件或者服務器又或者是消息總線中。
在輸入/輸出支架就緒后,你就可以著手功能的建立。實現(xiàn)系統(tǒng)中最短板的2%功能,就緒后,將其投入產品中的黑暗架構。它將會與舊系統(tǒng)一起接收產品的輸入數(shù)據,雖然最后它的計算結果會被拋棄,但是在這個過程中我們可以與舊系統(tǒng)的輸出值進行比較。如果輸出的結果不同,記錄并進行檢查。這讓你可以更熟悉你的新系統(tǒng),并且在具體操作中獲得一些實際經驗。
一旦確定新的系統(tǒng)可以正常工作并且達到了渴望的性能或者是擴展性提升,將輸出轉換成新的系統(tǒng)。這樣,實現(xiàn)的只是系統(tǒng)中2%最短板的功能,其它功能則沿用舊系統(tǒng)的遺留。如此等于改動2%的功能,花費了一小部分時間就交付了整個新系統(tǒng)的價值。
使用黑暗架構得到的收益:
士氣高昂——有什么比技術人員看到自己成果很快被投入使用來的更振奮人心?
客戶肯定——他們頭痛的問題被解決了
降低風險——在項目重寫的過程中,新系統(tǒng)已經得到實際驗證
下面看一下有更多高優(yōu)先級流需要優(yōu)化的情況——占整個系統(tǒng)的20%,使用黑暗架構途徑,業(yè)務將很快的發(fā)現(xiàn)自己的方向:
持續(xù)更新流,直到系統(tǒng)100%都被遷移
對剩下的80%功能與業(yè)務優(yōu)先進行評估
如此可見黑暗架構的強大作用,在最短時間解決系統(tǒng)短板的前提下還擁有選擇更高的靈活性,可以從容對業(yè)務優(yōu)先進行處理。