敏捷架構(gòu)設(shè)計(jì)IAS2017互聯(lián)網(wǎng)架構(gòu)峰會(huì)_第1頁(yè)
敏捷架構(gòu)設(shè)計(jì)IAS2017互聯(lián)網(wǎng)架構(gòu)峰會(huì)_第2頁(yè)
敏捷架構(gòu)設(shè)計(jì)IAS2017互聯(lián)網(wǎng)架構(gòu)峰會(huì)_第3頁(yè)
敏捷架構(gòu)設(shè)計(jì)IAS2017互聯(lián)網(wǎng)架構(gòu)峰會(huì)_第4頁(yè)
敏捷架構(gòu)設(shè)計(jì)IAS2017互聯(lián)網(wǎng)架構(gòu)峰會(huì)_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

敏捷架構(gòu)設(shè)計(jì)汪亮亮主要內(nèi)容架構(gòu)和軟件架構(gòu)敏捷架構(gòu)設(shè)計(jì)時(shí)機(jī)軟件架構(gòu)技術(shù)債務(wù)敏捷架構(gòu)師什么是架構(gòu)?架構(gòu)架構(gòu)不敏捷敏捷會(huì)損壞架構(gòu)軟件整體結(jié)構(gòu)與抽象的描述構(gòu)筑、建造架構(gòu)定義架構(gòu)難以扭轉(zhuǎn)的決策軟件架構(gòu)軟件的高級(jí)形式和流程,與問(wèn)題領(lǐng)域無(wú)關(guān)但與預(yù)期的用戶體驗(yàn)有關(guān)架構(gòu)是寬泛的SimonBrown《SoftwareArchitectureforDevelopers》架構(gòu)反映一個(gè)系統(tǒng)成型的關(guān)鍵作用的設(shè)計(jì)決策,這里的關(guān)鍵性可以由變化決定如果您沒(méi)有付出一定程度的努力,是無(wú)法扭轉(zhuǎn)架構(gòu)決策的例子:編程語(yǔ)言是一種非常重要的決策。試想在項(xiàng)目的第一天,您選擇了Java,3個(gè)月后,您又覺(jué)得Go可能是更好的語(yǔ)言選擇。您已經(jīng)花了3個(gè)月時(shí)間編寫Java,不可能快速扭轉(zhuǎn)這一決策。軟件架構(gòu)是具體的分層架構(gòu)

事件驅(qū)動(dòng)架構(gòu)微核架構(gòu)微服務(wù)架構(gòu)云架構(gòu)PresentationLayer分層架構(gòu)ComponentComponentComponentBusinessLayerComponentComponentComponentPersistenceLayerComponentComponentComponentDatabaseLayerDBDBDB分層架構(gòu)優(yōu)點(diǎn)模擬接口,獨(dú)立測(cè)試分工明確結(jié)構(gòu)簡(jiǎn)單,容易理解開發(fā)缺點(diǎn)升級(jí)時(shí),要暫停服務(wù)功能改動(dòng)時(shí),部署麻煩擴(kuò)展性差,每層都擴(kuò)展EventProcessor事件驅(qū)動(dòng)架構(gòu)EventqueueEventMediatorEventchannelEventchannelmodulemodulemodulemoduleEventProcessormodulemodulemodulemodule事件隊(duì)列:接受事件入口分發(fā)器:把不同事件分發(fā)到不同的業(yè)務(wù)邏輯單元事件通道:分發(fā)器和處理器聯(lián)系渠道處理器:業(yè)務(wù)處理邏輯單元事件驅(qū)動(dòng)架構(gòu)優(yōu)點(diǎn)獨(dú)立卸載和加載,容易部署異步,不阻塞分布式異步,擴(kuò)展性好缺點(diǎn)異步處理,開發(fā)復(fù)雜難支持原子操作,回滾難分布和異步架構(gòu)較難以測(cè)試微核架構(gòu)

