架構究竟是什麼?

這是我參與8月更文挑戰的第9天,活動詳情查看:8月更文挑戰程序員

每一位程序員都有一顆成爲架構師的心。好多人都在問,架構究竟是什麼?後端

本文來展開探討一下~微信

一、架構與框架的區別

架構有不少說法,例如:markdown

1)開源系統(MySQL、Nginx)架構架構

2)大公司架構實現(支付寶、微信)框架

那二者的區別是什麼呢?post

  • 架構:架構自己不是軟件,而是關於軟件如何設計的策略。是有關軟件總體結構與組件的抽象描述,用於指導大型軟件系統各個方面的設計。學習

  • 框架:面向特定領域的、可複用的「半成品」軟件,它實現了該領域的共性基礎部分,並提供了一些定義良好的可變點以保證靈活性和可擴展性。是領域內、特定語言和技術的架構應用解決方案。優化

總結:架構關注的是「結構」,框架關注的是「規範」spa

框架是軟件,目的是抽象通用化高效解決問題;架構是軟件的抽象解決方案,目的是便於進行大局拆解與局部細化。

二、架構是什麼?

軟件架構(Software Architecture)

有關軟件總體結構與組件的抽象描述,用於指導大型軟件系統各個方面的設計。

--來自維基百科

系統是由一羣關聯個體的組成的,系統中的個體須要「根據某種規則」協做,架構須要明確這種協做規則。

架構=骨架、結構,來源於建築學。前者揭示架構中內在的支撐物,後者則代表架構關心支撐物相互結合的某種構造方式。

爲何會出現架構設計?

主要可概括爲如下幾個緣由:

1)業務需求多,並且易變

2)軟件系統愈來愈複雜

3)參與的人愈來愈多

4)跨項目共性/特殊性的問題愈來愈多

5)技術發展日異月新

基於以上多種因素,致使系統維護成本愈來愈高:

1)系統規模龐大、內部耦合嚴重,開發效率低;

2)系統耦合嚴重,牽一髮動全身,後續修改和擴展困難;

3)系統邏輯複雜,容易出問題,出問題後很難排查和修復。

三、架構的目的是什麼?

爲了解決軟件系統複雜度帶來的問題。

其終極目標是:用最小的人力成原本知足構建和維護系統的需求

架構設計的好處有哪些?

1)作到心中有數,而不是一頭霧水(「新手」架構師)

2)有的放矢,而不是貪大求全(「老鳥」架構師)

一些 Case:

「咱們的系統必定要可以支撐到 QPS 10w+...」

「微信朋友圈的架構就是這麼作的,咱們也這樣來吧...」

「Docker 如今很熱,咱們的架構應該將 Docker 引入進來...」

總結

隨着業務的發展,跨系統架構設計必將成爲咱們重要的解決難題,屆時可能須要從新優化設計。咱們指望一張很大的架構圖,囊括全部的業務相關的設計,事實上若是不深刻了解業務,架構圖就是紙上談兵。

架構的本質在於合理,合理表現爲兩個方面:

1)提升效率:用更少的人力承接更多的工做

2)下降預算:用更少的機器承接更多的任務

🎉 關注公衆號 | 架構精進之路,即時獲取更新

  • 本人十年後端研發經驗,任職架構師,曾「混跡」多個互聯網大廠,專一軟件架構技術研究學習,但願可以不斷沉澱、學習以及分享,將本身工做中的問題和技術總結輸出,分享影響到更多的人;

  • 公衆號專一:軟件架構研究,技術學習與職業成長。內容涵蓋:系統架構應用匯總、消息中間件、MySQL 實用探祕、職業認知升級 四大模塊,你們能夠在公衆號底部菜單「精選專題」裏隨時查閱;

  • 你們看個人公衆號頭像圖片像是一個陀螺,實際上是寓意螺旋式上升,讓技術和自我可以不斷精進。

Thanks for reading!

相關文章
相關標籤/搜索