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