什么是架構(gòu)
架構(gòu)概念很大,根據(jù)軟件研發(fā)的一般生命周期來(lái)看耀怜,主要有業(yè)務(wù)架構(gòu)恢着、應(yīng)用架構(gòu)、技術(shù)架構(gòu)财破、部署架構(gòu)掰派,架構(gòu)人員需要全程主導(dǎo)這個(gè)過(guò)程,完成系統(tǒng)的總體架構(gòu)落地左痢,具體來(lái)看各個(gè)階段的架構(gòu)工作側(cè)重點(diǎn)有所差異靡羡,同時(shí)相互聯(lián)系。
業(yè)務(wù)架構(gòu):
來(lái)源于業(yè)務(wù)需求俊性,涉及需求治理略步,其與項(xiàng)目管理密不可分,主要管理模式有傳統(tǒng)瀑布式(需求文檔驅(qū)動(dòng))定页、精益敏捷式(專題故事驅(qū)動(dòng))趟薄,需求分析最終產(chǎn)出業(yè)務(wù)架構(gòu),架構(gòu)人員參與該過(guò)程典徊,對(duì)接業(yè)務(wù)人員對(duì)需求進(jìn)行分門別類杭煎,整理清楚各個(gè)業(yè)務(wù)范圍的關(guān)聯(lián)關(guān)系,做到引導(dǎo)和滿足業(yè)務(wù)人員合理訴求卒落,同時(shí)以架構(gòu)人員的經(jīng)驗(yàn)設(shè)計(jì)擴(kuò)展性預(yù)留羡铲,具體操作上可以使用DDD(領(lǐng)域驅(qū)動(dòng))方法論進(jìn)行操作,該階段架構(gòu)人員的產(chǎn)出相關(guān)的業(yè)務(wù)架構(gòu)圖导绷,顆粒度上達(dá)到業(yè)務(wù)模塊比較合適犀勒。
本階段的難點(diǎn)在于業(yè)務(wù)訴求中的不合理、不清楚以及業(yè)務(wù)人員沒(méi)想到的業(yè)務(wù)點(diǎn)妥曲,作為架構(gòu)人員需要引導(dǎo)贾费、識(shí)別及補(bǔ)充,最終幫助業(yè)務(wù)人員實(shí)現(xiàn)業(yè)務(wù)價(jià)值的書面化體現(xiàn)檐盟、系統(tǒng)化的轉(zhuǎn)化以及業(yè)務(wù)實(shí)施規(guī)劃的落地褂萧,甚至需要能滿足業(yè)務(wù)人員的匯報(bào)訴求。
應(yīng)用架構(gòu):
根據(jù)業(yè)務(wù)架構(gòu)設(shè)計(jì)葵萎,結(jié)合現(xiàn)有的基礎(chǔ)設(shè)施导犹、中間件唱凯、存儲(chǔ)方案及數(shù)據(jù)流向,設(shè)計(jì)出應(yīng)用的多層架構(gòu)圖谎痢,這部分是最重要磕昼,也是最復(fù)雜的,對(duì)于每個(gè)層节猿,在復(fù)雜場(chǎng)景下票从,各個(gè)層內(nèi)部還需要再進(jìn)行架構(gòu)設(shè)計(jì),比如存儲(chǔ)層是否需要做讀寫分離滨嘱,是否需要做多級(jí)存儲(chǔ)峰鄙,接入層是否需要做限流、安全設(shè)計(jì)太雨,前端展示層是否需要做緩存吟榴、CDN加速等等。
應(yīng)用架構(gòu)設(shè)計(jì)還需要識(shí)別出本系統(tǒng)相關(guān)交互外系統(tǒng)的接口囊扳、交互方式吩翻、數(shù)據(jù)規(guī)范等問(wèn)題并進(jìn)行設(shè)計(jì)解決。
本階段的難點(diǎn)在于對(duì)業(yè)務(wù)架構(gòu)的理解程度及對(duì)業(yè)務(wù)發(fā)展的預(yù)判宪拥,需要有業(yè)務(wù)行業(yè)經(jīng)驗(yàn)及技術(shù)實(shí)戰(zhàn)經(jīng)驗(yàn)仿野,同時(shí)對(duì)公司現(xiàn)有運(yùn)維保障能力、技術(shù)中間件的成熟程度有充分的把握她君。
技術(shù)架構(gòu):
相比應(yīng)用架構(gòu),技術(shù)架構(gòu)的側(cè)重點(diǎn)在于解決應(yīng)用層相關(guān)設(shè)計(jì)的技術(shù)實(shí)現(xiàn)問(wèn)題葫哗,需要分兩個(gè)層面來(lái)看缔刹,第一整體的技術(shù)棧,比如做服務(wù)化是在用SpringCloud全家桶還是用Dubbo劣针,用SpringCloud使用Spring cloud Alibaba 還是 Spring cloud Netflix校镐,這個(gè)根據(jù)團(tuán)隊(duì)的技術(shù)棧進(jìn)行匹配,架構(gòu)師需要主導(dǎo)這個(gè)部分的架構(gòu)選型捺典,過(guò)程可以進(jìn)行評(píng)審鸟廓,綜合各方面的實(shí)際情況,推薦阿里李運(yùn)華的《從零開始學(xué)架構(gòu)》書中分享的案例操作方式襟己,選出風(fēng)險(xiǎn)小的引谜、能滿足現(xiàn)階段的方案進(jìn)行演進(jìn)。第二方面擎浴,對(duì)于局部性的技術(shù)架構(gòu)员咽,比如需要做多級(jí)緩存又不想做的太復(fù)雜,自研組件方式的贮预,需要專門來(lái)做技術(shù)方案贝室,可以有架構(gòu)師或者高級(jí)技術(shù)人員來(lái)設(shè)計(jì)及實(shí)現(xiàn)契讲,這部分可以可能有比較多的,需要對(duì)影響比較大進(jìn)行技術(shù)架構(gòu)階段評(píng)審去確定滑频,對(duì)于功能級(jí)別的設(shè)計(jì)可以放到項(xiàng)目實(shí)施過(guò)程中詳細(xì)設(shè)計(jì)階段進(jìn)行捡偏。
本階段的難點(diǎn)是架構(gòu)人員技術(shù)廣度和深度,對(duì)技術(shù)方案表達(dá)能力峡迷、演講能力银伟,以及高級(jí)技術(shù)人員的方案的指導(dǎo)評(píng)審能力。
部署架構(gòu):
部署架構(gòu)需要解決系統(tǒng)在目前網(wǎng)絡(luò)環(huán)境下的高可用部署凉当,主要需要考慮容災(zāi)能力枣申、動(dòng)態(tài)擴(kuò)容能力、安全管控能力以及運(yùn)維部門的保障能力看杭。
本階段的難點(diǎn)是了解清楚公司目前的資源能力及保障能力忠藤,做出可實(shí)施的預(yù)案,有條件的可以進(jìn)行演練楼雹,提高操作熟練度模孩。
以上的架構(gòu)階段是軟件產(chǎn)品的一般研發(fā)流程需要有的,各個(gè)階段的架構(gòu)設(shè)計(jì)相互影響贮缅,需要通盤考慮榨咐,各個(gè)階段的工作也需要相關(guān)方的參與評(píng)審,需要注重架構(gòu)人員的溝通協(xié)調(diào)能力谴供,同時(shí)向領(lǐng)導(dǎo)層獲取資源的能力块茁。