持續(xù)交付2.0 讀書筆記(持續(xù)更新中...)

一氢架、持續(xù)交付2.0

1.1軟件工程發(fā)展:

瀑布開發(fā) -> 敏捷開發(fā)

相比瀑布的線性模型,只有在項(xiàng)目交付后期才能看到可運(yùn)行的軟件朋魔,敏捷開發(fā)將一個(gè)交付計(jì)劃劃分為多個(gè)迭代岖研,每個(gè)迭代結(jié)束都可以得到對應(yīng)可運(yùn)行軟件。

1.2 DevOps:

是運(yùn)維與研發(fā)參與整個(gè)軟件生命周期的一組實(shí)踐铺厨,它倡導(dǎo)對構(gòu)建軟件的所有環(huán)節(jié)(從集成缎玫、測試、發(fā)布解滓、到部署和基礎(chǔ)架構(gòu)管理)進(jìn)行全面的自動(dòng)化和監(jiān)控,從而達(dá)到更快筝家、更頻繁地交付更穩(wěn)定的軟件的目的洼裤。

1.3 持續(xù)交付1.0

可持續(xù)地快速發(fā)布軟件服務(wù)。

持續(xù)交付1.0
1.4持續(xù)交付2.0
持續(xù)交付2.0雙環(huán)模型

探索環(huán):定需求溪王。
驗(yàn)證環(huán):落地功能腮鞍。

以業(yè)務(wù)為導(dǎo)向,拆解細(xì)化業(yè)務(wù)問題莹菱,快速通過雙環(huán)進(jìn)行探索和驗(yàn)證移国,減少浪費(fèi)的同時(shí),快速找到業(yè)務(wù)前進(jìn)方向道伟。

二迹缀、價(jià)值探索環(huán)

目的:持續(xù)識別和定義有價(jià)值的假設(shè),借助價(jià)值驗(yàn)證環(huán)得到數(shù)據(jù)反饋蜜徽,快速把握業(yè)務(wù)前進(jìn)方向祝懂。

4個(gè)關(guān)鍵環(huán)節(jié):

  • 提問:找出業(yè)務(wù)目標(biāo)
  • 錨定:收集信息量化指標(biāo),描述期望的結(jié)果拘鞋。
  • 共創(chuàng):討論出所有可行的解決方案砚蓬。
  • 精練:評估出合適方案作為驗(yàn)證環(huán)的輸入。

為了加快探索環(huán)的速度盆色,提出三點(diǎn)工作原則:

  • 分解并快速試錯(cuò)
  • 一次只驗(yàn)證一點(diǎn)
  • 允許失敗

共創(chuàng)與精練環(huán)節(jié)常用的方法:

  • 裝飾窗方法: 設(shè)計(jì)一個(gè)用戶能看到但并沒有實(shí)現(xiàn)的新功能入口灰蛙,快速且低成本地驗(yàn)證用戶是否喜歡某個(gè)功能及緊迫程度。
  • 最小可行特性法: 產(chǎn)品的從1到N的過程隔躲。拆解任務(wù)摩梧,優(yōu)先實(shí)現(xiàn)用戶最迫切的需求。
  • 特區(qū)法:在特定小范圍用戶群內(nèi)驗(yàn)證某個(gè)新功能是否有效蹭越,減少無效或者效果不好帶來的損失障本。
  • 定向探索法:對具有特定行為的特定用戶群,針對性設(shè)計(jì)調(diào)查方案,探索其行為動(dòng)機(jī)驾霜,得出功能的定位或者改進(jìn)方向案训。
  • 稻草人法:不開發(fā)真實(shí)功能,但是先向用戶提供該功能等價(jià)的真實(shí)效果粪糙。
  • 最小可行產(chǎn)品法:產(chǎn)品從0到1的過程强霎。以盡可能少的成本開發(fā)出產(chǎn)品核心功能,獲取用戶蓉冈,并收集真實(shí)數(shù)據(jù)城舞,不斷錨定產(chǎn)品的方向和形態(tài)。

三寞酿、快速驗(yàn)證環(huán)

目的:借助各種方法與工具家夺,讓質(zhì)量可靠的解決方案快速到達(dá)客戶手指,進(jìn)而收集并分析真實(shí)反饋伐弹。

