持續交付一——軟體交付的問題
對於作者提到的關於軟體交付的問題,雖然自己沒有太多的經歷,但是從身邊人的闡述中也聽說過關於軟體交付的問題,因為軟體部署交付引起的加班最正常不過了。
書中列出了幾個傳統模式下的軟體部署方式,也就是書中總結的<strong>反模式</strong>:
- 手工部署軟體——手工容易出錯,結果不可預測,重複性高,消耗的人力多,時序問題。
- 開發完成之後才向類生產環境部署——由於其他的外部因素導致運維人員在開發完成甚至釋出到生產環境的時候才第一次見到軟體,釋出週期長,後期維護代價高,在最後期限之前有很少的時間去修復出現的問題。
- 生產環境的手工配置管理——為釋出準備環境時間長,無法回滾到以前的版本叢集中各個節點承擔的負載不同
針對以上的幾點原因,作者也給出了相應的解決方法,從<strong>速度與質量</strong>兩個方面來解決交付過程中出現的問題:
- 速度——減少週期時間
- 質量——以一種高效,快速,可靠的方式交付高質量而且有價值的軟體
為了實現解決問題的方法,我們應該怎麼做呢?
1.自動化——讓本來需要人工做的事情儘可能自動化,構建,部署,測試,釋出一系列的行為自動化,讓這些動作變得可重複,相比手工降低出錯的機率。
2.頻繁做——頻繁釋出,讓每一個版本之間的差異減小,降低釋出的風險,更容易回滾,加快反饋速度。
感覺這一點跟小步提交有一些聯絡,通過小步提交減少程式碼版本之間的差異,也能夠更快的發現程式碼的錯誤在哪裡。發現錯誤之後也能夠很快的回到之前的版本。
將自動化與頻繁做結合起來——頻繁地自動化來說,反饋十分重要,反饋地三個標準很有用:
1.無論什麼樣地修改都應該觸發反饋流程——構成軟體的可執行程式碼,配置資訊,執行環境和資料任何一個部分發生改變都有可能導致軟體行為的變化。
2.反饋應該儘快發出,——我理解的就是出現問題自動化的形式能夠及時反饋,相對於手工的動作更快。編寫測試跟自己手動測試程式碼當然直接點一下執行程式碼看有沒有通過速度更快。
3.交付團隊必須接收反饋,並根據其做出相應地行動——就拿自己寫程式碼的過程來說,通過測試或者是其他的方式發現自己的程式碼存在問題的時候,必須先解決自己目前存在的問題,解決之後才能夠繼續後面的開發。如果將自己的錯誤累計以後再進行修改的話,代價會比及時解決的方式高很多。
小結:
感覺通過自動化的方式能夠幫助我們更快的接收到錯誤資訊的反饋,把錯誤細節話能夠幫助我們更快的意識並解決遇到的問題,與此同時,版本控制工具的使用讓我們在錯誤之後回滾到以前的版本,將二者相結合能夠幫助我們實現一部分的自動化。
團隊之間的合作也至關重要,大家有共同的目標,並在實現目標的過程中互幫互助,持續交流,或許我們能偶在問題出現之前就發現問題呢。對於持續改進,我覺得可能codereview和retro就是兩個結合起來能夠幫助我們實現持續改進,每個人都參與到過程當中,同時不斷的提出問題與反饋,促進大家之間的相互協作,效率應該能夠高很多。
相關文章
- 持續交付探索與實踐(一):交付流水線的設計
- 持續整合、持續交付、持續部署簡介
- 持續整合、持續部署、持續交付、持續釋出
- iOS 持續交付之 FastlaneiOSAST
- 圖靈社群“持續交付”專題交流會圖靈
- 微服務、容器與持續交付微服務
- 從持續整合到持續交付——DockerCloud概覽DockerCloud
- GitOps | 一種雲原生的持續交付模型Git模型
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- 談談持續整合,持續交付,持續部署之間的區別
- 持續交付體系在高德的實踐歷程
- 持續交付與傳統敏捷的矛盾敏捷
- SAP開源的持續整合-持續交付的解決方案
- 你的DevOps中有完善的持續交付體系麼?dev
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- 雲原生下的DevOps與持續交付dev
- 持續交付中的分支管理與版本控制
- #翻譯#持續交付成熟度模型模型
- 圖靈社群“持續交付”專題交流會活動手記圖靈
- [轉載]持續交付和DevOps的前世今生dev
- 釋出 Spinnaker 1.0:持續的雲交付平臺
- [譯文]持續交付與傳統敏捷的矛盾敏捷
- eBay透過事件溯源實現持續交付事件
- 太多指令碼將會毀掉持續交付指令碼
- 持續交付成熟度模型 V1.2模型
- 持續交付探索與實踐(三):指標度量體系搭建指標
- [圖靈程式設計叢書].持續交付:釋出可靠軟體的系統方法.pdf圖靈程式設計
- 頻繁釋出可工作的軟體,降低釋出風險--《持續交付》讀書筆記筆記
- 為什麼單元測試不是持續交付的唯一答案
- 快速指南:在DevOps中實現持續交付dev
- 大象如何跳舞-支付寶持續交付實踐
- 《持續交付》走進百度技術沙龍
- 雲原生入門第六章:持續交付
- 轉:笨方法使用Kubernetes實現持續交付
- CI Weekly #5 | 微服務架構下的持續部署與交付微服務架構
- [譯] 不使用 fastlane 實現持續交付的 5 種選項AST
- 基於Jenkins + Argo 實現多叢集的持續交付JenkinsGo