1 開(kāi)始
??筆者真正開(kāi)始接觸敏捷開(kāi)發(fā)的時(shí)間只有1年半的時(shí)間,在這之前,參與的項(xiàng)目大都算是瀑布式開(kāi)發(fā)。如果把瀑布式的開(kāi)發(fā)方式比喻為一條沒(méi)有感情的流水線,流水線中的需求、開(kāi)發(fā)、測(cè)試、上線、運(yùn)營(yíng)人員通過(guò)約定好的流程、文檔進(jìn)行交互和工作(這在第二次工業(yè)革命被贊賞的工作方式),時(shí)間一長(zhǎng),就像電影摩登時(shí)代生產(chǎn)流水線上那個(gè)扭緊六角螺帽里卓別林一樣。
??但在如今變化是唯一不變的社會(huì)里,響應(yīng)變化成為第一要義,更快更好是奮斗目標(biāo),于是冷冰冰的流水線開(kāi)發(fā)開(kāi)始了文藝復(fù)興。開(kāi)始強(qiáng)調(diào)人、協(xié)作、產(chǎn)品和迭代。而這一切開(kāi)始于2001年、在美國(guó)猶他州瓦薩奇山的那一場(chǎng)雪。
2 敏捷-武裝大腦
??當(dāng)我們?cè)谡劦矫艚莸臅r(shí)候,都會(huì)是從敏捷宣言 和 敏捷原則 開(kāi)始的:
敏捷軟件開(kāi)發(fā)宣言
個(gè)體和互動(dòng) 高于 流程和工具
工作的軟件 高于 詳盡的文檔
客戶合作 高于 合同談判
響應(yīng)變化 高于 遵循計(jì)劃
四項(xiàng)價(jià)值觀并不意味著我們就該放棄工具、文檔和計(jì)劃。因?yàn)樗鼈儗?duì)研發(fā)結(jié)果依然有非常重要的價(jià)值,只是相比之下,我們應(yīng)該關(guān)注更核心的事物:人、產(chǎn)品模型、協(xié)作和迭代。為了讓這四項(xiàng)原則變得簡(jiǎn)單易懂好執(zhí)行, 他們又將寫(xiě)了敏捷開(kāi)發(fā)12項(xiàng)原則作為指導(dǎo)
敏捷開(kāi)發(fā)12項(xiàng)原則
- 1 我們最重要的目標(biāo),是通過(guò)持續(xù)不斷地及早交付有價(jià)值的軟件使客戶滿意。
- 2 欣然面對(duì)需求變化,即使在開(kāi)發(fā)后期也一樣。為了客戶的競(jìng)爭(zhēng)優(yōu)勢(shì),敏捷過(guò)程掌控變化。
- 3 經(jīng)常地交付可工作的軟件,相隔幾星期或一兩個(gè)月,傾向于采取較短的周期。
- 4 業(yè)務(wù)人員和開(kāi)發(fā)人員必須相互合作,項(xiàng)目中的每一天都不例外。
- 5 激發(fā)個(gè)體的斗志,以他們?yōu)楹诵拇罱?xiàng)目。提供所需的環(huán)境和支援,輔以信任,從而達(dá)成目標(biāo)。
- 6 不論團(tuán)隊(duì)內(nèi)外,傳遞信息效果最好效率也最高的方式是面對(duì)面的交談。
- 7 可工作的軟件是進(jìn)度的首要度量標(biāo)準(zhǔn)。
- 8 敏捷過(guò)程倡導(dǎo)可持續(xù)開(kāi)發(fā)。責(zé)任人、開(kāi)發(fā)人員和用戶要能夠共同維持其步調(diào)穩(wěn)定延續(xù)。
- 9 堅(jiān)持不懈地追求技術(shù)卓越和良好設(shè)計(jì),敏捷能力由此增強(qiáng)。
- 10 以簡(jiǎn)潔為本,它是極力減少不必要工作量的藝術(shù)。
- 11 最好的架構(gòu)、需求和設(shè)計(jì)出自自組織團(tuán)隊(duì)。
- 12 團(tuán)隊(duì)定期地反思如何能提高成效,并依此調(diào)整自身的舉止表現(xiàn)。
??如果我們把這些原則和遇到的問(wèn)題對(duì)號(hào)入座,很快我們就會(huì)發(fā)現(xiàn),這12項(xiàng)原則正是對(duì)應(yīng)了客戶期望。比如,客戶不會(huì)關(guān)心開(kāi)發(fā)文檔寫(xiě)的怎么樣,他們更感興趣交付的成品能干什么;他們不在意你的開(kāi)發(fā)計(jì)劃,他們希望你能立馬交付;昨天他們想要修個(gè)BUG,而不是等到下次版本更新。
??這聽(tīng)起來(lái),是不是很像工業(yè)生產(chǎn)方式 -> 服務(wù)業(yè)生產(chǎn)方式的演進(jìn)。
3 devops-武裝身體
??如果說(shuō),敏捷開(kāi)發(fā)是在對(duì)IT從業(yè)者在洗腦,相信變化的必然、用戶是上帝、上帝是多變的、擁抱變化、漸進(jìn)開(kāi)發(fā);同時(shí),這在為項(xiàng)目管理者提供管理的方向:進(jìn)度量化、MVP、WIP、自組織、持續(xù)反思、面面溝通、以開(kāi)發(fā)者為本。
??使用敏捷價(jià)值觀武裝大腦,但真正打仗,還需要手里有槍、有坦克,所以devops是敏捷團(tuán)隊(duì),必不可少的武器。
1 聊聊devops

