通過閱讀架構漫談了解許多關於架構的知識,現總結如下。
多人分工組成整體為了提高效率故而產生架構。
總結一下,什麼是架構,就是:
根據要解決的問題,對目標系統的邊界進行界定。
並對目標系統按某個原則的進行切分。切分的原則,要便於不同的角色,對切分出來的部分,並行或序列開展工作,一般並行才能減少時間。
並對這些切分出來的部分,設立溝通機制。
根據3,使得這些部分之間能夠進行有機的聯絡,合併組裝成為乙個整體,完成目標系統的所有工作。
架構實際上解決的是人的問題
桌子實際上就是抽象的乙個過程。
以上通過幾個例子,討論了一下認識概念的誤區,如何有效的去認識概念,明白概念背後的含義,以及如何利用對概念的理解,快速的進行學習。掌握了這些原則,會有利於幫助我們在架構階段,快速的識別和定位問題。
一般來說,如果把真正的問題找到,那麼問題就已經解決80%了。這個能力基本上就決定了架構師的水平。
識別問題主題
1.這是誰的問題?
2.有什麼問題?
問題1會花費比較多的時間。
一旦問題1解決問題2的解決就會變得容易。
對於不能直接解決的問題,我們需要做架構的切分。即利益的調整。
切分的目的就是使各部分的工作量盡可能平均。以及工作量與利益的對等。
切分要非連續的,利益對等的並且不能超出自然人的負載。
切分不可使解決的問題發生變化。
切分過程即建模過程。
總結如下:
架構的切分的導火索是人的負載太重。
架構的切分實際就是對stakeholder的利益進行切分或合併,使得每個stakeholder的權責是對等的,每個stakeholder可以為自己的利益負責。
架構切分的最終結果都會體現在組織架構上,只有這樣才能夠讓架構落地並推進。
架構切分的結果一定是乙個樹狀,這也是為什麼會產生分層。層數越多溝通越多,效率越低,分層要越少越好。盡可能變成一顆平衡樹,才能讓整個系統的效率最大化。
軟體開發以模擬人為目標。
價效比。
軟體架構模擬人類社會分工架構。
以上通過簡單的描述計算機和軟體的發展歷史,闡明軟體的本質,其實就是通過把人類的日常工作生活虛擬化,減少成本,提公升單個人員的生產力,提公升人類自己的利益。軟體工程師的職責在這個浪潮中,不堪重負,自然而然就分拆為不同的角色,形成了乙個獨特的架構體系。這一切的背後,仍然是為了提公升人類自己的利益,解決人類自己的問題。
本篇主要討論架構需要解決的問題。
讀完本篇後感觸頗深,解決各種問題細分後十分詳細,將主題問題分析透徹將有利於問題的解決,其中還設計到內部運營以及分工合作,架構的產生分類也十分具有新意。最後坐著解釋了什麼是軟體架構,細讀之後受益很多,架構是進化出來的。
以上只是針對單一的service部署單元的分析,擴充套件開去,對於其他的部署單元也是類似的。每個單元的下一級都可以認為是repository,每個單元的上一級都可以認為是user。這些實踐在我自己的專案中都有用到,非常的有效,迭代的速度非常的快。很多人擔心business model建不好,其實沒關係,剛開始可以粗糙一點,後續可以慢慢的完善。這個架構已經隔離好了每個部分的變化對其他部分的影響,變化成本都在可控的範圍之內。
以下試著分析一下:
當技術所解決的問題和分拆出來要解決的問題,完全匹配的時候,這是最完美的。比如需要提供web要訪問的service,很多mvc的framework就可以很好的滿足這一點。而這個時候如果非要自己實現乙個,很有可能就是重新發明輪子。
當技術所提供的能力遠遠超過需要解決的問題時,往往掌握技術和維護技術會成為瓶頸。因為越複雜的技術,成本越高。如果自己實現乙個僅僅是解決當前問題的方案,可能成本反而更低。這也是為什麼很多大型的網際網路公司不斷地開源出來自己的技術的原因。而這些技術對於我們來說是否適用?他們原本是用來解決誰的問題的?什麼問題?如果不清楚這些,就冒然採用,可能會導致更高的成本。
當技術所提供的能力和我們所要解決的問題部分匹配時,還是要看成本。比如當我們需要乙個錘子的時候,手邊正好沒有,但是卻有乙隻高跟鞋,勉強也可以替代錘子。但是長期來看,這麼用不划算,因為高跟鞋的**比錘子高很多,耐用性差很多,維護成本也高很多。
所以,準確識別採用什麼技術的能力,也是架構師所要具備的能力之一。考慮的主要因素也是長期的成本和收益。
架構漫談讀後感
應老師的推薦閱讀了由資深架構師王概凱 kevin 執筆的系列專欄 架構漫談 9篇文章遞進地講述了 討論什麼是架構 怎樣做好架構 軟體架構如何落地 如何寫好程式等問題,文章生動形象多次舉通俗的例子讓本來生澀的知識變得更加容易理解,感觸頗多。對這系列文章印象的較深的一點是 一直在挖掘一些本質的東西,對一...
架構漫談讀後感
花了一周的時間利用課餘的閒散時間,總算看完了王概凱的架構漫談,這九篇部落格從相對全面的角度對架構進行了概述。自己也對架構有了更深一層的認識。感覺作者在部落格裡提到的對架構的理解對我們初學者來講幫助其實很大。架構其實就是根據要解決的問題,對目標系統的邊界進行界定,然後對目標系統按某個原則進行切分,接著...
架構漫談讀後感
這學期新開設了軟體體系架構這門課,學這門課之前架構漫談的九篇部落格進行了閱讀,對這門課以及架構設計進行了初步的認識與了解。通過對這幾篇部落格的閱讀,首先需要明白什麼是架構,在最早期,每個人有自己的生活方式,人與人之間相互獨立,不相往來,隨著慢慢的發展,男女共同生活,也就出現了各自的分工,有的人做這個...