软件工程中技术架构和组织架构的关系
一、 軟件工程中技術(shù)架構(gòu)和組織架構(gòu)的關(guān)系
不知道你有沒有觀察過:通常系統(tǒng)架構(gòu)和組織架構(gòu)是相似的。比如說前后端分離的架構(gòu),那么在組織上一般也會分前端組和后端組;而微服務(wù)架構(gòu),則分組是和服務(wù)相關(guān)的,可能一個組就是負責(zé)一個微服務(wù)。
其實組織架構(gòu)和技術(shù)架構(gòu)相似這個現(xiàn)象不是偶然的,這個現(xiàn)象背后有個定律叫康威定律 (Conway’s Law)。康威(Melvin Conway)博士在 1967 年提交的一篇論文《How Do Committees Invent?》中最有名的一句話是:
Organizations which design systems are constrained to produce systems which are copies of the communication structures of these organizations. — Melvin Conway
如果對這句話翻譯一下,它的意思是:
你設(shè)計的軟件系統(tǒng)架構(gòu),會以某種方式反映出構(gòu)建軟件背后團隊的組織架構(gòu),你在設(shè)計軟件的系統(tǒng)架構(gòu)時,同時也在設(shè)計你的組織架構(gòu),反之亦然。也可以簡單理解為:組織架構(gòu)的設(shè)計等同于系統(tǒng)架構(gòu)的設(shè)計。
如果你拿康威定律去驗證你現(xiàn)在的團隊組織架構(gòu),或者你熟悉的其他團隊的組織結(jié)構(gòu),你會發(fā)現(xiàn)運行良好的項目,都很好地符合這條定律。那些大型復(fù)雜的單體軟件系統(tǒng),背后也對應(yīng)著一個龐大的開發(fā)團隊,那些應(yīng)用微服務(wù)的項目,背后都是一個個的小組。
看完康威定律再回過頭來看微服務(wù),你會發(fā)現(xiàn),微服務(wù)架構(gòu)的設(shè)計,不僅僅是一個對服務(wù)拆分的架構(gòu)設(shè)計,同時也是對組織架構(gòu)拆分的設(shè)計。
當(dāng)你在設(shè)計系統(tǒng)架構(gòu)的同時,把組織架構(gòu)的設(shè)計也考慮進去,很多問題也就迎刃而解了。比如說你開發(fā)團隊 30 個人,要使用微服務(wù)的架構(gòu),那么拆成 3~5 個微服務(wù)是比較合適的。因為每個小組 10 個人左右,每個小組維護 1~3 個微服務(wù),是相對比較合適的配比。
然后你再看那些應(yīng)用微服務(wù)失敗的案例,比如說一個小開發(fā)團隊,做出 100 多個微服務(wù)的架構(gòu),那團隊維護這些服務(wù)的成本一定是相當(dāng)高的,最終會難以維持。
還有一些傳統(tǒng)大型企業(yè),團隊構(gòu)成是按工種劃分成不同團隊的,開發(fā)一個團隊、測試一個團隊、運維一個團隊,那么推行微服務(wù)阻力會非常大,因為這樣的組織結(jié)構(gòu)和微服務(wù)的組織結(jié)構(gòu)是不兼容的。
對于微服務(wù)的組織結(jié)構(gòu),需要按服務(wù)劃分團隊,團隊成員有開發(fā)、測試和運維,一起組成一個小團隊,圍繞著服務(wù)不斷迭代,這樣效率是最高的。
總結(jié)
-
站在軟件工程的角度去看技術(shù):技術(shù)服務(wù)于架構(gòu)設(shè)計,架構(gòu)設(shè)計服務(wù)于業(yè)務(wù),業(yè)務(wù)服務(wù)于商業(yè)。也就是本質(zhì)上來說,技術(shù)是為項目服務(wù)的工具。
-
不管是現(xiàn)在還是將來,你總是免不了要去面對新技術(shù)。從技術(shù)角度去看新技術(shù),也許你會興奮,也許你會抵觸,但是如果你跳出技術(shù)角度之外,站在軟件工程的角度去看新興技術(shù),你會有不一樣的收獲。
-
技術(shù)架構(gòu)等同于組織架構(gòu),當(dāng)你在設(shè)計系統(tǒng)架構(gòu),你同時也在設(shè)計你的組織架構(gòu),反之亦然。當(dāng)你糾結(jié)微服務(wù)的拆分粒度,不妨看看你的組織架構(gòu)是不是能和微服務(wù)架構(gòu)匹配。
-
最后,技術(shù)是工具。技術(shù)服務(wù)于架構(gòu)設(shè)計,架構(gòu)設(shè)計服務(wù)于業(yè)務(wù),業(yè)務(wù)服務(wù)于商業(yè)。對新技術(shù),保持學(xué)習(xí)和了解,知道新技術(shù)能為你解決項目中什么問題,就像工具一樣,選擇合適的技術(shù),讓技術(shù)為架構(gòu)服務(wù)。
總結(jié)
以上是生活随笔為你收集整理的软件工程中技术架构和组织架构的关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件服务工程课程总结
- 下一篇: 5G NR室分共享覆盖解决方案