Scrum是目前最為流行的敏捷(Agile)軟件開(kāi)發(fā)方法,它擁有極簡(jiǎn)的和可操作的以敏捷方式落地的項(xiàng)目管理組織框架。目前Scrum方法的普及度占敏捷市場(chǎng)60%以上的份額,這就足以說(shuō)明其在市場(chǎng)上的認(rèn)可程度。而開(kāi)發(fā)運(yùn)維一體化(DevOps)的理念是由世界知名IT咨詢(xún)顧問(wèn)Patrick DeBois先生于2009年首次提出。DevOps在多年的發(fā)展歷程中已經(jīng)逐步把自己定位為一個(gè)用于描述基于現(xiàn)有精益和敏捷(Agile)最佳實(shí)踐發(fā)展為支持自動(dòng)化和持續(xù)交付的方法,并鼓勵(lì)協(xié)作和學(xué)習(xí)文化,以幫助IT實(shí)現(xiàn)比以往更好、更快和更便宜的業(yè)務(wù)價(jià)值。
故而DevOps是一種文化的運(yùn)動(dòng)。業(yè)界著名專(zhuān)家Damon Edwards和Jez Humble在其論述的DevOps相關(guān)著作中也提出DevOps所秉承的文化和價(jià)值觀(guān)。DevOps的文化可以簡(jiǎn)單用CALMS來(lái)表述。 CALMS由文化(Culture)、自動(dòng)化(Automation)、精益 (Lean) 、測(cè)量(Measurement or Metrics)和分享(Sharing)幾個(gè)單詞首字母所組成。
我們可以體會(huì)到無(wú)論是時(shí)下的敏捷實(shí)踐還是DevOps的持續(xù)交付,它們強(qiáng)調(diào)的不僅僅是具體做法的規(guī)范,更加強(qiáng)調(diào)精益思想的價(jià)值觀(guān)文化的塑造。敏捷開(kāi)發(fā)方法一般通過(guò)在每次沖刺或迭代快速開(kāi)發(fā)出符合市場(chǎng)需要的最小可運(yùn)行產(chǎn)品(MVP)來(lái)體現(xiàn)這種價(jià)值交付。我們都知道只有把軟件真正部署到生產(chǎn)環(huán)境才可以切實(shí)體現(xiàn)這種產(chǎn)品的使用價(jià)值,目前流行的微服務(wù)和容器技術(shù)則是實(shí)現(xiàn)軟件快速部署落地的不二選擇。實(shí)現(xiàn)DevOps落地的最佳方式就應(yīng)該是基于微服務(wù)架構(gòu)的持續(xù)交付,并通過(guò)以容器為單位的藍(lán)綠部署和灰度發(fā)布等方式防止發(fā)布所造成應(yīng)用的不可用(即反脆弱)。
目前很多銀行或企事業(yè)單位都在或多或少的考慮把自己現(xiàn)有的業(yè)務(wù)應(yīng)用從原先的緊密的巨石架構(gòu)逐步解耦成符合松耦合的微服務(wù)架構(gòu),并通過(guò)容器化方式分別部署解耦后的應(yīng)用組件。我們可以基本認(rèn)為微服務(wù)架構(gòu)和容器化部署方式是以DevOps方式交付持續(xù)部署流水線(xiàn)的前提條件。
那么具備微服務(wù)架構(gòu)應(yīng)用的典型特點(diǎn)有哪些呢?我們且簡(jiǎn)單羅列如下三點(diǎn),以增強(qiáng)大家對(duì)這種全新架構(gòu)的理解。
- 業(yè)務(wù)應(yīng)用系統(tǒng)已經(jīng)做到被徹底的架構(gòu)解耦,可以實(shí)現(xiàn)基于容器的方式部署獨(dú)立的部署單元;
- 每個(gè)被解耦的業(yè)務(wù)系統(tǒng)模塊可以支持獨(dú)立設(shè)計(jì)、開(kāi)發(fā)、部署和維護(hù),通常由敏捷實(shí)踐所提倡的自組織(自管理)研發(fā)小團(tuán)隊(duì)進(jìn)行持續(xù)的快速迭代和增量開(kāi)發(fā),研發(fā)小團(tuán)隊(duì)通常由5~9個(gè)人組成;
- 運(yùn)行特定應(yīng)用模塊的容器可以被轉(zhuǎn)化為鏡像模板,以鏡像的方式實(shí)現(xiàn)DevOps所提倡的“Build Once, Run Anywhere”的特點(diǎn)。
總之,隨著各個(gè)各業(yè)對(duì)市場(chǎng)所需價(jià)值的快速交付的內(nèi)在需求,會(huì)有越來(lái)多的企業(yè)采用微服務(wù)架構(gòu), 選擇敏捷開(kāi)發(fā)方法Scrum,并通過(guò)開(kāi)發(fā)運(yùn)維一體化(DevOps)的自動(dòng)化部署方式來(lái)持續(xù)部署已經(jīng)打包成容器的產(chǎn)品功能。