- DevOps 是一組技術(shù)/實(shí)踐
- DevOps 是一個(gè)角色
- DevOps 是一種工作方式
- DevOps 是一種組織結(jié)構(gòu)
??上圖是現(xiàn)在常見(jiàn)對(duì)devops的理解,對(duì)于我來(lái)講,devops是一組技術(shù)/實(shí)踐,是完成敏捷的武器。
devops是高效工具的總和、是提升軟件研發(fā)效能的武器庫(kù)。高頻部署、持續(xù)交付、云計(jì)算/虛擬化技術(shù)、基礎(chǔ)設(shè)施即代碼、Docker、自動(dòng)化運(yùn)維 是常常被提到的技術(shù),這些技術(shù)大大加快研發(fā)、運(yùn)維流程的周轉(zhuǎn),提高價(jià)值流向速度,同時(shí)能很好的量化


誤區(qū): DevOps 絕不是為了提升部署頻率而犧牲了軟件質(zhì)量和業(yè)務(wù)價(jià)值,甚至是安全措施
1 devops-道
- 價(jià)值流動(dòng)(Value flow)
- 即時(shí)反饋(Instant feedback)
- 持續(xù)改進(jìn)(keep improve)
??devops的價(jià)值觀與敏捷一脈相承,價(jià)值快速流動(dòng),持續(xù)不斷地及早交付有價(jià)值的軟件使客戶滿意;敏捷關(guān)注人與人的高效溝通,devops將溝通擴(kuò)展到人與人、人與機(jī)、機(jī)與機(jī)的部分,通過(guò)各個(gè)階段的即時(shí)反饋,確保價(jià)值的快速流動(dòng)。迭代、持續(xù)改進(jìn)是對(duì)好與快這對(duì)矛盾體的現(xiàn)實(shí)方法。
2 devops-法
- 自動(dòng)化 (Automation)
- 可視化 (Visualization)
- 持續(xù)集成(Continuous integration)
- 持續(xù)交付(Continuous Delivery)
- 協(xié)同工作(Collaboration Culture)
??如果說(shuō),瀑布開(kāi)發(fā)對(duì)于公司是部門(mén)->部門(mén)->部門(mén)間的價(jià)值流動(dòng);敏捷就是團(tuán)隊(duì)內(nèi)部人->人->人的價(jià)值流程;但是當(dāng)加入了devops,他將變成 人->機(jī)器->機(jī)器->人的價(jià)值流動(dòng)。
3 devops-術(shù)
- 一切皆代碼(Everything as Code)
- 測(cè)試即代碼(Testing as code)
- 配置即代碼(Configuration as Code)
- 基礎(chǔ)設(shè)施即代碼(Infrastructure as Code)
??基礎(chǔ)設(shè)施即代碼利用了編程語(yǔ)言和虛擬化工具 API 的無(wú)縫連接達(dá)到這一目的。它在很大程度上把基礎(chǔ)設(shè)施的管理當(dāng)做其問(wèn)題域,采用正確的面向?qū)ο蠓绞?,讓開(kāi)發(fā)人員和運(yùn)維人員能夠理解并設(shè)計(jì)出更加穩(wěn)定和靈活的基礎(chǔ)設(shè)施。配置與測(cè)試也有著相同的作用,更重要的這讓項(xiàng)目的所有角色都真正成為了Dever,并且代碼作為項(xiàng)目資產(chǎn)的繼承和共享更加有價(jià)值和高效。
4 devops-器
- CI Tool
- Build Tool
- Deployment Tool
- Knowledge Tool
- ChatOps
- Testing Tool
- SCM Tool
- Application Lifecycle
- Docker/K8S
- Monitoring/Logging
