76
技術社區[雲棲]
【譯聞】Jenkins與持續交付的若幹問題
關於譯者Ghostcloud
Ghostcloud(中文名:精靈雲)是成都精靈雲科技有限公司旗下的基於Docker的PaaS/CaaS平台品牌。公司成立於2015年,核心團隊由來自EMC、Veritas、華為、IBM、Microsoft的核心技術主管和架構師組成。精靈雲作為國內首批從事容器虛擬化研發的企業,**為企業級行業客戶提供針對互聯網化、私有雲管理平台、大數據業務基礎架構的平台服務**,在國內Docker社區貢獻排名前三。主創團隊曾參與Beego開源項目研發,並主導發布《Docker容器實戰:原理、架構與應用》一書。Ghostcloud因容器技術而生,致力於為多個領域的“互聯網+”轉型企業提供服務,是一流的企業級容器雲服務專家。
今天我們和大家詳細聊一聊一直非常受歡迎的開源工具——Jenkins。
We Like Jenkins!
眾所周知,Jenkins在軟件開發流程中非常有用,是一款很棒的工具,但Jenkins和其他CI服務器一樣,在軟件交付過程中也會或多或少出現一些問題。軟件交付團隊往往在部署Jenkins以及這類工具的時候會犯錯,使得開發效率變低,削弱了團隊的敏捷開發能力,同時也失去了使用最新技術創新所需的靈活性。
使用Jenkins會出現的若幹問題
問題1:Jenkins的插件太多
插件不一定是壞事,當它們都使用正確時,確實是很好的資源。用戶可以向其使用的工具中增加額外的功能,這當然是最好的。但Jenkins的插件並不能為平台提供核心功能以外的任何可拓展功能,相反,在大多數情況下,使用Jenkins插件,團隊隻能完成基礎的開發工作。
例如,要Docker一個構建環境,你需要一個插件。你從GitHub下載,同樣,你需要一個插件。你想PAM提供支持,你也需要一個插件。
但可以肯定的是,Jenkins的 1500個插件並不是每個人都需要。所以通過插件提供幫助,這很有意義,就比如PagerDuty或Azure Storage兼容性,有一部分用戶可能並不需要這些功能。
但如果你想通過Jenkins插件來做任何事情,這都是欠妥的。因為這就意味著交付團隊要花更多的時間來安裝和配置插件,如此才能開始愉快的工作。然而還有一個更大問題,那就是大多數Jenkins的插件都由第三方編寫的,質量不一樣,而且在沒有詳細描述的情況下可能會不支持。
可見,構建基於第三方插件的軟件交付鏈,並不是一個保證可用性或穩定性的好辦法。
問題2:Jenkins不是為Docker而設計
早在2000年上半年,在設想容器和微服務作為軟件部署的首選基礎設施之前,CI服務器就已經存在。它確實是一種相對較老的技術,通常是DevOps的一部分。
因此,傳統的CI服務器不能幫助團隊使用像Docker容器這樣的基礎架構,他們隻能通過大量插件與Docker進行不恰當的整合。然而事實上,大部分插件由第三方提供,並在與Docker相關的平台上使用。雖然Jenkins為Docker提供了14+個不同的插件,但其中六個是針對Docker的核心平台使用。
Jenkins與大多數其他CI服務器一樣,都建立在裸機服務器和虛擬機時代。後來,在Docker的支持下才進行了處理。所以在這個傾向於Docker的大環境下,這並不是CI服務器運行的好方法。
問題3:Jenkins不能較好的支持微服務
Jenkins和大多數CI服務器一樣出現在Docker之前,也出現在微服務流行之前。 有些人早在2000年的時候就在開展SOA工作, Jenkins在那時也首次被使用。而在二十世紀八十年代初,微服務的概念就已經存在。但直到Docker出現,微服務才開始真正實現。
看到這裏,或許你能猜到Jenkins並不能很好支持微服務, 而事實上也是如此。因為Jenkins缺乏對集成和一次測試多個服務的支持,而這些都是微服務環境下的基本功能。
除非你計劃多個流水線的開發,否則Jenkins在幫助開發下一代微服務應用程序方麵做得並不是太好。
問題4:CI!=CD
Jenkins和CI服務器最大的問題是,有時交付團隊會將持續集成(CI)與持續交付(CD)混在一起。而事實上,這兩者是不同的。
CI是CD的一部分,但是要實現完整的CD,需要的不僅僅是CI服務器。
無論什麼時候,CD都需要自動發布到當前使用環境中。這需要如“Steps”之類的工具來實現,將軟件交付任務自動化到CI服務器的範圍之外。CD這一過程需要工具和渠道,使軟件交付團隊達到無縫協作。
當建立一個CI服務器時,就馬上考慮軟件交付工作完成,這本身就是在犯一大錯誤。
改變Jenkins思路
為什麼經驗豐富的軟件工程團隊會犯這樣的錯誤?這不是因為他們不了解,亦或是無法跟上最新的創新。問題在於團隊被誤導去嚐試效仿大企業,並使用最有效的軟件交付手段,想要做成和Google、Netflix一樣。這些企業著力於利用開源工具鏈和大量基礎設施,構建出非凡的敏捷軟件交付通道。
然而,這些公司之所以能做到這些,絕不僅僅是因為他們的部署工具,而是他們的思路。這就像是你能使用像Google一樣的工具,但你不能像它那樣的高效。較小的企業並不能意識到這一點。隻有當他們真正擁有正確的思路和過程時,才能克服Jenkins這類工具帶來的局限性,並優化他們的軟件交付流程。
沒有工具鏈是完美的,但當你有這樣思路時,同樣可以實現軟件交付完美(或至少與其相近的東西)。如果你的軟件交付方式仍然圍繞Jenkins建立,你無疑會錯失做的更好的機會。要實現這些仍需要研發思路與過程的革新。
原文鏈接:https://thenewstack.io/many-problems-jenkins-continuous-delivery/
最後更新:2017-06-07 17:31:28