敏捷開發(fā)和DevOps

一酥馍、敏捷開發(fā)

敏捷開發(fā)(Agile)是一種以人為核心、迭代板熊、循序漸進(jìn)的開發(fā)方法框全。

在敏捷開發(fā)中,軟件項(xiàng)目的構(gòu)建被切分成多個(gè)子項(xiàng)目干签,各個(gè)子項(xiàng)目的成果都經(jīng)過測試津辩,具備集成和可運(yùn)行的特征。

簡單地來說筒严,敏捷開發(fā)并不追求前期完美的設(shè)計(jì)丹泉、完美編碼,而是力求在很短的周期內(nèi)開發(fā)出產(chǎn)品的核心功能鸭蛙,盡早發(fā)布出可用的版本摹恨。然后在后續(xù)的生產(chǎn)周期內(nèi),按照新需求不斷迭代升級(jí)娶视,完善產(chǎn)品晒哄。

敏捷開發(fā)思想是 Martin Fowler 提出的睁宰。 Martin Fowler 不但是敏捷開發(fā)的創(chuàng)始人之一,還在面向?qū)ο箝_發(fā)寝凌、設(shè)計(jì)模式柒傻、UML 建模領(lǐng)域做出了重要貢獻(xiàn)。目前擔(dān)任 ThoughtWorks 公司的首席科學(xué)家较木。

敏捷開發(fā)模式的分類

敏捷開發(fā)的實(shí)現(xiàn)主要包括 SCRUM红符、XP(極限編程)、Crystal Methods伐债、FDD(特性驅(qū)動(dòng)開發(fā))等等预侯。其中 SCRUM 與 XP 最為流行。

同樣是敏捷開發(fā)峰锁,XP 極限編程更側(cè)重于實(shí)踐萎馅,并力求把實(shí)踐做到極限。這一實(shí)踐可以是測試先行虹蒋,也可以是結(jié)對(duì)編程等糜芳,關(guān)鍵要看具體的應(yīng)用場景。

二魄衅、SCRUM 工作流程

SCRUM則是一種開發(fā)流程框架峭竣,也可以說是一種套路。SCRUM 框架中包含三個(gè)角色晃虫,三個(gè)工件邪驮,四個(gè)會(huì)議,聽起來很復(fù)雜傲茄,其目的是為了有效地完成每一次迭代周期的工作。

學(xué)習(xí) Scrum 之前沮榜,我們先要了解幾個(gè)基本術(shù)語:

Sprint

沖刺周期盘榨,通俗的講就是實(shí)現(xiàn)一個(gè)“小目標(biāo)”的周期。一般需要 2-6 周時(shí)間蟆融。

User Story

用戶的外在業(yè)務(wù)需求草巡。拿銀行系統(tǒng)來舉例的話,一個(gè) Story 可以是用戶的存款行為型酥,或者是查詢余額等等山憨。也就是所謂的小目標(biāo)本身。

Task

由 User Story 拆分成的具體開發(fā)任務(wù)弥喉。

Backlog

需求列表郁竟,可以看成是小目標(biāo)的清單。分為 Sprint Backlog 和 Product Backlog由境。

Daily meeting

每天的站會(huì)棚亩,用于監(jiān)控項(xiàng)目進(jìn)度蓖议。有些公司直接稱其為 Scrum。

Sprint Review meeting

沖刺評(píng)審會(huì)議讥蟆,讓團(tuán)隊(duì)成員們演示成果勒虾。

Sprint burn down

沖刺燃盡圖,說白了就是記錄當(dāng)前周期的需求完成情況瘸彤。

Release

開發(fā)周期完成修然,項(xiàng)目發(fā)布新的可用版本。

Scrum工作流程

如上圖所示质况,在項(xiàng)目啟動(dòng)之前愕宋,會(huì)由團(tuán)隊(duì)的產(chǎn)品負(fù)責(zé)人(Product owner)按照需求優(yōu)先級(jí)來明確出一份 Product Backlog,為項(xiàng)目做出整體排期拯杠。

隨后在每一個(gè)小的迭代周期里掏婶,團(tuán)隊(duì)會(huì)根據(jù)計(jì)劃(Sprint Plan Meeting)確定本周期的 Sprint Backlog,再細(xì)化成一個(gè)個(gè) Task潭陪,分配給團(tuán)隊(duì)成員雄妥,進(jìn)行具體開發(fā)工作。每一天依溯,團(tuán)隊(duì)成員都會(huì)進(jìn)行 Daily meeting老厌,根據(jù)情況更新自己的 Task 狀態(tài),整個(gè)團(tuán)隊(duì)更新 Sprint burn down chart黎炉。

當(dāng)這一周期的 Sprint backlog 全部完成枝秤,團(tuán)隊(duì)會(huì)進(jìn)行 Spring review meeting,也就是評(píng)審會(huì)議慷嗜。一切順利的話淀弹,會(huì)發(fā)布出這一版本的 Release,并且進(jìn)行 Sprint 回顧會(huì)議(Sprint Retrospective Meeting)庆械。

三薇溃、Devops

