主頁 > 軟體工程 > 做到這4點,才是真正的持續交付| 研發效能提升36計

做到這4點,才是真正的持續交付| 研發效能提升36計

2022-01-26 06:38:40 軟體工程

編者按:全線專欄《研發效能提升36計_持續交付篇》上線啦!本專欄將通過10-20篇文章,系統分享云原生時代,企業如何落地持續交付,本文是該專欄的第2篇,

image.png

策劃&編輯|雅純


 

什么是真正的持續交付?

首先,我們先看一下什么是持續交付,我們認為,持續交付至少應該包含這4點:

 

● 持續:顧名思義,是均勻的、分散的,具體來說是要:

粒度小: 持續發布的粒度一定要很小,大了便很難做到“持續”,

頻率高:發布頻率要非常高,

 

● 快速: 持續交付中整個的交付程序是很快的,交付頻率也是很高的,要做到快速需要,

工序短:在測驗、發布、開發等各個階段中都要做到“短”,這樣才能做到快速地反饋、快速地回應,

等待少: 工序和工序之間、工序和其他流程之間的等待應做到“少”,

反饋快: 提交代碼后,應在盡短時間內反饋此次提交的問題,應盡快修復問題再盡快得到又一次的修復反饋,

 

● 高質量:持續交付是要能夠保證質量的,一定要做到高質量,高質量需要保證:

質量可見性: 判斷做得好不好,首先我們要看到它,所以可見性是非常重要的,

缺陷少: 軟體應是按照預期設計去運行的,而不是有很多潛在的缺陷在里面,

故障少: 每次軟體故障帶來的不僅僅是客戶的損失,也是軟體團隊的損失,很多客戶機會、業務資產會因為故障太多而白白損失掉,

 

● 低風險:在現在的互聯網環境下,風險無處不在,所以我們要做到安全、合規且可信,

軟體可觀測: 要知道軟體的風險,最重要的一點就是可觀測,知道軟體當前是什么樣子的,

發布可控: 我們后續會專門講到,

問題可回溯: 如果出現了發布問題或軟體故障,我們能夠回溯整個問題的來源,從哪開始、從哪個地方引入的,都需要能回溯起來,

系統可回滾: 如果有問題真的解決不了或沒法快速解決,我們需要能夠快速把它回滾掉,以避免造成更大的風險,

以上是持續交付的4個關鍵點,只有滿足了持續、快速、高質量、低風險這4點才是實作了持續交付, 這4點是缺一不可的,粒度小、頻率高,是快速的前提,相應地,只有質量高了,風險才能夠低一些,

問題是:如何做到呢?

基于云和云原生技術的持續交付

 

image.png

 

我們認為,云原生時代,要實作持續交付需要做到這3點:不可變基礎設施、持續交付流水線、安全可信發布,

1、不可變基礎設施

 

image.png

 

有一本書叫做《集裝箱改變世界》,這本書講述了集裝箱的發明讓原本零碎松散的貨物運輸體系變成以集裝箱為單位,并由此帶來了整個貨運成本的95%的降低,

如果我們看軟體交付,以往我們的開發語言構建方式是各種各樣的,程式的打包、運行、管理方式也都不一樣,這些不同使得我們的軟體交付面臨著很大的風險,

在容器出現之前,大家在運維工具、部署工具上做了很多嘗試,但是都不太成功,整體也不如容器流行,其原因便是容器做的就像集裝箱做的事情——標準化,

基于容器我們又做了K8S,做了容器的分發和整個部署運維體系,運行的環境也做掉了,在此基礎上,誕生了各種各樣的云原生的資料庫、云原生的中間件,這樣云原生的整體標準就出來了,就像集裝箱帶來的改變一樣,研發體系實作了標準化,由此我們便可以以相同的方式去對待不同技術堆疊寫出的程式,

整體來看,不可變基礎設施的應用為我們帶來了以下幾點“紅利”:

(1)消除了不一致帶來的不確定性: 以前一個程式換了一個環境可能就跑不動了,其中的問題便是底層出現了不一致帶來的bug,

(2)減少不一致的風險: 風險很難預估,像一個Java程式里面,你大部分跑的是對的,但是在某些情況下,它會出現例外,小版本的差異會產生更多例外的風險,這種情況下你會發現風險是非常難排查的,而且風險帶的后果很嚴重,

(3)減少維護成本: 因為很多底層的東西被標準化了,就不用我們去做了,比如K8S就做了很多這樣的事情,

(4)部署簡化了: 都是同樣一套東西,就像集裝箱一樣,運輸就是了,

(5)環境維護成本降低了: 普遍使用標準化后便不需要有太多的負擔,只要遵照這個標準就行,

(6)工具的開發和學習成本的降低了,

不可變基礎設施帶給我們非常大的技術紅利,我們生態越來越完整,只是這時,我們原來的習慣、思維或者作業方式都要發生變化,

2、持續交付流水線

 

image.png

 