CoreSystemPlug-inComponentPlug-inComponentPlug-inComponentPlug-inComponentPlug-inComponentPlug-inComponent微核架構(gòu)優(yōu)點(diǎn)容易部署逐步增加功能功能延伸性好可定制性高缺點(diǎn)開發(fā)難度高,內(nèi)核插件通信擴(kuò)展性差,不易分布式微服務(wù)架構(gòu)UserInterfaceLayerServiceComponentmodulemodulemodulemoduleServiceComponentmodulemoduleClientRequestsClientRequestsClientRequests微服務(wù)架構(gòu)優(yōu)點(diǎn)容易部署容易開發(fā),服務(wù)組件開發(fā)易于測(cè)試,服務(wù)單獨(dú)測(cè)試擴(kuò)展性好,服務(wù)低耦合缺點(diǎn)拆分很細(xì),服務(wù)可能很多服務(wù)間通信困難難以實(shí)現(xiàn)原子操作云架構(gòu)ProcessUnitDBcalculateVirtualizedMiddlewareMessagingGridDataGridProcessingGridDeploymentManagerProcessUnitDBcalculate云架構(gòu)優(yōu)點(diǎn)高負(fù)載高擴(kuò)展性缺點(diǎn)實(shí)現(xiàn)很復(fù)雜比較難以測(cè)試軟件架構(gòu)也是架構(gòu)難以扭轉(zhuǎn)的決策難以改變的高級(jí)形式和流程敏捷架構(gòu)何時(shí)開始預(yù)先決定架構(gòu)的方方面面嗎重構(gòu)過(guò)程中自然呈現(xiàn)架構(gòu)嗎架構(gòu)會(huì)隨時(shí)間演變嗎敏捷架構(gòu)設(shè)計(jì)思路測(cè)試驅(qū)動(dòng)TDD重構(gòu)軟件架構(gòu)呈現(xiàn)開發(fā)之前決定軟件架構(gòu)不規(guī)劃所有的產(chǎn)品功能。產(chǎn)品功能無(wú)法預(yù)測(cè),軟件架構(gòu)在變,需要做好隨著改變的準(zhǔn)備開發(fā)過(guò)程中決定軟件架構(gòu)開發(fā)前構(gòu)建架構(gòu)TDD設(shè)計(jì)軟件架構(gòu)了解用戶和產(chǎn)品如何交互,確定用戶預(yù)期體驗(yàn),進(jìn)而確定軟件的架構(gòu)石頭剪刀布游戲-初版需求故事:Feature:PlayScenario:Rockv.ScissorsGivenplayeronethrowsrockAndplayertwothrowsscissorsThenplayeronewinds并未提供充足的有關(guān)用戶預(yù)期體驗(yàn)的信息。玩家一和玩家二出石頭和剪刀,動(dòng)作輸入后查看贏家?是使用應(yīng)用玩游戲?石頭剪刀布游戲-升級(jí)需求故事:Feature:PlayScenario:Rockv.ScissorsGivenplayeronethrowsrockinreallifeAndplayertwothrowsscissorsinreallifeWhenoneofthementersthethrowsintotheapplicationThentheapplicationtellsthemthattheplayeronewinsRockScissorsPlay!P1P2Step1:EnterthrowsStep2:Click“Play!”PlayeronewinsStep3:seeoutcome石頭剪刀布游戲-變更需求故事:Feature:PlayScenario:Rockv.ScissorsGivenplayeronesubmitsa“rock”throwWhenplayertwosubmitsa“scissors”throwThenplayeroneshouldseethatheorshewonAndplayertwoshouldseethatheorshelostTHROWRockPaperPlayerOneScissorsWaitingOnOpponentYou

WinTimeTHROWRockPaperScissorsPlayerTwoYou

Lost開發(fā)中構(gòu)建架構(gòu)依據(jù)預(yù)期用戶體驗(yàn)設(shè)計(jì)初期架構(gòu)開始用戶體驗(yàn)發(fā)生改變?cè)黾?重構(gòu)用戶體驗(yàn)的架構(gòu)改變架構(gòu)?優(yōu)化后的軟件架構(gòu)否是架構(gòu)債務(wù)WardCunningHam沃德·坎寧安計(jì)算機(jī)程序員和Wiki概念的發(fā)明者。設(shè)計(jì)模式和敏捷軟件方法的先驅(qū)之一。開發(fā)團(tuán)隊(duì)在設(shè)計(jì)或架構(gòu)選型時(shí),從短期效應(yīng)的角度選擇易于實(shí)現(xiàn)的方案,但從長(zhǎng)遠(yuǎn)看,這種方案會(huì)帶來(lái)更消極的影響,亦即開發(fā)團(tuán)隊(duì)所欠的債務(wù)。架構(gòu)債務(wù)定義MartinFowler馬丁·福勒“敏捷軟件開發(fā)宣言”創(chuàng)作者之一,ThoughtWorks公司的首席科學(xué)家。架構(gòu)債務(wù)類似于金融債務(wù),會(huì)產(chǎn)生利息。利息指由于魯莽的設(shè)計(jì)決策導(dǎo)致未來(lái)的開發(fā)中付出更多努力的后果??梢岳^續(xù)支付利息,也可以重構(gòu)設(shè)計(jì)將本金一次付清。雖然一次性付清本金需要代價(jià),卻可以降低未來(lái)的利息。技術(shù)債務(wù)四象限技術(shù)債務(wù)優(yōu)秀團(tuán)隊(duì)中庸團(tuán)隊(duì)混亂團(tuán)隊(duì)拙劣團(tuán)隊(duì)技術(shù)開發(fā)總是精益求精。唯一不足是開發(fā)中又發(fā)現(xiàn)更優(yōu)的技術(shù)方案,有技術(shù)追求,比如Google等對(duì)技術(shù)有追求,迫于交付壓力不得不用臨時(shí)拙劣的方案代替。國(guó)內(nèi)很多大公司都這樣。沒(méi)有人知道好標(biāo)準(zhǔn)是什么,做事情由自己性子來(lái),無(wú)組織、流程、標(biāo)準(zhǔn)。團(tuán)隊(duì)中有人清楚好的架構(gòu),但是管理混亂,沒(méi)時(shí)間設(shè)計(jì),敷衍了事。解決技術(shù)債務(wù)無(wú)論哪種團(tuán)隊(duì),都會(huì)產(chǎn)生技術(shù)債務(wù),不要心存僥幸心理!系統(tǒng)重構(gòu)瀑布式開發(fā)RequirementsAnalysisDesign6months…….ChangesChanges6人,2年的小項(xiàng)目需求記錄:3個(gè)月分析:1個(gè)月架構(gòu)設(shè)計(jì):1個(gè)月更改優(yōu)化:1個(gè)月如果客戶需求更改,可能再次進(jìn)行更改優(yōu)化流程敏捷開發(fā)RequirementslistRequirementsforiterationImplementationDesignTestingDocumentationDailyIterations1monthIteration可工作的版本軟件(Beta)快速

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論