針對(duì)現(xiàn)代大連微信OA企業(yè)辦公系統(tǒng)軟件組織在軟件發(fā)布、運(yùn)營(yíng)與維護(hù)過(guò)程中面臨的種種挑戰(zhàn),ThoughtWorks建議在軟件組織中建設(shè)DevOps [7] 能力,從而提升整個(gè)組織的IT融合程度,改善軟件交付“最后一公里”的質(zhì)量和效率,為實(shí)現(xiàn)業(yè)務(wù)敏捷打好基礎(chǔ)。
DevOps是一組流程、技術(shù)與工具的統(tǒng)稱(chēng),用于促進(jìn)開(kāi)發(fā)、技術(shù)運(yùn)營(yíng)和質(zhì)量保障部門(mén)之間的溝通、協(xié)作與整合?!癉evOps”這個(gè)名稱(chēng)即是指開(kāi)發(fā)(Dev)與運(yùn)營(yíng)(Op)的無(wú)縫融合。具備 DevOps 能力的組織能夠開(kāi)展快速、反應(yīng)靈敏同時(shí)又穩(wěn)定可靠的業(yè)務(wù)運(yùn)維,使其能夠與開(kāi)發(fā)過(guò)程的創(chuàng)新保持同步,從而使得敏捷開(kāi)發(fā)的優(yōu)勢(shì)在組織層面上得到體現(xiàn)。
致遠(yuǎn)服軟認(rèn)為:http://www.soft8.com.cn/傳統(tǒng)的軟件運(yùn)營(yíng)人員通常傾向于盡量避免修改功能,從而降低滿(mǎn)足非功能性需求的風(fēng)險(xiǎn)。但如果拒絕了小的修改,而給定時(shí)間段內(nèi)需要修改的總量不變,那么每次變更的規(guī)模就會(huì)變大,從而增加每次發(fā)布的風(fēng)險(xiǎn)(因?yàn)樽兏婕暗姆秶螅?/span>
DevOps 的指導(dǎo)思想是“精益運(yùn)維”。精益生產(chǎn)的很多原則,例如縮短交付周期、消除浪費(fèi)、重視價(jià)值流動(dòng)、拉動(dòng)式生產(chǎn)、質(zhì)量?jī)?nèi)建等,在 DevOps 中都得到了體現(xiàn)。與傳統(tǒng)的大連微信OA企業(yè)辦公系統(tǒng)軟件發(fā)布方式相比,DevOps主要通過(guò)以下幾方面的改變來(lái)提升效率和質(zhì)量。
減少每次發(fā)布的變更范圍。與傳統(tǒng)的瀑布式開(kāi)發(fā)模型相比,采用迭代的工作方式意味著更頻繁的發(fā)布、每次發(fā)布包含的變化更少。由于部署經(jīng)常進(jìn)行,每次部署不會(huì)對(duì)生產(chǎn)系統(tǒng)造成巨大影響,應(yīng)用程序會(huì)以平滑的速率逐漸生長(zhǎng)(如圖2所示)。與傳統(tǒng)大連微信OA企業(yè)辦公系統(tǒng)軟件開(kāi)發(fā)方法那種大規(guī)模的、不頻繁的發(fā)布(通常以“季度”或“年”為單位)相比,具備DevOps能力的組織大大提升了發(fā)布頻率(通常以“天”或“周”為單位)。
大連員工計(jì)件考勤功能加強(qiáng)開(kāi)發(fā)與運(yùn)營(yíng)協(xié)調(diào)。通過(guò)強(qiáng)有力的發(fā)布協(xié)調(diào)機(jī)制來(lái)彌合開(kāi)發(fā)與運(yùn)營(yíng)之間的技能鴻溝和溝通鴻溝;采用電話會(huì)議、即時(shí)消息、企業(yè)門(mén)戶(hù)(wiki、sharepoint)等協(xié)作工具來(lái)確保所有相關(guān)人員理解變更的內(nèi)容;使用統(tǒng)一的流程和工具,例如故事墻、燃盡圖、在線項(xiàng)目管理工具(例如Mingle、JIRA)、配置管理工具(例如Subversion、Git、Mercurial)等。
自動(dòng)化。借助強(qiáng)大的部署自動(dòng)化手段和標(biāo)準(zhǔn)化的環(huán)境管理來(lái)降低部署操作的成本,確保部署任務(wù)的可重復(fù)性,減少部署出錯(cuò)的可能性,例如以下列舉的幾種方式。
(1)用VMWare或Xen等虛擬化技術(shù)標(biāo)準(zhǔn)化生產(chǎn)環(huán)境,實(shí)現(xiàn)生產(chǎn)環(huán)境的快速?gòu)?fù)制和快速恢復(fù)。
(2)用Puppet或Chef等工具自動(dòng)化環(huán)境設(shè)置、軟件安裝/配置等操作,將配置信息轉(zhuǎn)化為源代碼,實(shí)現(xiàn)環(huán)境配置的版本控制。
(3)用Capistrano等工具自動(dòng)化軟件產(chǎn)品的部署,實(shí)現(xiàn)部署過(guò)程的版本控制。
(4)用dbdeploy等工具自動(dòng)化數(shù)據(jù)庫(kù)變更,實(shí)現(xiàn)數(shù)據(jù)遷移的版本控制。
(5)用Selenium、Cucumber等工具自動(dòng)化生產(chǎn)環(huán)境的冒煙測(cè)試和回歸測(cè)試。