有關(guān)架構(gòu)設(shè)計(jì)的概念和本質(zhì),不知道大家了解多少?其實(shí)在IT行業(yè),大家對于架構(gòu)肯定不陌生了。然而關(guān)于架構(gòu)設(shè)計(jì)的概念和本質(zhì),還是有許多人沒有真正的理解。本文就來帶大家詳解架構(gòu)設(shè)計(jì)的概念和本質(zhì),內(nèi)容包括認(rèn)識架構(gòu)、理解架構(gòu)師崗位、架構(gòu)的分類、架構(gòu)的級別、應(yīng)用架構(gòu)的發(fā)展以及架構(gòu)設(shè)計(jì)的注意事項(xiàng)。感興趣的朋友可以一起來看看!
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的麻陽網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!1、認(rèn)識架構(gòu)
架構(gòu)的本質(zhì)是經(jīng)過系統(tǒng)性地思考,權(quán)衡利弊之后,在現(xiàn)有資源約束下的最合理決策,最終明確的系統(tǒng)骨架:,包括子系統(tǒng), 模塊, 組件。以及他們之間協(xié)作關(guān)系,約束規(guī)范,,指導(dǎo)原則。并由它來指導(dǎo)團(tuán)隊(duì)中的每個(gè)人思想層面上的一致。要全面理解架構(gòu)設(shè)計(jì)的概念,還需要掌握以下一些知識點(diǎn)的理解。
(1)系統(tǒng)與子系統(tǒng)
系統(tǒng):泛指由一群有關(guān)聯(lián)的個(gè)體組成,根據(jù)某種規(guī)則運(yùn)作,能完成個(gè)別元件不能獨(dú)立完成的工作能力的群體。子系統(tǒng):也是由一群關(guān)聯(lián)的個(gè)體組成的系統(tǒng),多半是在更大的系統(tǒng)中的一部分。
(2)模塊與組件
都是系統(tǒng)的組成部分,從不同角度拆分系統(tǒng)而已。模塊是邏輯單元,組件是物理單元。模塊就是從邏輯上將系統(tǒng)分解, 即分而治之, 將復(fù)雜問題簡單化。模塊的粒度可大可小, 可以是系統(tǒng),幾個(gè)子系統(tǒng)、某個(gè)服務(wù),函數(shù), 類,方法、 功能塊等等。組件可以包括應(yīng)用服務(wù)、數(shù)據(jù)庫、網(wǎng)絡(luò)、物理機(jī)、還可以包括MQ、容器、Nginx等技術(shù)組件。
(3)框架與架構(gòu)
框架是組件實(shí)現(xiàn)的規(guī)范,例如:MVC、MVP、MVVM等,是提供基礎(chǔ)功能的產(chǎn)品,例如開源框架:Ruby on Rails、Spring、Laravel、Django等,這是可以拿來直接使用或者在此基礎(chǔ)上二次開發(fā)??蚣苁且?guī)范,架構(gòu)是結(jié)構(gòu)。軟件架構(gòu)指軟件系統(tǒng)的頂層結(jié)構(gòu)。
2、理解架構(gòu)師崗位
系統(tǒng)架構(gòu)師是一個(gè)最終確認(rèn)和評估系統(tǒng)需求,給出開發(fā)規(guī)范,搭建系統(tǒng)實(shí)現(xiàn)的核心構(gòu)架,并澄清技術(shù)細(xì)節(jié)、掃清主要難點(diǎn)的技術(shù)人員。因此,作為主導(dǎo)系統(tǒng)全局分析設(shè)計(jì)和實(shí)施、負(fù)責(zé)軟件架構(gòu)和關(guān)鍵技術(shù)的決策者,架構(gòu)師人才需求缺口大,薪資待遇高。一般來講,架構(gòu)師的主要工作內(nèi)容是領(lǐng)導(dǎo)與協(xié)調(diào)整個(gè)項(xiàng)目中的技術(shù)活動,然后推動主要的技術(shù)決策,并最終表達(dá)為軟件構(gòu)架,接著確定和文檔化系統(tǒng)的相對構(gòu)架而言意義重大的方面,包括系統(tǒng)的需求、設(shè)計(jì)、實(shí)施和部署等“視圖”。同時(shí)還需要理解、評價(jià)并接收系統(tǒng)需求??偟膩碇v,一個(gè)合格的架構(gòu)師需要做到理解業(yè)務(wù),全局把控,選擇合適的技術(shù),解決關(guān)鍵問題、指導(dǎo)研發(fā)落地實(shí)施。
3、架構(gòu)的分類
(1)業(yè)務(wù)架構(gòu)
包括業(yè)務(wù)規(guī)劃,業(yè)務(wù)模塊、業(yè)務(wù)流程,對整個(gè)系統(tǒng)的業(yè)務(wù)進(jìn)行拆分,對領(lǐng)域模型進(jìn)行設(shè)計(jì),把現(xiàn)實(shí)的業(yè)務(wù)轉(zhuǎn)化成抽象對象。沒有最優(yōu)的架構(gòu),只有最合適的架構(gòu),一切系統(tǒng)設(shè)計(jì)原則都要以解決業(yè)務(wù)問題為最終目標(biāo),脫離實(shí)際業(yè)務(wù)的技術(shù)情懷架構(gòu)往往會給系統(tǒng)帶入大坑,任何不基于業(yè)務(wù)做異想天開的架構(gòu)都是耍流氓。所有問題的前提要搞清楚我們今天面臨的業(yè)務(wù)量有多大,增長走勢是什么樣,而且解決高并發(fā)的過程,一定是一個(gè)循序漸進(jìn)逐步的過程。合理的架構(gòu)能夠提前預(yù)見業(yè)務(wù)發(fā)展1~2年為宜。這樣可以付出較為合理的代價(jià)換來真正達(dá)到技術(shù)引領(lǐng)業(yè)務(wù)成長的效果。
(2)應(yīng)用架構(gòu)
硬件到應(yīng)用的抽象,包括抽象層和編程接口。應(yīng)用架構(gòu)和業(yè)務(wù)架構(gòu)是相輔相成的關(guān)系。業(yè)務(wù)架構(gòu)的每一部分都有應(yīng)用架構(gòu)。應(yīng)用作為獨(dú)立可部署的單元,為系統(tǒng)劃分了明確的邊界,深刻影響系統(tǒng)功能組織、代碼開發(fā)、部署和運(yùn)維等各方面. 應(yīng)用架構(gòu)定義系統(tǒng)有哪些應(yīng)用、以及應(yīng)用之間如何分工和合作。這里所謂應(yīng)用就是各個(gè)邏輯模塊或者子系統(tǒng)。
(3)數(shù)據(jù)架構(gòu)
數(shù)據(jù)架構(gòu)指導(dǎo)數(shù)據(jù)庫的設(shè)計(jì). 不僅僅要考慮開發(fā)中涉及到的數(shù)據(jù)庫,實(shí)體模型,也要考慮物理架構(gòu)中數(shù)據(jù)存儲的設(shè)計(jì)。
(4)代碼架構(gòu)
子系統(tǒng)代碼架構(gòu)主要為開發(fā)人員提供切實(shí)可行的指導(dǎo),如果代碼架構(gòu)設(shè)計(jì)不足,就會造成影響全局的架構(gòu)設(shè)計(jì)。比如公司內(nèi)不同的開發(fā)團(tuán)隊(duì)使用不同的技術(shù)?;蛘呓M件,結(jié)果公司整體架構(gòu)設(shè)計(jì)就會失控。
(5)技術(shù)架構(gòu)
確定組成應(yīng)用系統(tǒng)的實(shí)際運(yùn)行組件,這些運(yùn)行組件之間的關(guān)系,以及部署到硬件的策略。技術(shù)架構(gòu)主要考慮系統(tǒng)的非功能性特征,對系統(tǒng)的高可用、高性能、擴(kuò)展、安全、伸縮性、簡潔等做系統(tǒng)級的把握。系統(tǒng)架構(gòu)的設(shè)計(jì)要求架構(gòu)師具備軟件和硬件的功能和性能的過硬知識,這也是架構(gòu)設(shè)計(jì)工作中最為困難的工作。
(6)總結(jié)
架構(gòu)分類可細(xì)分為業(yè)務(wù)架構(gòu)、應(yīng)用架構(gòu)、技術(shù)架構(gòu), 代碼架構(gòu), 部署架構(gòu)。業(yè)務(wù)架構(gòu)是戰(zhàn)略,應(yīng)用架構(gòu)是戰(zhàn)術(shù),技術(shù)架構(gòu)是裝備。其中應(yīng)用架構(gòu)承上啟下,一方面承接業(yè)務(wù)架構(gòu)的落地,另一方面影響技術(shù)選型。熟悉業(yè)務(wù),形成業(yè)務(wù)架構(gòu),根據(jù)業(yè)務(wù)架構(gòu),做出相應(yīng)的應(yīng)用架構(gòu),最后技術(shù)架構(gòu)落地實(shí)施。如何針對當(dāng)前需求,選擇合適的應(yīng)用架構(gòu),如何面向未來,保證架構(gòu)平滑過渡,這個(gè)是軟件開發(fā)者,特別是架構(gòu)師,都需要深入思考的問題。
4、架構(gòu)的級別
架構(gòu)的級別分別是系統(tǒng)級、應(yīng)用級、模塊級和代碼級。系統(tǒng)級即整個(gè)系統(tǒng)內(nèi)各部分的關(guān)系以及如何治理分層;應(yīng)用級即單個(gè)應(yīng)用的整體架構(gòu),及其與系統(tǒng)內(nèi)單個(gè)應(yīng)用的關(guān)系等;模塊級即應(yīng)用內(nèi)部的模塊架構(gòu),如代碼的模塊化、數(shù)據(jù)和狀態(tài)的管理等;代碼級即從代碼級別保障架構(gòu)實(shí)施。
5、應(yīng)用架構(gòu)的發(fā)展
從本質(zhì)上來看,業(yè)務(wù)架構(gòu)是生產(chǎn)力,應(yīng)用架構(gòu)是生產(chǎn)關(guān)系,技術(shù)架構(gòu)是生產(chǎn)工具。業(yè)務(wù)架構(gòu)決定應(yīng)用架構(gòu),應(yīng)用架構(gòu)需要適配業(yè)務(wù)架構(gòu),并隨著業(yè)務(wù)架構(gòu)不斷進(jìn)化,同時(shí)應(yīng)用架構(gòu)依托技術(shù)架構(gòu)最終落地。架構(gòu)發(fā)展路程,即從單體應(yīng)用到分布式應(yīng)用服務(wù)化,最后到微服務(wù)。
6、架構(gòu)設(shè)計(jì)的注意事項(xiàng)
(1)業(yè)務(wù)開發(fā)人員也需要關(guān)注架構(gòu)設(shè)計(jì)。
架構(gòu)的再好,最終還是需要代碼來落地,并且組織越大這個(gè)落地的難度越大。不單單是系統(tǒng)架構(gòu),每個(gè)解決方案每個(gè)項(xiàng)目也由自己的架構(gòu),如分層、設(shè)計(jì)模式等。如果每一塊磚瓦不夠堅(jiān)固,那么整個(gè)系統(tǒng)還是會由崩塌的風(fēng)險(xiǎn)。
(2)架構(gòu)設(shè)計(jì)并不是一開始就很完美。
世上沒有最好架構(gòu),只有最合適的架構(gòu),不要企圖一步到位。我們需要的不是一下子造出一輛汽車,而是從單輪車→自行車→摩托車,最后再到汽車。想象一下2年后才能造出的產(chǎn)品,當(dāng)初市場還存在嗎?
(3)不要為虛無的未來而過度設(shè)計(jì)。
在創(chuàng)業(yè)公司初期,業(yè)務(wù)場景和需求邊界很難把握,產(chǎn)品需要快速迭代和變現(xiàn),需求頻繁更新,這個(gè)時(shí)候需要的是快速實(shí)現(xiàn)。不要過多考慮未來的擴(kuò)展,說不定功能做完,效果不好就無用了。如果業(yè)務(wù)模式和應(yīng)用場景邊界都已經(jīng)比較清晰,是應(yīng)該適當(dāng)?shù)目紤]未來的擴(kuò)展性設(shè)計(jì)。
(4)架構(gòu)技術(shù)是為業(yè)務(wù)而存在的。
不要為了技術(shù)而技術(shù),在技術(shù)選型和架構(gòu)設(shè)計(jì)中,脫離網(wǎng)站業(yè)務(wù)發(fā)展的實(shí)際,一味追求時(shí)髦的新技術(shù),可能會將技術(shù)發(fā)展引入崎嶇小道,架構(gòu)之路越走越難。考慮實(shí)現(xiàn)成本、時(shí)間、人員等各方面都要綜合考慮,理想與現(xiàn)實(shí)需要折中。
以上就是有關(guān)架構(gòu)設(shè)計(jì)的概念和本質(zhì)學(xué)習(xí)的全部內(nèi)容了,不知道大家都看懂了沒有。其實(shí)對于許多技術(shù)從業(yè)者來講,架構(gòu)師不失為一個(gè)很好的發(fā)展方向。如果大家對于架構(gòu)設(shè)計(jì)有更深入的學(xué)習(xí)興趣,不妨上創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊了解更多關(guān)于架構(gòu)設(shè)計(jì)的知識吧。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。