架構思考
來自專欄深入Java1 人贊了文章
1、知識的混沌到有序
架構對於很多開發來講,具有很大的魔性,代表著開發人員的層次,架構師的職位還是非常誘惑人。但什麼是架構呢?我自己經過了很長的時間去理解它,中間有迷茫、有困惑,之前在阿里,裡面有很多大牛,去請教專家,每個人對架構有自己的理解。自己也買了一些書,看到各種資料上講的,各不盡同。那時候,知識是混沌。混沌的結果是讓人無法抓到問題的本質。人的認識不盡相同,有不同的表達方式,但在本質上是相同的。
我很相信"量變"到"質變"的進化。我買了不少10本關於架構的書,起初對書中的理解沒有達到一定的層次,現在回過頭來看,一本好的書能讓節省很多時間,這個過程也挺好的,從青澀到有一定的收穫,成長的歷程還是有的。寫下這篇文章,希望對大家有一點幫助。
知識一定要內化成為自己的東西,所以前面提到很多專家講的觀點不一樣,但在本質上對架構的理解是相同。內化為自己的東西一定是簡潔、直達本質的,這個時候再回過頭去看,知識是有序的,形成了一個體系,邏輯性非常強,也即常說的方法論。
2、架構理解
關於架構,剛開始我沒有區分業務架構、技術架構、系統架構、部署架構,這幾種不同的架構,其實相差是很大的,關注點也不相同。大部分人說著的是業務架構或者技術架構,也有系統架構。業務架構是從用戶視角看整個業務的大體情況,它存在一定的扭轉、流動性,要在業務架構圖體現出來,同時要表明業務的場景、產品功能、依賴服務。技術架構要通過怎樣的技術解決什麼樣的問題。系統架構是體現系統之間的關聯關係。
架構,又稱系統架構,系統具有什麼的特性呢。是在看一本書後,對它的所講的比較認可。系統是具有層次特性,這和我們的認識是相同的,每次看到一些東西,每次可以往下深入。其實到這裡了,基本上架構的方法論就出來了,如何找到這個層次結構,架構的產出就是架構設計圖(也有文字,但圖更能直觀表達)。
從系統的層次特性出發,總結分層的方法:拆分、抽象、合併。業務有流程,把這個流程不斷拆分成小的流程,直到不能拆分,把關鍵的操作、功能、特性寫出來,畫在圖上,有總的業務圖,也有拆分的子流程業務圖,一目了然。接下來是抽象的過程,抽象是抽出來要像,抓住本質,對子流程中的內容進行抽象,抽象的過程就是歸納,不斷向上歸納總結。合併是把抽象出來的內容,按照層次特性進行排列,這樣就形成了一個整體業務架構圖。
3、架構感想
看書是學習認識的過程,真正還是要落實到實踐的過程,這是我來滴滴最大的感想。對一個券系統進行架構後,有老大幫你指出哪些不足,應該往些地方思考。到這個時候,之前的所思、所想,到現在的實踐過程,達到了合一的效果。
最後聊一下的感想:
- 堅持是一種優秀的習慣。技術有快餐技術和慢技術,快餐技術是大家一學就會,但沒有競爭力;慢技術是靠沉澱,沒有那麼快速成的,可能需要一年,甚至幾年才能悟出來的。這個過程就需要去堅持,在遇到困難時不要放棄。
- 開放接納、總結。技術要保持開放接納的心態,聽不同的人去講它,每個人有自己的理解和想法,沒有對與錯之分,只是你能不能get到別人所講的內涵,今天我再去想當初那些專家給我講,覺得還是對的,關鍵的關鍵是自己要總結一套自己的理解,別人講得再好,也是別人的。要內化自己的東西,一講出來,就與眾不同,形成了一套體系,架構要怎麼做,反過來要怎麼去學,要看哪些書,這樣初學者有指南,不會盲目去看一些書,陷入混沌狀態。
- 實踐出真知。想與做是兩會事,做一件事會發現還是會遇到一些困難的,這個時候靠平時的實踐,反過來會加深之前的理解,知識也是不斷的修正,讓技術體系不斷圓熟於一斷。
希望自己的一點心得有助於大家,個人微信號手機:13512717641,歡迎加入交流。
推薦閱讀:
※架構師之路:剛入IT行業的人,該不該學架構?
※Kamailio源碼淺析#0 架構和基本執行時序
※大型網站系統架構的演化
※從0開始學架構03《感悟》
※領域驅動之我見—回眸