持續交付(cd, continuous delivery)就是說每次提交**時立即構建,並可以將構建部署到生產環境中,本文將分享一些持續交付相關的方法和經驗。
自動化對於完善的cd管道來說必不可少,我們理應盡可能的用自動化取代手動工作以獲得最大利益。
過去,我們的開發團隊可能在將**發布到生產環境之前一般會做測試,其中一些可能是手動的,一些則是自動的。但在持續交付的情況下,每次提交都要進行**測試,因此最好的辦法就是「自動化一切可自動化的東西」,並且不應僅限於開發團隊。
軟體中所有重要部分的自動化都是必要的——
根據我們的產品不同,可能還會有很多其他可自動化的部分,例如基於雲計算的產品,可以自動配置基礎架構。
cd流程的第二個重要基礎是「經常提交、盡快提交」的能力,在交付軟體時,快速的反饋週期可以帶來極大的不同。
而在**中引入大量更改並將其部署到生產系統中可能會產生意外後果。很難確切地知道出了什麼問題,而且診斷起來很困難。以這種方式更新的大型系統很難恢復到工作狀態,因為您無法輕鬆回滾。
持續交付要求您經常將更改與主分支整合。每次更改**時,請將更改推送到版本控制。
如果我們沒有整天commit,一般無法確切知道我們的commit如何適應系統的其他部分,或者它是否已經破壞了任何東西。如果我們使用的是版本控制系統,開發人員可以切換到過去任何給定時間點的**。
頻繁提交的另乙個積極結果是我們可以更快地獲得有關專案狀態的反饋,我們很快就會發現某個解決方案走錯了方向,而如果出現問題,我們只需要除錯一些潛在的部分。另外,不要忘了有意義的提交備註很重要!
當開發人員長時間彼此孤立地工作時,實現cd幾乎是不可能完成的任務。在大公司中,持續數月的開發周期並不罕見。當開發工作以這種方式發生時,在開發階段結束時需要進行大量測試,這也就意味著在相當長的一段時間裡,我們無法了解應用是否正常工作。
避免這種不確定性需要開發人員經常commit他們的工作,盡快讓更改對其他人可用。在大型團隊中,這一點很重要,這使得合併衝突和由大型提交引起的其他問題變得不那麼頻繁且更易於解決。
先進的軟體開發公司一般都至少遵循了agile/scrum方法的一部分。例如,scrum的乙個儀式是團隊每天進行討論:昨天做了什麼、今天要做什麼以及有什麼困難,這麼做的目的是讓整個團隊了解正在進行的工作。
提高開發團隊生產環境知識的一種簡單方法是讓運維工程師參加,讓開發團隊能夠更好地了解運維所做的工作。
從長遠來看,我們需要devops,避免開發和運維成為兩個孤島。
cd的最後邊界是部署到生產環境中。對於生成**庫的每次提交,不需要進行生產部署,但每個構建都需要生產就緒。
大多數開發團隊對實際生產環境、硬體和軟體的規範、配置、安全規則等了解不多,甚至根本無法訪問生產環境。
改善這種情況需要採取的第一步,是建立乙個盡可能接近真實生產環境的臨時環境。
有效實施cd的常見障礙是克服一體化架構**庫的「遲緩」,緩慢的構建、脆弱的**庫、複雜的**和架構是一些常見的問題。
常見的方法是重新構建整個系統,但一般方法會涉及到大量的時間、資源和資金,以及技術挑戰。
對於那些不專注於軟體開發的公司來說,要獲得管理層的批准要困難得多,因為這需要額外的預算和精力分配到可能只是微不足道的邊際收益的事情上。
對於其他更注重軟體的公司而言,從長遠來看,重新構建整個解決方案可能是最好的方法。
我們建議的入門方法是將**庫拆分為多個儲存庫,每個儲存庫都集中在整個產品的較小子集上。這些較小的儲存庫中的每乙個都應該是自包含的,它們應該有自己的構建指令碼、測試等。
如此一來,cd流程可以更快實現,而無需對系統進行徹底「檢修」。從長遠來看,應使用微服務架構方法將這些單獨的儲存庫進一步細分為更小的部分。
rainbond(雲幫)是"以應用為中心」的開源paas, 深度整合基於kubernetes的容器管理、servicemesh微服務架構最佳實踐、多型別ci/cd應用構建與交付、多資料中心資源管理等技術, 為使用者提供雲原生應用全生命週期解決方案,構建應用與基礎設施、應用與應用、基礎設施與基礎設施之間互聯互通的生態體系, 滿足支撐業務高速發展所需的敏捷開發、高效運維和精益管理需求。
你準備好持續交付(CD)了嗎?
自動化對於完善的cd管道來說必不可少,我們理應盡可能的用自動化取代手動工作以獲得最大利益。過去,我們的開發團隊可能在將 發布到生產環境之前一般會做測試,其中一些可能是手動的,一些則是自動的。但在持續交付的情況下,每次提交都要進行 測試,因此最好的辦法就是 自動化一切可自動化的東西 並且不應僅限於開發...
你準備好失敗了嗎?
今天讀了乙個有趣的故事。有個男人既非魅力十足,又不幽默風趣,但是特別有女人緣,因此大家百思不得其解。有一天他的乙個朋友忍不住問他是怎麼做到生活中女人不斷的?他坦言 每遇到一位迷人的女性,都會問對方願不願意和自己約會,有些人就會答應他。這個男人願意承受多次拒絕,以換取少數成功。這個故事告訴我們乙個淺顯...
跳槽,你準備好了嗎?
前天有個同事想跳槽,給我溝通了一下,諮詢我的意見。該同事進公司兩年,從事qa工作,能力超群,責任心好,做事有魄力,但這裡不對她工作做評價,也不對她將要去的工作做評價,只對跳槽本身進行談一些自己的看法。本人來深六年有餘,經歷公司5家,其中第一家公司經歷1年半,目前在職的公司近三年,結合自己的情況,覺得...