4個(gè)關(guān)鍵環(huán)節(jié):

  • 構(gòu)建:解決方案落地拉馋。
  • 運(yùn)行:交付產(chǎn)品,為用戶提供服務(wù)惨好。
  • 監(jiān)測:收集數(shù)據(jù)煌茴,并對系統(tǒng)進(jìn)行監(jiān)控。
  • 決策:將收集的信息與探索環(huán)的期望目標(biāo)進(jìn)行對比日川,做出決策蔓腐,確定下一步方向。

工作原則:

  • 質(zhì)量內(nèi)建:生產(chǎn)過程中的每個(gè)環(huán)節(jié)都開展質(zhì)量保障龄句,而非到后期統(tǒng)一一次大規(guī)模檢查回论。
  • 消除等待:提升各環(huán)節(jié)效率,減少浪費(fèi)撒璧。
  • 重復(fù)事物自動(dòng)化:重復(fù)性工作通過優(yōu)化流程和自動(dòng)化措施透葛,降低成本。
  • 監(jiān)測一切:應(yīng)用健康監(jiān)測卿樱、業(yè)務(wù)健康監(jiān)測僚害。

對持續(xù)交付2.0雙環(huán)模型理解:
價(jià)值探索環(huán)持續(xù)高效產(chǎn)出有價(jià)值的業(yè)務(wù)方案,作為輸入給到快速驗(yàn)證環(huán)繁调。
快速驗(yàn)證環(huán)快速高質(zhì)量完成業(yè)務(wù)落地萨蚕,交付用戶,并收集有效反饋給到加載探索環(huán)蹄胰。
價(jià)值探索環(huán)根據(jù)反饋信息與之前期望進(jìn)行對比岳遥,做出決策,確認(rèn)下一步方向裕寨。
這個(gè)大框架過程中浩蓉,通過一切手段來保證更快的速度和更好的質(zhì)量派继。

四、持續(xù)交付2.0的組織文化

企業(yè)采納持續(xù)交付需要的文化氛圍:安全捻艳、信任與持續(xù)改善驾窟。

五、持續(xù)交付的軟件系統(tǒng)架構(gòu)

持續(xù)交付2.0能力對系統(tǒng)架構(gòu)的要求:

  • 可測試性
  • 易部署性
  • 易監(jiān)測性
  • 易擴(kuò)展性
  • 對可能失敗的處理

常見架構(gòu)模式:

  • 微核架構(gòu):插件化认轨,常用于客戶端軟件
  • 微服務(wù)架構(gòu):后臺服務(wù)軟件
  • 巨石架構(gòu):單一結(jié)構(gòu)體組成的軟件應(yīng)用

架構(gòu)改造實(shí)施模式:

  • 拆遷者模式:重寫一套新框架绅络。
  • 絞殺者模式:通過增加新服務(wù)來不斷替代遺留系統(tǒng)功能。
  • 修繕者模式:通過迭代嘁字,對原有遺留系統(tǒng)進(jìn)行逐步改造恩急,同時(shí)開發(fā)新的功能。

六纪蜒、業(yè)務(wù)需求協(xié)作管理

產(chǎn)品版本周期主要分為:準(zhǔn)備期和交付期衷恭。分別對應(yīng)持續(xù)交付2.0雙環(huán)模型的探索環(huán)和驗(yàn)證環(huán)。
重點(diǎn)討論如何通過需求拆分帶來更好收益霍掺,降低固定成本匾荆。

傳統(tǒng)瀑布軟件開發(fā)方式是按開發(fā)階段來拆分的,該方案只有等到項(xiàng)目進(jìn)入全面測試階段才能得到可運(yùn)行的軟件包杆烁。我們應(yīng)該盡可能從業(yè)務(wù)視角出發(fā)進(jìn)行需求拆分,將需求按用戶故事進(jìn)行拆分简卧,一批用戶故事構(gòu)成一個(gè)可交付的軟件兔魂,不斷迭代為完整用戶故事構(gòu)成的最終軟件包。

因此合理拆分顯得尤為重要举娩,這里需要遵守INVEST原則:
*independent 用戶故事獨(dú)立

  • negotiable 可協(xié)商
  • valuable 用戶故事必須是有價(jià)值的
  • estimable 必現(xiàn)可估算創(chuàng)建用戶故事的工作量
  • small 用戶故事必須足夠小
  • testable 用戶故事必須是可被驗(yàn)證的

