在繼續其他開發工作之前,先來探討兩個經常一起提到但又有所不同的概念:CI/CD(持續整合和持續交付)和 DevOps。
頻繁地將新功能和更新推送給用戶是已經變成現代開發團隊的首要任務。但是開發→交付→維運的這種古早作法使得發佈周期被拉長,開發和維運部門之間還經常為各種問題鬧不愉快。
DevOps 的概念因此而生,通過強調協作和工作流程自動化,嘗試緩解兩者的衝突。
在傳統的軟體開發,開發團隊 coding 好產品後就交由維運團隊負責部署和維護。這導致幾個嚴重問題:
DevOps 概念就是要於消除開發和維運之間的隔閡,它強調團隊之間的密切協作是成功的關鍵。
除此之外,DevOps 還通過對工作流程、工具和組織結構進行優化,實現從代碼到部署的全流程自動化和監控。
CI/CD (持續整合/持續交付)就是實踐 DevOps 理念的重要方式。
CI 要求開發者頻繁地將代碼合併到主分支,並通過自動化測試確保品質和正確性。
CD 將編譯、測試、發布和部署連貫起來,使產品可以自動快速交付給最終用戶。
CI/CD 構建起端到端的、自動化的流水線 (pipeline),極大地提升了發布效率和產品品質。
DevOps 跟 CI/CD 好像是同義詞,但其實不是。我們需要認識到兩者之間的區別:
DevOps 和 CI/CD 密不可分,但要全面實施DevOps,僅建立CI/CD是不夠的,還需要開發和維運一起,在流程、文化各個層面共同努力。
我個人感覺 DevOps 要在已經將開發跟維運切開的公司推展開來感覺很難。目前工作的地方就是這樣,很常去跟 infra team 問東問西,對方都不回,但是 server 維運又是放在他們那邊,不去問又沒辦法讓系統上線,整個很麻煩...