1 開始
??筆者真正開始接觸敏捷開發(fā)的時(shí)間只有1年半的時(shí)間换棚,在這之前式镐,參與的項(xiàng)目大都算是瀑布式開發(fā)。如果把瀑布式的開發(fā)方式比喻為一條沒有感情的流水線固蚤,流水線中的需求娘汞、開發(fā)、測(cè)試夕玩、上線你弦、運(yùn)營(yíng)人員通過約定好的流程惊豺、文檔進(jìn)行交互和工作(這在第二次工業(yè)革命被贊賞的工作方式),時(shí)間一長(zhǎng),就像電影摩登時(shí)代
生產(chǎn)流水線上那個(gè)扭緊六角螺帽里卓別林一樣禽作。
??但在如今變化是唯一不變的社會(huì)里尸昧,響應(yīng)變化成為第一要義,更快更好
是奮斗目標(biāo)旷偿,于是冷冰冰的流水線開發(fā)
開始了文藝復(fù)興
烹俗。開始強(qiáng)調(diào)人、協(xié)作萍程、產(chǎn)品和迭代幢妄。而這一切開始于2001年、在美國(guó)猶他州瓦薩奇山的那一場(chǎng)雪茫负。
2 敏捷-武裝大腦
??當(dāng)我們?cè)谡劦矫艚莸臅r(shí)候蕉鸳,都會(huì)是從敏捷宣言
和 敏捷原則
開始的:
敏捷軟件開發(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í)行, 他們又將寫了敏捷開發(fā)12項(xiàng)原則作為指導(dǎo)
敏捷開發(fā)12項(xiàng)原則
- 1 我們最重要的目標(biāo)嗤堰,是通過持續(xù)不斷地及早交付有價(jià)值的軟件使客戶滿意。
- 2 欣然面對(duì)需求變化度宦,即使在開發(fā)后期也一樣踢匣。為了客戶的競(jìng)爭(zhēng)優(yōu)勢(shì),敏捷過程掌控變化戈抄。
- 3 經(jīng)常地交付可工作的軟件离唬,相隔幾星期或一兩個(gè)月,傾向于采取較短的周期划鸽。
- 4 業(yè)務(wù)人員和開發(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 敏捷過程倡導(dǎo)可持續(xù)開發(fā)疏唾。責(zé)任人、開發(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)。
??如果我們把這些原則和遇到的問題對(duì)號(hào)入座钟沛,很快我們就會(huì)發(fā)現(xiàn)畔规,這12項(xiàng)原則正是對(duì)應(yīng)了客戶期望。比如恨统,客戶不會(huì)關(guān)心開發(fā)文檔寫的怎么樣叁扫,他們更感興趣交付的成品能干什么;他們不在意你的開發(fā)計(jì)劃畜埋,他們希望你能立馬交付莫绣;昨天他們想要修個(gè)BUG,而不是等到下次版本更新悠鞍。
??這聽起來对室,是不是很像工業(yè)生產(chǎn)方式 -> 服務(wù)業(yè)生產(chǎn)方式的演進(jìn)。
3 devops-武裝身體
??如果說咖祭,敏捷開發(fā)是在對(duì)IT從業(yè)者在洗腦掩宜,相信變化的必然
、用戶是上帝
么翰、上帝是多變的
牺汤、擁抱變化
、漸進(jìn)開發(fā)
浩嫌;同時(shí)檐迟,這在為項(xiàng)目管理者提供管理的方向:進(jìn)度量化
、MVP
码耐、WIP
追迟、自組織
、持續(xù)反思
伐坏、面面溝通
怔匣、以開發(fā)者為本
。
??使用敏捷價(jià)值觀武裝大腦,但真正打仗每瞒,還需要手里有槍金闽、有坦克,所以devops
是敏捷團(tuán)隊(duì)剿骨,必不可少的武器代芜。
1 聊聊devops
- DevOps 是一組技術(shù)/實(shí)踐
- DevOps 是一個(gè)角色
- DevOps 是一種工作方式
- DevOps 是一種組織結(jié)構(gòu)
??上圖是現(xiàn)在常見對(duì)devops的理解,對(duì)于我來講浓利,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ī)的部分黄绩,通過各個(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)
??如果說辛蚊,瀑布開發(fā)對(duì)于公司是部門->部門->部門間的價(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 的無縫連接達(dá)到這一目的。它在很大程度上把基礎(chǔ)設(shè)施的管理當(dāng)做其問題域,采用正確的面向?qū)ο蠓绞奖纾岄_發(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