DevOps 是 Development 和 Operations 的合成詞,是一組過程缭乘、方法與系統(tǒng)的統(tǒng)稱沐序,用于促進(jìn)開發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運(yùn)營和質(zhì)量保障(QA)部門之間的溝通堕绩、協(xié)作與整合策幼。 它是一種重視“軟件開發(fā)人員(Dev)”和“IT運(yùn)維技術(shù)人員(Ops)”之間溝通合作的文化、運(yùn)動(dòng)或慣例奴紧。透過自動(dòng)化“軟件交付”和“架構(gòu)變更”的流程特姐,來使得構(gòu)建、測試黍氮、發(fā)布軟件能夠更加地快捷到逊、頻繁和可靠铣口。

其目標(biāo)是要加強(qiáng)開發(fā)人員、測試人員觉壶、運(yùn)維人員之間的溝通協(xié)調(diào)脑题。如何實(shí)現(xiàn)這一目標(biāo)呢?需要我們的項(xiàng)目做到持續(xù)集成铜靶、持續(xù)交付叔遂、持續(xù)部署。

時(shí)下流行的 Jenkins争剿、Bamboo已艰,就是兩款優(yōu)秀的持續(xù)集成工具。而 Docker 容器則為 DevOps 提供了強(qiáng)大而有效的統(tǒng)一環(huán)境蚕苇。

DevOps 的出現(xiàn)是由于軟件行業(yè)日益清晰地認(rèn)識(shí)到:為了按時(shí)交付軟件產(chǎn)品和服務(wù)哩掺,開發(fā)和運(yùn)營工作必須緊密合作。

從定義來看涩笤,其實(shí) DevOps 就是為了讓開發(fā)嚼吞、運(yùn)維和QA可以高效協(xié)作的流程。(可以把DevOps看作開發(fā)蹬碧、技術(shù)運(yùn)營和質(zhì)量保障(QA)三者的交集)舱禽。


DevOps

DevOps對(duì)應(yīng)用程序發(fā)布的影響

在很多企業(yè)中,應(yīng)用程序發(fā)布是一項(xiàng)涉及多個(gè)團(tuán)隊(duì)恩沽、壓力很大誊稚、風(fēng)險(xiǎn)很高的活動(dòng)。然而在具備DevOps能力的組織中,應(yīng)用程序發(fā)布的風(fēng)險(xiǎn)很低,原因如下:

1)減少變更范圍

與傳統(tǒng)的瀑布模式模型相比撵儿,采用敏捷或迭代式開發(fā)意味著更頻繁的發(fā)布、每次發(fā)布包含的變化更少俏脊。由于部署經(jīng)常進(jìn)行,因此每次部署不會(huì)對(duì)生產(chǎn)系統(tǒng)造成巨大影響肤晓,應(yīng)用程序會(huì)以平滑的速率逐漸生長。

2)加強(qiáng)發(fā)布協(xié)調(diào)

靠強(qiáng)有力的發(fā)布協(xié)調(diào)人來彌合開發(fā)與運(yùn)營之間的技能鴻溝和溝通鴻溝认然;采用電子數(shù)據(jù)表补憾、電話會(huì)議和企業(yè)門戶(wiki、sharepoint)等協(xié)作工具來確保所有相關(guān)人員理解變更的內(nèi)容并全力合作卷员。

3)自動(dòng)化

強(qiáng)大的部署自動(dòng)化手段確保部署任務(wù)的可重復(fù)性盈匾、減少部署出錯(cuò)的可能性。

與傳統(tǒng)開發(fā)方法那種大規(guī)模的毕骡、不頻繁的發(fā)布(通常以“季度”或“年”為單位)相比削饵,敏捷方法大大提升了發(fā)布頻率(通常以“天”或“周”為單位)岩瘦。

實(shí)現(xiàn)DevOps需要什么?

硬性要求:工具上的準(zhǔn)備

上文提到了工具鏈的打通窿撬,那么工具自然就需要做好準(zhǔn)備∑裘粒現(xiàn)將工具類型及對(duì)應(yīng)的不完全列舉整理如下:

代碼管理(SCM):GitHub、GitLab劈伴、BitBucket密末、SubVersion
構(gòu)建工具:Ant、Gradle跛璧、maven
自動(dòng)部署:Capistrano严里、CodeDeploy
持續(xù)集成(CI):Bamboo、Hudson追城、Jenkins
配置管理:Ansible刹碾、Chef、Puppet座柱、SaltStack迷帜、ScriptRock GuardRail
容器:Docker、LXC辆布、第三方廠商如AWS
編排:Kubernetes瞬矩、Core、Apache Mesos锋玲、DC/OS
服務(wù)注冊與發(fā)現(xiàn):Zookeeper景用、etc、Consul
腳本語言:python惭蹂、ruby伞插、shell
日志管理:ELK、Logentries
系統(tǒng)監(jiān)控:Datadog盾碗、Graphite媚污、Icinga、Nagios
性能監(jiān)控:AppDynamics廷雅、New Relic耗美、Splunk
壓力測試:JMeter、Blaze Meter航缀、loader.io
預(yù)警:PagerDuty商架、pingdom、廠商自帶如AWS SNS
HTTP加速器:Varnish
消息總線:ActiveMQ芥玉、SQS
應(yīng)用服務(wù)器:Tomcat蛇摸、JBoss
Web服務(wù)器:Apache、Nginx灿巧、IIS
數(shù)據(jù)庫:MySQL赶袄、Oracle揽涮、PostgreSQL等關(guān)系型數(shù)據(jù)庫;cassandra饿肺、mongoDB蒋困、redis等NoSQL數(shù)據(jù)庫
項(xiàng)目管理(PM):Jira、Asana唬格、Taiga家破、Trello、Basecamp购岗、Pivotal Tracker