持續交付流水線一定程度上是把我們的整個軟體交付的程序完整地串接在一起,

上圖展示的是一個非常典型的流水線:從代碼提交到合并、構建、生成一個制品、介面測驗、功能驗證、類生產環境部署驗證到最終驗收、上線,

這個流水線是一個完整的程序,沒有間斷、沒有跳過,是一層層往后走的,

有了這個流水線之后,如果代碼質量很好、自動化率很高,整體就會自動地在很短的時間內告知我們上線成功,這是一個非常美妙的體驗,流暢而省力,

要想達到上面流暢的體驗,我們對流水線是有要求的,具體來說有如下幾點:

(1)可描述性

流水線是研發模式的具象化表達: 流水線應該是一個可描述的東西,研發模式其實是通過流水線或其他一些手段描述出來的,

發布流程的一致性: 有了流水線之后,每次的發布流程都是一樣的,

最佳實踐可快速復制: 在一個公司里,不同團隊的研發實踐差別往往非常大,因為很多東西是在口口相傳或者是檔案里的,不同的人對其中內容有不同的掌握、解讀方式,但是流水線可以實作快速的復制,把流程用文章寫出來不如讓它落實在流水線中效果好,

(2)可觀測性

開發、發布程序可見: 在流水線中,不僅僅是當前的發布、開發程序是可以看到的,歷史發布程序、開發程序也是可以看到的,每一次的發布經過了哪些階段、每個階段是什么結果,都是可以看到的,如此便可以知道整個流程是什么樣子,整個流程的質量是什么樣子,中間哪個節點有可能出現問題,

發布程序有保障: 整個流水線中我們看到有很多的驗證節點、介面測驗、預發驗收,所有這些節點的成本都不小,但是它們卻能保證最后發布上線的結果是成功的、穩定的,如此,有了流水線的運用,整個發布程序就有了保障,

(3)自動化

自動化顧名思義就是盡量減少人工在程序中的干預,若每一次階段間的銜接是靠人工完成的,它中間的等待時長以及它的協同成本就會比較高,會帶來各種各樣的風險,所以我們應該做到整個發布程序是完全自動化的,從代碼提交到最后上線,全程序是完全由流水線牽動的,即使中間有些步驟需要人去做驗識訓者測驗,但是這也只是一個工序,這個工序完了之后執行人點個確定,說我驗收成功了,之后就會自動地往下發,因此,整個程序是一個自動化的程序,

3、安全可信發布

 

image.png

 

在軟體交付中,一個代碼、配置,甚至是一個依賴的變化,都會引發制品的改變,制品的改變會經過流水線的一系列節點,這些節點中間有很多需要去驗證、關注和管控的點,例如代碼審查、測驗驗證、評審、發布管控;也會有很多的規則、檢測項,例如代碼質量合規、安全檢測,

這些規則加上這些檢測項,會最終形成一個反饋,表明這次發布是不是可信的,如果反饋有問題,那就不應該發布,如果反饋沒有問題那便可以繼續往下走,

作為安全可信發布來講,首先它要能夠降低發布的風險,防止缺陷帶來的業務損失,更重要的是降低發布的心智負擔,不會不敢發布,

同時,通過安全可信發布我們可以獲得質量的反饋,讓質量是看得見的,讓我們能做到及時反饋、及時修復,整個開發效率就會變高,

享受持續交付的紅利

 

image.png

 

持續交付可以帶來很多的好處,例如:

(1)消除對個人的依賴: 所有的資訊都是共享的,可見、可控、可度量、可加速

(2)降低團隊之間的損耗: 流程一致,所有版本一致,出現故障時更好處理,

(3)降低測驗成本、提升質量: 自動化的測驗是可以回歸的,可以不斷地運行的,也可以重復的,成本遠低于手工測驗,在微服務架構下如果出現問題,也可以更清晰、方便地定位,

(4)降低發布風險: 版本可以回溯,一致性也比較好,因而發布風險也會很好地被控制,另外,有了可信發布的支持,整體的發布成功率也會更有保障,

接下來我們將從:不可變基礎設施、持續交付流水線、安全可信發布3個層面,逐一深入, 通過系列文章,為大家一一講解,

也歡迎在評論區與作者互動,說出你想聽到的內容~

image.png

點擊下方鏈接立即體驗云效持續交付流水線Flow,
https://www.aliyun.com/product/yunxiao/flow?channel=yy_rccb_36

關于我們

了解更多關于云效DevOps的最新動態,可微信搜索關注【云效】公眾號;

福利:公眾號后臺回復【指南】,可獲得《阿里巴巴DevOps實踐指南》&《10倍研發效能提升案例集》;

看完覺得對您有所幫助別忘記點贊、收藏和關注呦;

lQLPDhsGzb2HRiHNBDjNB4CwPRTOVsFHvw0B29IABwA0AA_1920_1080.png

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/421363.html

標籤:其他

上一篇:Hexo博客部署至服務器

下一篇:Hexo博客部署至服務器

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more