沒有一種架構是能夠知足全部迭代的需求的
架構並非只限於技術選型
是架構設計做爲軟件生命週期的一部分,並非說開始的時候 設計完成後就會一成不變,軟件的生命週期包含了迭代、維護、重構等過程,架構設計亦是如此,因此說架構是須要變化的,目的就是適應當前狀況的開發場景。css
而架構產生的時間,一定是受到當時的約束條件,如人力、團隊技術積累、時間、業務定位等等需求。因此,當前架構可能並不能知足將來的需求,咱們要開放對待這個問題,只要當前的架構符合必定的設計原則,將來進行架構的演進就不是問題。前端
「架構」這個詞解釋也沒有一個明確的定義,每一個層級,每一個場景都有本身的解釋,因此到底什麼是架構呢?後端
軟件架構(software architecture),是一系列相關的抽象模式,用於指導大型軟件系統各個方面的設計。 -摘自百度百科
其實軟件開發和蓋一棟大樓同樣,都須要規劃、設計、實施等一系列的階段,最開始設計建築圖紙,主體架構,還要考慮綠化、材料、安全等因素。通過一系列的決策,纔有一套成熟的建築施工方案,按照規範建造,才能保證質量和速度。設計模式
而開發一個軟件或前端工程也是一個「建築」的過程,咱們要經過業務來定位系統間的關係,討論技術棧和框架的選用,根據當前團隊的技術水平進行技術的選型、考慮各個模塊間的界限和交互,上線部署策略,問題回滾策略等一系列的決策才能設計出符合當前狀況的技術架構。安全
大致來看基本要求點以下:架構
【因地制宜】應該是開始設計架構的基本準則,每套架構的產生都有他的外界因素影響,因此,各個公司,各個團隊之間的架構不能照搬,若是強制搬過來,可能會拔苗助長,就像你那 alibaba 的技術架構去搬到 初創 公司,那是根本行不通的,人員,資源不匹配,是沒辦法去實施架構的。框架
所以咱們在項目前端開發的生命週期中指望的架構應該具備哪些要點呢?組件化
設計須要進行一系列的技術及非技術的相關工做優化
不一樣的架構師可能會有不一樣的觀點,可是能被人大多數架構師認同的有一下三點編碼
設計過少則爲設計不足,會使一個框架的伸縮性和擴展性不強,不能靈活的面對即將產生的業務需求的迭代。
設計過分也不必定是件好事,針對將來的技術框架或者需求的變動,咱們不能保證目前的架構就必定能兼容這些變化,過分設計反而會讓咱們一會的架構重構產生不少無用的開發變動,增長成本反而得不到相應的輸出價值。
適應環境可以生存下來的物種,並非那些最強的,也不是最聰明的,而是那些對變化作出快速反映的。 -達爾文
演進事架構是指在開發過程當中,預先設計好重要的部分如系統模塊通訊,功能模塊劃分,具體組件顆粒度等,而後在編碼過程當中,再進行細顆粒度的劃分,遇到不適合的地方,進行快速的反應,找到最優解,最理想的狀態是,20%的計劃,80%的演進設計
持續性和演進式有必定的共同性,演進式的目標是在開發過程當中進行架構的細化,持續性則指在迭代過程當中進行框架的進階,在迭代過程當中,不免會出現架構不符合當前情況的狀況,咱們要靈活應對,進行持續性的優化,這樣才能在迭代開發過程當中,作到最優框架的目的
【延遲決策】有時候「拖延症」也並不必定是壞處,哈哈,開個玩笑,在咱們設計架構的時候,會經歷一系列的方向決策,可是一個框架的發展並非老是一路順風,當遇到演進方向決策的時候,沒有找到最優解,咱們能夠進行延遲決策,等等,也許就會有答案,這樣也許會比當時匆忙作出的決定要更符合預期。
不一樣階段構成架構的因素是不一樣的,基於這個思路,架構設計能夠分爲四個層級
1.系統級
對於其餘業務系統,咱們該如何設計之間的通訊、協做、交互。好比A系統承載了內容庫模塊,B系統須要用其中的選擇內容組件,咱們設計了一套csi。去託管通訊
2.應用級
應用級是指多個子應用直接的關係設計,多是子應用,子模塊,lib包、共享模塊等,也就是架構設計的進一步細化
3.模塊級
模塊級是深刻到子應用的級別的層次,顆粒度更加細化,包含一些設計模式和UI層面的規定,好比,單項仍是雙向數據流,採用的UI模板,公共css等
4.代碼級
代碼級的層級用於規範開發人員的代碼,提升代碼質量,此層次要作的工做有:
【小結】
本文在做爲一個引子,先介紹了對於架構的一個認知,簡單的說明了在開發過程當中咱們須要怎樣的步驟去設計一個架構,以及架構設計中咱們應該注意什麼,及架構設計者應該關注的層次,接下來的文章會更深刻的介紹下前端架構
持續更新
關注一波哦~