目前,我們已經是大三的學生了,但是我對軟體架構的具體內涵還不是很清楚。對於「什麼是架構?」的問題還模稜兩可,所以我今天閱讀了《架構漫談》系列的部落格,讀完以後對於軟體架構有了更深層次的理解。
「架構」一詞最早是跟隨著建築出現的,而不是由軟體工程專業產生的。為什麼會產生架構呢?在部落格裡作者根據乙個通俗易懂的故事**了產生架構的原因。把乙個整體切分成不同的部分(分工),由不同角色來完成這些分工,並通過建立不同部分相互溝通的機制,使得這些部分能夠有機的結合為乙個整體,並完成這個整體所需要的所有活動,這就是架構。架構是人類發展過程中,由懵懵懂懂的,被動的去認識這個世界,變成主動的去認識,並以更高的效率去改造這個世界的方法。
每個概念實際上所解決的,還是人遇到的某個特定的問題,我們把解決問題的解決方案,給定了乙個名字,這個名字就是對應的某個特定的概念。抽象這個詞代表的含義,實際上是把不同的概念的相似的部分合併在一起,形成乙個新的概念。回過頭來,根據架構的定義,要做好架構所首先必須具備的能力,就是能夠正確的認識概念,能夠發現概念背後所代表的問題,進而才能夠認識目標領域所需要解決的問題,這樣才能夠為做好架構打好基礎。
如果把真正的問題找到,那麼問題就已經解決80%了。這個能力基本上就決定了架構師的水平。識別問題的乙個最大的前提就是要搞清楚:是誰的問題。這個搞清楚了,問題的邊界也就跟著確定了,再去討論問題才有意義。切土豆的例子看似很平常,但是其內部顯示著乙個深奧的問題,作為軟體工程師或者架構師,我們大部分時候是要去解決別人的問題,「別人」是誰,是值得好好思考的。
所有的切分調整,都是對相關人的利益的調整。當人們認識到要主動的去切分乙個系統的時候,毫無疑問,我們不能忘掉利益這個原動力。所有的切分決策都不能夠違背這一點,這是大方向。切分的原則:必須在連續時間內發生的乙個活動,不能切分。切分出來的部分的負責人,對這個部分的權利和義務必須是對等的。切分出來的部分,不應該超出乙個自然人的負載。切分是內部活動,內部無任怎麼切,對整個系統的外部應該是透明的。
不管軟體行業如何發展,模擬人的所有行為都是乙個大的趨勢。也就是說,軟體的主要目的,還是把人類的生活模擬化,提供更低成本,高效率的新的生活。軟體工程師是實現這個模擬過程的關鍵人物,他必須先理解人是怎麼在日常生活中完成工作的,才能夠很好的把這些工作在計算機中模擬出來。軟體的本質,其實就是通過把人類的日常工作生活虛擬化,減少成本,提公升單個人員的生產力,提公升人類自己的利益。
業務問題的本質,是業務所服務的物件的利益問題,明白了這個,就很容易搞清業務的概念和組織方式。為了能夠讓軟體很好的跑起來,軟體工程師必須理解業務所服務的物件,他們的利益所在,即業務問題。軟體工程師還必須要考慮,用什麼樣的硬體把軟體跑起來,怎樣跑得好,跑得快,並且可以隨著業務的流量逐漸的長大。軟體因為流量增大而分拆成不同的執行單元,在不同的機器上部署所形成的架構,屬於軟體架構。每個執行單元為了讓不同角色的人,比如前端,業務,資料儲存等能夠並行工作,所分成的**架構,也屬於軟體架構。
架構師是要去平衡別人的利益,甚至會調整別人的利益的。一旦架構師是全心全意的為別人的利益服務,自然而然的架構師就擁有了強有力的影響力,肯定會是乙個leader。但是只是民意上的leader是沒有用的,不能完全發揮架構師的能量。架構畢竟解決的還是人的利益問題,成本越低越好,這個成本當然是長期總體成本,不是眼前的短期成本。
我們真正想快速的完成**工作,就要克服自己對時間的恐懼,真正的去研究業務的問題,相關stakeholder的利益,把這個變成我們的習慣。寫**的時候讓該出現邏輯的地方出現邏輯,讓不該出現的地方不能出現。
技術總是在人類解決對業務的要求不斷提高的情況下產生,目的也是為了獲取更大更好的利益。技術是為了解決業務的問題而產生的,沒有了業務,技術就沒有了存在的前提。有了更好的技術,效率更差的技術,就會慢慢的被淘汰,消失,一切都遵從人類的利益訴求——也就是業務。
《架構漫談》系列的部落格有九篇,篇篇是經典。對於我這種還沒有走出學校,走向社會的學生來說,這些部落格對我來說很重要,十分感謝作者的辛勤勞動,閱讀這些部落格為我將來的職業道路打下了基礎 ,並為我指明了前進的方向。
對軟體的認識
1.軟體的定義 我們都知道軟體作為資訊化的核心,在個人學習 生活 娛樂,社會管理,國家經濟軍事的發展中都起到了至關重要的推動作用。他的發展速度及帶來的巨變都令人驚呼。那麼這種高投入 高產出 低能耗 無汙染的 軟體 到底是什麼呢?在大多數人的普遍認識中軟體或許就是程式設計人員通過 來實現電腦中的乙個可...
軟體架構 SOA架構的認識分析
soa基礎理解 soa即面向服務架構 service oriented architecture 也透露著 分層思想 其中 服務 為可 分層的服務 上層服務使用下層單元提供的服務 類似於 計算機網路的分層架構 參考其他的文章,將 服務 分為 應用服務 原子服務 組合服務,業務服務,無論怎樣分類,都要...
SDN 簡述對SDN架構的認識
sdn的全稱是software defined networking,即軟體定義網路。sdn是在物理上網路控制平面和 平面 資料平面 相分離 控制平面控制多個裝置 網路底層抽象 邏輯上控制集中 可程式設計的新型網路架構。在sdn架構中,我們無須了解底層網路的情況,通過集中化控制平台 編排器就可對網路...