- 高可用可伸縮微服務(wù)架構(gòu):基于Dubbo、Spring Cloud和Service Mesh
- 程超 梁桂釗 秦金衛(wèi) 方志斌 張逸等
- 1660字
- 2019-07-26 18:50:57
1.3 從軟件的生命周期看架構(gòu)設(shè)計(jì)
一個(gè)典型的軟件生命周期如圖1-2所示。

圖1-2
可以把這些階段概括為3個(gè)大的周期:設(shè)計(jì)期(包括立項(xiàng)、計(jì)劃、技術(shù)選型與方案等)、實(shí)現(xiàn)期(包括開發(fā)、測(cè)試、發(fā)布、實(shí)施等)、運(yùn)行期(或維護(hù)期,包括修復(fù)bug、新增功能、多版本維護(hù)等)。
1.設(shè)計(jì)期
在設(shè)計(jì)期,軟件作為一個(gè)成品還不存在,所以我們可以稱之為概念形態(tài)。此時(shí)架構(gòu)師、產(chǎn)品經(jīng)理或需求分析師等人員利用自己的經(jīng)驗(yàn)和能力,對(duì)系統(tǒng)的業(yè)務(wù)需求進(jìn)行分析、拆解、抽象,對(duì)系統(tǒng)的非功能性需求進(jìn)行分析,形成業(yè)務(wù)文檔和技術(shù)文檔,以及技術(shù)驗(yàn)證代碼等。這個(gè)階段,架構(gòu)設(shè)計(jì)工作是重中之重,其中包括:
● 系統(tǒng)拆分,如何把系統(tǒng)拆解為不同的子系統(tǒng)、模塊、業(yè)務(wù)單元;
● 技術(shù)選型,使用什么樣的基礎(chǔ)技術(shù)框架或腳手架;
● 技術(shù)驗(yàn)證,確定核心技術(shù)難點(diǎn)如何解決,檢驗(yàn)?zāi)芊駶M足期望指標(biāo);
● 接口規(guī)范,系統(tǒng)內(nèi)部的不同部分以何種形式確定接口契約和數(shù)據(jù)通信方式;
● 集成方式,系統(tǒng)與外部其他業(yè)務(wù)系統(tǒng)如何進(jìn)行集成;
● 技術(shù)規(guī)范,如何規(guī)范開發(fā)、測(cè)試、部署和運(yùn)維的技術(shù)標(biāo)準(zhǔn)性;
● 部署方案,系統(tǒng)如何進(jìn)行物理部署,需要多少臺(tái)機(jī)器、什么配置,對(duì)網(wǎng)絡(luò)有什么要求;
● 運(yùn)維方案,系統(tǒng)如何進(jìn)行技術(shù)性運(yùn)維,如何實(shí)現(xiàn)日常監(jiān)控、預(yù)警報(bào)警;
……
這個(gè)階段總結(jié)一下就是:需求導(dǎo)向,架構(gòu)先行(包括業(yè)務(wù)架構(gòu)和技術(shù)架構(gòu))。很多項(xiàng)目因?yàn)榍捌诘脑O(shè)計(jì)階段考慮得不夠充分,導(dǎo)致在開發(fā)和運(yùn)行期出現(xiàn)大量問(wèn)題。
2.實(shí)現(xiàn)期
這個(gè)階段主要是編碼與測(cè)試,為部署上線做好準(zhǔn)備,是軟件從設(shè)計(jì)到最終的生產(chǎn)系統(tǒng)的過(guò)程,我們可以稱之為代碼形態(tài)。此階段需要考慮的技術(shù)類工作如下:
● 確保各項(xiàng)技術(shù)規(guī)范和技術(shù)指標(biāo)的執(zhí)行落地,保障高質(zhì)量的代碼;
● 指導(dǎo)研發(fā)人員和解決各類技術(shù)問(wèn)題,提升研發(fā)團(tuán)隊(duì)效率;
● 制定測(cè)試的技術(shù)性方案和基準(zhǔn),包括自動(dòng)化、性能、安全等方面;
● 配合準(zhǔn)備部署環(huán)境,運(yùn)維實(shí)施方案落地等;
實(shí)現(xiàn)期的主要任務(wù)是大量軟件工程師根據(jù)設(shè)計(jì)期的設(shè)計(jì)進(jìn)行編碼。大量的技術(shù)人員,大家背景不同,知識(shí)儲(chǔ)備不同,編程水平和習(xí)慣不同,努力程度不同。如何讓所有工程師既能夠按數(shù)量保障項(xiàng)目進(jìn)度,又能夠按質(zhì)量保障軟件品質(zhì)呢?秘訣就在于:技術(shù)標(biāo)準(zhǔn)的精確統(tǒng)一,系統(tǒng)部件的良好拆分,此外最好有適合于此類項(xiàng)目的腳手架,隨時(shí)能解決各位技術(shù)難點(diǎn)問(wèn)題的“救火隊(duì)”。系統(tǒng)部件的良好拆分,保障了任務(wù)可以拆散成一個(gè)個(gè)的小單元,分發(fā)給不同的開發(fā)者。技術(shù)標(biāo)準(zhǔn)的精確統(tǒng)一,可以實(shí)現(xiàn)不同個(gè)體的產(chǎn)出物最大程度的一致性。
這個(gè)時(shí)期因?yàn)闃I(yè)務(wù)調(diào)整或技術(shù)問(wèn)題,可能會(huì)對(duì)架構(gòu)設(shè)計(jì)的一些細(xì)節(jié)進(jìn)行小范圍的調(diào)整,以適應(yīng)實(shí)際項(xiàng)目的建設(shè)需要。在這個(gè)過(guò)程中,同時(shí)需要根據(jù)實(shí)際變化,對(duì)現(xiàn)有的設(shè)計(jì)文檔進(jìn)行同步調(diào)整,以便精確地描述系統(tǒng)的狀態(tài)及變化。
3.運(yùn)行期
這個(gè)階段系統(tǒng)上線、驗(yàn)收通過(guò),已經(jīng)初步穩(wěn)定,然后開始進(jìn)入維護(hù)階段,成為設(shè)計(jì)期架構(gòu)設(shè)計(jì)草圖的一個(gè)可用實(shí)例,我們可以稱之為實(shí)例形態(tài)。此時(shí)需要考慮:
● 發(fā)布上線相關(guān)基礎(chǔ)性工作,包括是否使用持續(xù)集成(CI)、自動(dòng)化發(fā)布等技術(shù);
● 運(yùn)維基礎(chǔ)性工作,自動(dòng)化運(yùn)維、監(jiān)控等相關(guān)技術(shù);
特別是發(fā)布與運(yùn)維工作,一般要作為整個(gè)研發(fā)團(tuán)隊(duì)的通用性基礎(chǔ)設(shè)施來(lái)考慮。不同的業(yè)務(wù)線或系統(tǒng),可以復(fù)用一套基礎(chǔ)設(shè)施來(lái)服務(wù)于生產(chǎn)環(huán)境。進(jìn)入維護(hù)期后,軟件系統(tǒng)日常通過(guò)內(nèi)外部用戶反饋的問(wèn)題和改進(jìn)意見,不時(shí)需要修改代碼發(fā)布補(bǔ)丁版本,或者調(diào)整配置以滿足用戶需要。經(jīng)過(guò)較長(zhǎng)一段時(shí)間,業(yè)務(wù)模式和內(nèi)外部環(huán)境發(fā)生了比較大的變化后,系統(tǒng)簡(jiǎn)單的補(bǔ)丁維護(hù)可能已無(wú)法滿足用戶需求,需要大范圍地添加新功能和修改舊功能的邏輯流程。此時(shí)就可以成立專門的團(tuán)隊(duì),重復(fù)上面的步驟,基于現(xiàn)有系統(tǒng)重新做一些改造性的設(shè)計(jì)重構(gòu)(設(shè)計(jì)期),再編碼實(shí)現(xiàn)(實(shí)現(xiàn)期),最終發(fā)布一個(gè)較大的版本(運(yùn)行期)。
在軟件的整個(gè)生命周期里,架構(gòu)師(或架構(gòu)組)是一個(gè)項(xiàng)目或產(chǎn)品線的技術(shù)負(fù)責(zé)人。再大一點(diǎn)的組織,比如公司或研發(fā)中心級(jí)別層面也許還有架構(gòu)部。架構(gòu)師、架構(gòu)組、架構(gòu)部在不同層面對(duì)自己工作涉及的所有技術(shù)問(wèn)題負(fù)責(zé)。其實(shí)上面羅列的這些工作匯總一下,再加上技術(shù)規(guī)劃與執(zhí)行落地、技術(shù)人才的選拔與培養(yǎng)等,可以作為項(xiàng)目組架構(gòu)師或研發(fā)團(tuán)隊(duì)架構(gòu)組的工作職責(zé)。
- DevOps for Networking
- 深入淺出Java虛擬機(jī):JVM原理與實(shí)戰(zhàn)
- aelf區(qū)塊鏈應(yīng)用架構(gòu)指南
- 游戲程序設(shè)計(jì)教程
- INSTANT Yii 1.1 Application Development Starter
- 零基礎(chǔ)看圖學(xué)ScratchJr:少兒趣味編程(全彩大字版)
- 算法設(shè)計(jì)與分析:基于C++編程語(yǔ)言的描述
- Building Business Websites with Squarespace 7(Second Edition)
- Appcelerator Titanium:Patterns and Best Practices
- INSTANT Apache Hive Essentials How-to
- HTML5與CSS3權(quán)威指南
- 從“1”開始3D編程
- Java自然語(yǔ)言處理(原書第2版)
- 軟件設(shè)計(jì)模式(Java版)
- Android項(xiàng)目實(shí)戰(zhàn):博學(xué)谷