常用5大拆分方法:

  • 按路徑拆分法: 根據(jù)用戶使用場景中的不同路徑進(jìn)行拆分析校,比如:支付場景的微信支付、支付寶支付可以拆分為兩個(gè)用戶故事分別實(shí)現(xiàn)铜涉。
  • 按接觸的拆分法:根據(jù)用戶與系統(tǒng)間的交互通道進(jìn)行拆分智玻。比如:移動(dòng)端、pc端芙代。
  • 按數(shù)據(jù)類型或格式來拆分:比如統(tǒng)計(jì)工具吊奢,實(shí)現(xiàn)文件上傳。這里可以拆分為csv纹烹、xml页滚、excel分別為三個(gè)上傳功能來實(shí)現(xiàn)。
  • 按規(guī)則拆分:業(yè)務(wù)規(guī)則或技術(shù)規(guī)則铺呵」郏基礎(chǔ)需求->完善需求 遞進(jìn)。
  • 按探索路徑拆分:將對陌生事物的實(shí)驗(yàn)性探索逐步拆分為不同的探索故事片挂。

團(tuán)隊(duì)協(xié)作管理工具:

  • 團(tuán)隊(duì)共享日歷: 團(tuán)隊(duì)時(shí)間管理幻林。
  • 團(tuán)隊(duì)回顧:定期復(fù)盤贞盯。
  • 可視化故事墻:團(tuán)隊(duì)工作狀態(tài)可視化(todo、doing沪饺、done)躏敢。
  • 明確完成的定義:明確好交付的標(biāo)準(zhǔn)。
  • 持續(xù)集成:團(tuán)隊(duì)多人并行開展工作随闽,及時(shí)交階段性交付成果持續(xù)集成父丰。
  • 故事驗(yàn)證:測試驗(yàn)收標(biāo)準(zhǔn)。

整體這一套團(tuán)隊(duì)協(xié)作管理方案其實(shí)就是敏捷開發(fā)掘宪。

七蛾扇、部署流水線原則與工具設(shè)計(jì)

部署流水線:它是對軟件交付過程的一種可視化呈現(xiàn)方式,展現(xiàn)了從代碼提交魏滚、構(gòu)建镀首、部署、測試到發(fā)布的整個(gè)過程鼠次,為團(tuán)隊(duì)提供狀態(tài)可視化和及時(shí)反饋更哄。

八、利于集成的分支策略

版本控制目的腥寇,回答4個(gè)W

  • when 什么時(shí)間
  • what 修改了什么內(nèi)容
  • who 誰修改的
  • why 為什么要修改

主流版本管理系統(tǒng):

  • 集中式:單一的版本管理服務(wù)器成翩。
  • 分布式:對個(gè)服務(wù)器共存,每個(gè)人的節(jié)點(diǎn)都是一個(gè)代碼倉庫赦役,所有節(jié)點(diǎn)都平等麻敌。

版本控制系統(tǒng)基本概念:

  • codebase 代碼倉庫。
  • branch 分支掂摔,選定代碼基線創(chuàng)建的副本术羔。
  • master/trunk 主干。
  • revision 對應(yīng)某個(gè)分支的一次提交操作乙漓。
  • tag 標(biāo)簽级历,某個(gè)分支的某個(gè)版本號的一個(gè)別名。
  • head 某個(gè)分支最新一次提交叭披。
  • merge 合并分支內(nèi)容寥殖。
  • conflict 合入操作引發(fā)的沖突

常見分支開發(fā)模式:

  • 主干開發(fā),主干發(fā)布 基于主干開發(fā)趋观,向主干提代碼扛禽,主干持續(xù)作為功能交付分支。
  • 主干開發(fā)皱坛,分支發(fā)布 基于主干開發(fā)编曼,向主干提代碼,從主干拉出交付功能分支剩辟,集成測試并修復(fù)bug掐场,發(fā)布分支往扔。
  • 分支開發(fā),主干發(fā)布 從主干拉出分支進(jìn)行開發(fā)熊户,開發(fā)完成對外交付版本時(shí)才合入主干分支萍膛。

