河南夢之網網絡科技有限公司
夢之網科技出品
掃描關注夢之網科技微信公眾賬號

掃小程序碼聯系客服

技術架構的戰略和戰術原則-夢之網科技

夢之網科技?2019-10-09?文章動態?

技術架構,是將產品需求轉變為技術實現的過程。技術架構解決的問題包括了如何進行純技術層面的分層、開發框架選擇、語言選擇(這里以 JAVA 語言為主)、涉及到各自非功能性需求的技術點(安全、性能、大數據)。技術架構是確定組成應用系統實際運行的技術組件、技術組件之間的關系,以及部署到硬件的策略。

技術架構面臨最大的挑戰是“不確定性”。在技術架構上,很多時候就會面臨這種選擇。是要選擇業界最新的技術?還是選擇團隊最熟悉的技術?如果選擇最新的技術,遇到新技術出了問題怎么解決?如果選擇目前熟悉的技術,后續技術演進怎么辦?這些都是架構師在做技術架構過程中需要考慮的。

業務在千變萬化、技術在層出不窮,沒有一套通用的技術架構模式來適用所有的系統。那么,我們如何保證在做技術架構時,能夠實現一個穩定、出色的系統。面對這些“不確定性”時的架構設計問題,這里從戰略和戰術兩個層面來提供一些設計原則。戰略層提供的是技術架構的方法和思路,屬于頂層設計;戰術層提供的是技術架構的技術實踐方式,更偏向詳細設計。

戰略層設計原則

戰略層的設計原則就是:合適原則、簡單原則、演化原則。

1.1 合適原則

技術人員有一種很強的技術情懷,就是在做設計的過程中,很希望挑戰新的技術、在項目中采用最新的框架、或者自己重造一個比業界的還要牛的輪子。這樣才能夠顯示出自己的優秀,以至于不讓自己顯的那么平庸。比如,在項目中重新造一個能夠解決億萬級數據的新的 xx 流式計算技術,比 flink 還要牛一百倍;有或者在項目中使用最新的 xx 技術,能讓系統承擔億級用戶的訪問。

那么現實是,如果在設計過程中一味追求新技術,往往失敗的可能性很高。

沒有那么多人,卻想干那么多活

現實環境中我們一個業務團隊可能就十幾個人,項目工期短、上線要求快。在這種情況下,如果還要抽調幾個人去研究、搭建、維護新的技術框架,對于項目勢必會造成延期的影響。

沒有那么多積累,卻想一步登天

很多業界領先的方案,不是一幫優秀的開發加在一起,加班加點就能做出來的。而是經過幾年時間的發展才逐步完善和初具規模。如果我們也想自己做一套類似的技術,不是說不可能。我們需要集合當下的技術實力、技術積累,做出適合自己團隊情況的技術評估。

沒有最新,只要最合適

所有新的技術剛出來都是打著比舊技術擁有更加出色的性能、提供更加優秀的擴展性。是不是使用新技術,就能解決一切問題了?新技術的出道,勢必是解決某一場景下的問題,并不是一味萬能良藥。只有了解清楚每種技術的產生背景,適用場景,才能出一個對自己項目最優的選擇。技術選型沒有最新,只有最合適。

總結一下,合適原則就是適合優于業界領先。

1.2 簡單原則

我們總是希望能將我們的軟件設計的精美、宏大,這樣才能彰顯我們系統的復雜度和難度。我們是不是會遇到這樣的場景,在做設計方案的時候,如果一個解決方案很簡單,而且能很快的滿足需求。在評審方案時,就會有人覺得這個方案是不是太簡單了,沒有什么技術含量,是不是需要再設計的復雜一點。

系統是不是一定要設計的復雜?在回答這個問題前,我們先看下軟件領域的結構復雜性和邏輯復雜性。

1. 結構復雜性

結構復雜的系統有兩個特點:第一,組成的組件數量很多;第二,這些組件之間的關系很復雜。如下圖:

圖 1

結構上的復雜性存在的第一個問題是,組件越多,就越有可能其中某個組件出現故障,從而導致系統故障。假設組件的故障概率是 1%(有 1% 的時間不可用),那么 2 個組件的系統可用性是 99%*99%=98%,5 個組件的系統可用性是 99%*99%*99%*99%*99%=95%,兩者相差 3%。說明組件越多,系統穩定性就越差。

結構上的復雜性存在的第二個問題是,某個組件改動,會影響關聯的組件。比如上圖中 C 組件發生改動,會影響 A、B、D,而 A 有會影響 E。這樣就會形成一連串的多比諾效應。

2. 邏輯復雜性

意識到結構復雜性的問題后,只要減少組件就能讓系統結構變簡單?這樣做還是行不通,原因在于除了結構的復雜性,還有邏輯的復雜性,如果一個組件的邏輯太復雜,通用會帶來問題。

我們試想一下,把淘寶的所有功能都在一個組件中實現,可以想象這個系統要有多龐大:幾百人維護一個系統、代碼分支幾十個、需求變更應接不暇、不同分支的回歸測試、修改一段代碼可能影響整個系統的運行等等。這些場景相信大家都不希望看到的。

總結一下,簡單原則就是大道至簡。

1.3 演化原則

文章關鍵詞
架構
軟件架構
消息隊列
急速赛车国语 最新正规棋牌游戏平台 泳坛夺金开奖结果 股票行情大盘走势,今日大盘行情 七星彩走势图大全 女生婚后赚钱给父母花 新疆喜乐彩怎么玩 做大学生什么生意好赚钱项目有哪些 贵州11选5推荐号码预测 新倩女哪个职业最赚钱 青鹏棋牌游戏大厅下载 广东快乐号码预测 网易炒股 2017山东群英会走势图 天堂2台服咋赚钱 澳洲三分彩计划 KTV女人赚钱