在工具的選擇上汰聋,需要結(jié)合公司業(yè)務(wù)需求和技術(shù)團(tuán)隊(duì)情況而定。

軟性需求:文化和人

DevOps成功與否喊积,公司組織是否利于協(xié)作是關(guān)鍵烹困。開發(fā)人員和運(yùn)維人員可以良好溝通互相學(xué)習(xí),從而擁有高生產(chǎn)力乾吻。并且協(xié)作也存在于業(yè)務(wù)人員與開發(fā)人員之間髓梅。

出席了2016年倫敦企業(yè)級(jí)DevOps峰會(huì)的ITV公司在2012年就開始落地DevOps,其通用平臺(tái)主管Clark在接受了InfoQ的采訪绎签,在談及成功時(shí)表示枯饿,業(yè)務(wù)人員非常清楚他們希望在最小化可行產(chǎn)品中實(shí)現(xiàn)什么,工程師們就按需交付诡必,不做多余工作奢方。

這樣,工程師們使用通用的平臺(tái)(即打通的工具鏈)得到更好的一致性和更高的質(zhì)量爸舒。此外蟋字,DevOps對(duì)工程師個(gè)人的要求也提高了,很多專家也認(rèn)為招募到優(yōu)秀的人才也是一個(gè)挑戰(zhàn)扭勉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鹊奖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子涂炎,更是在濱河造成了極大的恐慌忠聚,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唱捣,死亡現(xiàn)場離奇詭異两蟀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)爷光,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澎粟,“玉大人蛀序,你說我怎么就攤上這事欢瞪。” “怎么了徐裸?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵遣鼓,是天一觀的道長。 經(jīng)常有香客問我重贺,道長骑祟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任气笙,我火速辦了婚禮次企,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘潜圃。我一直安慰自己缸棵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布谭期。 她就那樣靜靜地躺著堵第,像睡著了一般。 火紅的嫁衣襯著肌膚如雪隧出。 梳的紋絲不亂的頭發(fā)上踏志,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音胀瞪,去河邊找鬼针余。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赏廓,可吹牛的內(nèi)容都是我干的涵紊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼幔摸,長吁一口氣:“原來是場噩夢啊……” “哼摸柄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起既忆,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤驱负,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后患雇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跃脊,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年苛吱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酪术。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖绘雁,靈堂內(nèi)的尸體忽然破棺而出橡疼,到底是詐尸還是另有隱情,我是刑警寧澤庐舟,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布欣除,位于F島的核電站,受9級(jí)特大地震影響挪略,放射性物質(zhì)發(fā)生泄漏历帚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一杠娱、第九天 我趴在偏房一處隱蔽的房頂上張望挽牢。 院中可真熱鬧,春花似錦墨辛、人聲如沸卓研。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奏赘。三九已至,卻和暖如春太惠,著一層夾襖步出監(jiān)牢的瞬間磨淌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來泰國打工凿渊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梁只,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓埃脏,卻偏偏與公主長得像搪锣,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子彩掐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 三分鐘了解敏捷開發(fā) 小灰經(jīng)過千辛萬苦构舟,終于拿到了心儀的 offer,今天小灰上班的第一天 …… 下班后堵幽,小灰找到同...
    索倫x閱讀 561評(píng)論 0 3
  • 學(xué)習(xí)完整課程請移步 互聯(lián)網(wǎng) Java 全棧工程師 本節(jié)視頻 【視頻】項(xiàng)目實(shí)戰(zhàn)-iToken-開發(fā)前的準(zhǔn)備-了解敏捷...
    擼帝閱讀 573評(píng)論 0 8
  • 學(xué)習(xí)完整課程請移步 互聯(lián)網(wǎng) Java 全棧工程師 本節(jié)視頻 【視頻】項(xiàng)目實(shí)戰(zhàn)-iToken-開發(fā)前的準(zhǔn)備-了解敏捷...
    擼帝閱讀 1,039評(píng)論 1 25
  • 小灰經(jīng)過千辛萬苦狗超,終于拿到了心儀的offer, 今天小灰上班的第一天…… 下班后朴下,小灰找到同學(xué)大黃來請教…… 場景...
    dreamer_lk閱讀 1,044評(píng)論 4 7
  • 學(xué)習(xí)完整課程請移步 互聯(lián)網(wǎng) Java 全棧工程師 本節(jié)視頻 【視頻】項(xiàng)目實(shí)戰(zhàn)-iToken-開發(fā)前的準(zhǔn)備-了解敏捷...
    擼帝閱讀 469評(píng)論 0 12