分支模式的演化:

  • "三駕馬車”分支模式 開發(fā)分支->預(yù)發(fā)布分支->發(fā)布分支
  • Gitflow分支模式 feature->dev->release->master/hotfix
  • GitHubFlow分支模式 checkout feature branch from master -> dev on feature branch -> PR -> merge master

版本發(fā)布模式:
項(xiàng)目制發(fā)布模式 固定了版本特性數(shù)量和質(zhì)量要求。
發(fā)布火車模式 大型項(xiàng)目嚷堡,多條產(chǎn)品線蝗罗,各團(tuán)隊(duì)對齊交付時(shí)間節(jié)點(diǎn)。
城際快線模式 固定時(shí)間和質(zhì)量蝌戒,滿足發(fā)布條件的特性有多少就上多少串塑。

選擇分支模式原則:

  • 分支越少越好,最好只有一條主干北苟。
  • 分支生命周期越短越好桩匪,最好在3天內(nèi)。
  • 在業(yè)務(wù)允許的前提下友鼻,發(fā)布周期越短越好傻昙。

九、持續(xù)集成

持續(xù)集成是一種軟件開發(fā)實(shí)踐彩扔,團(tuán)隊(duì)成員頻繁地將他們的工作成果集成在一起妆档,每次提交后,自動(dòng)觸發(fā)運(yùn)行一次包含自動(dòng)化驗(yàn)證集的構(gòu)建任務(wù)虫碉,以便能盡早發(fā)現(xiàn)集成問題过吻。

持續(xù)集成屬于一種質(zhì)量反饋機(jī)制。

持續(xù)集成過程

六步提交法:

  • 檢出最近成功的代碼 checkout last build success branch
  • 修改代碼 do feature
  • 第一次個(gè)人構(gòu)建 build feature
  • 第二次個(gè)人構(gòu)建 pull origin branch ,merge code ,build again
  • 提交代碼到團(tuán)隊(duì)主干 PR
  • 提交構(gòu)建 server build

持續(xù)集成獲得最大收益蔗衡,做到如下六點(diǎn):

  • 主干開發(fā),頻繁提交代碼乳绕。
  • 每次提交都是完整有意義的工作绞惦。
  • 提交構(gòu)建階段在10分鐘內(nèi)完成。
  • 提交構(gòu)建失敗后洋措,立即修復(fù)济蝉;且其他人不得在修復(fù)之前提交代碼。
  • 應(yīng)該在10分鐘內(nèi)修復(fù)失敗菠发,否則回滾引起失敗的代碼王滤。
  • 自動(dòng)化構(gòu)建成功后,團(tuán)隊(duì)對軟件質(zhì)量比較有信心滓鸠。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載雁乡,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末糜俗,一起剝皮案震驚了整個(gè)濱河市踱稍,隨后出現(xiàn)的幾起案子曲饱,更是在濱河造成了極大的恐慌,老刑警劉巖珠月,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扩淀,死亡現(xiàn)場離奇詭異,居然都是意外死亡啤挎,警方通過查閱死者的電腦和手機(jī)驻谆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庆聘,“玉大人胜臊,你說我怎么就攤上這事√途酰” “怎么了区端?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長澳腹。 經(jīng)常有香客問我织盼,道長,這世上最難降的妖魔是什么酱塔? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任沥邻,我火速辦了婚禮,結(jié)果婚禮上羊娃,老公的妹妹穿的比我還像新娘唐全。我一直安慰自己,他們只是感情好蕊玷,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布邮利。 她就那樣靜靜地躺著,像睡著了一般垃帅。 火紅的嫁衣襯著肌膚如雪延届。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天贸诚,我揣著相機(jī)與錄音方庭,去河邊找鬼。 笑死酱固,一個(gè)胖子當(dāng)著我的面吹牛械念,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播运悲,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼龄减,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了扇苞?” 一聲冷哼從身側(cè)響起欺殿,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤寄纵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后脖苏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體程拭,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年棍潘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恃鞋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亦歉,死狀恐怖恤浪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肴楷,我是刑警寧澤水由,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站赛蔫,受9級特大地震影響砂客,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呵恢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一鞠值、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧渗钉,春花似錦彤恶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瘫怜,卻和暖如春抵恋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宝磨。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盅安,地道東北人唤锉。 一個(gè)月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像别瞭,于是被迫代替她去往敵國和親窿祥。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359