作為架構的實踐者,必須及時跟進新的技術體系,同時需要慎重考慮引入新的內容,要想清楚新技術引入的必要性、能在短期帶來的什麼收益、能解決什麼問題,同時還需要以觀察者的角度來看業界大廠的實踐,同時思考他們為什麼要這麼做,對於以後改進設計很有幫助
對於架構演進來說是有成本的,在準備改變之前要想明白的乙個事就是這麼做的成本是什麼,會帶來什麼樣的收益,當前的團隊規模是否能穩定駕馭
需要跳出技術的範疇,從乙個更廣更高的角度來考慮這個問題:企業的業務發展。
影響乙個企業業務的發展主要有 3 個因素:市場、技術、管理。這裡**的是「技術」和「業務」之間的關係和互相如何影響。
企業的業務分為兩類:一類是產品類,一類是服務類。
服務類:大量使用者使用這些服務來完成需要與其他人互動的任務,單個使用者「使用」但不「獨佔」某個服務。事實上,服務的使用者越多,服務的價值就越大。服務類的業務符合網際網路的特徵和本質:「互聯」+「網」。
產品類業務大部分情況的演進:技術創新推動業務發展,因為使用者選擇乙個產品的根本驅動力是「功能」
服務類業務的演進:業務發展推動技術發展,因為使用者選擇乙個服務的根本驅動力是「規模」。
除非是創新的技術能夠推動或者創造一種新的業務,其他情況下,都是業務的發展推動了技術的發展。
複雜度要麼**於功能不斷疊加,要麼**於規模擴大,從而對效能和可用性有了更高的要求
無論什麼模式的業務,如果業務的發展需要技術同步發展進行支撐,無一例外是因為業務「複雜度」的上公升,導致原有的技術無法支撐,所以,對於架構師來說,判斷業務當前和接下來一段時間的主要複雜度是什麼就非常關鍵:是任何時候都要同時考慮功能複雜度和規模複雜度嗎?還是有時候考慮功能複雜度,有時候考慮規模複雜度?還是隨機挑乙個複雜度的問題解決就可以了?
架構師需要基於業務發展階段進行判斷
網際網路業務的相同點:規模決定一切
網際網路業務發展一般分為幾個時期:初創期、發展期、競爭期、成熟期。
不同時期的差別主要體現在兩個方面:複雜性、使用者規模。
1 初創期
需要快,但是這個時候卻又是創業團隊最弱小的時候
要有乙個創新的業務點,快速迭代
2 發展期
要將原來不完善的業務逐漸完善,因此會有越來越多的新功能不斷地加入到系統中。
這個階段技術的核心工作是快速地實現各種需求,只有這樣才能滿足業務發展的需要。
階段:堆功能期、優化期、架構期
3 競爭期
技術工作主要要解決重複造輪子、系統互動亂的問題
解決:平台化、服務化
4 成熟期
按照競爭的要求,找出自己的弱項,然後逐項優化。在逐項優化時,可以採取之前各個時期採用的手段。
使用者量增大對技術的影響主要體現在兩個方面:效能要求越來越高、可用性要求越來越高。
想要提公升效能,不可避免地要涉及到分布式,複雜性大幅度上公升
想要提高可用性,不可避免地要涉及到冗餘機器,複雜性也會上公升
本質是「量變帶來質變」
演進的過程中,不可避免地要使用開源專案,那麼如何選擇、使用以及二次開發呢?
1 是否滿足業務
這裡的設計決策遵循架構設計原則中的「合適原則」和」演化原則」。
2 是否成熟
從這幾個方面考察開源專案是否成熟:版本號、使用的公司數量、社群活躍度
3 運維能力
從這幾個方面考察運維能力:開源專案日誌是否齊全、開源專案是否有命令列、管理控制台等維護工具,能夠看到系統執行時的情況、開源專案是否有故障檢測和恢復的能力,例如告警、切換等
1 深入研究,仔細測試
2 小心應用,灰度發布
先在非核心的業務上用,然後有經驗後慢慢擴充套件
3 做好應急,以防萬一
做好備份
1 保持純潔,加以包裝
不要改動原系統,而是要開發輔助系統:監控、報警、負載均衡、管理等。
如果實在想改原有系統,建議是直接給開源專案提需求或者 bug,但弊端就是響應比較緩慢,這個就要看業務緊急程度了,如果實在太急那就只能自己改了;如果不是太急,建議做好備份或者應急手段即可。
2 發明你要的輪子
如果沒有完全適合業務的輪子,且有錢有人有時間,那麼投入人力去重**明完美符合自己業務特點的輪子也是很好的選擇
從零開始學架構 00學習
這個專欄躺在極客時間裡已經躺了很久了,有空的時候才會去聽它,斷斷續續的學習沒有多大效果。還是希望能有時間系統的學習一遍,所以才會整理這份學習筆記,希望寫完了還回再回過頭看看吧。廢話不多說,直接總結乾貨。1.架構設計相對程式設計來說思維方式有很大的差異。架構設計是判斷和取捨,程式設計是邏輯和實現。2....
技術從零開始
前言 本來以為智慧型家居是個很火的行業,進去後發現,這個時代的技術根本沒有給多變的生活場景帶來多大的改變,所以決定轉行前端!本人2016年畢業於乙個不出名的職業學校,大專文憑 樓宇智慧型化專業 剛出校門就去了人稱 人間天堂 的杭州。誤打誤撞進了一家電商大公司做銷售 給阿里巴巴店鋪裝修運營類的 天天打...
零開始學python 從零開始學Python
第1章 python入門 1 1 1 什麼是python 1 1 2 python語言有什麼特點 2 1 3 python可以幹什麼 4 練一練 5 第2章 準備開發環境 6 2 1 在windows上安裝python開發環境 6 2 2 選擇和安裝開發工具 11 練一練 17 第3章 基本概念 1...