我們之前已經(jīng)聽到很多談?wù)揇evOps和DevOps世界的最新趨勢的事情,但是就DevOps工程師本身,到底干些什么呢?
在最純粹的存在形式上來說,DevOps工程師是為了加快開發(fā)和運營團隊之間的
交付效率而存在的橋梁。
DevOps工程師在軟件生命周期中能帶來什么?
在傳統(tǒng)的交付周期中,軟件開發(fā)人員會在經(jīng)年累月的編寫代碼后,將軟件交給QA團隊進(jìn)行測試,然后將最終版本交給運營團隊部署。這三個階段,即開發(fā),測試和部署之間是缺乏協(xié)作的。
開發(fā)編寫的代碼最終并交給運維團隊,然后運維團隊來解決代碼部署過程中出現(xiàn)的問題,或者將代碼交還給開發(fā)團隊來解決遇到的問題。所有這些都導(dǎo)致了軟件開發(fā)過程的放慢。
但是在DevOps模式下,這三個團隊不再孤立。大多數(shù)時間內(nèi),從開發(fā)、測試、部署到運營,相關(guān)的工程師合并成一個團隊并且貫穿整個軟件生命周期,開發(fā)不再限制于某一個技能而是一整套技術(shù)解決方案。當(dāng)然安全團隊也因此有可能在這個軟件生命周期中與開發(fā)和運營更緊密地工作,及早發(fā)現(xiàn)安全問題。
為什么DevOps工程師的角色各不相同呢?
DevOps工程師并不是什么新鮮事物。比如系統(tǒng)工程師,自動化工程師,軟件工程師,Linux工程師等等工程師都能成為DevOps工程師。
但是,DevOps工程師的工作性質(zhì)因組織而異。比如有些是在基礎(chǔ)設(shè)施自動化和維護(hù)中發(fā)揮作用,而在另外一些組織中卻是在整個交付鏈中發(fā)揮作用而已。
DevOps工程師的角色各不相同,因為他必須通過克服傳統(tǒng)協(xié)作障礙與開發(fā)和運維人員進(jìn)行協(xié)作。而不同的組織有不同的障礙,因此其扮演的角色自然不同。
DevOps工程師日常工作中最重要的兩個方面
盡管DevOps工程師的角色各不相同,但幾乎所有DevOps工程師每天都會觸及兩件事 - 自動化和持續(xù)集成。
自動化:
與維護(hù)基礎(chǔ)設(shè)施有關(guān)的大部分任務(wù)仍然是手動的。公司更喜歡使用傳統(tǒng)的經(jīng)過驗證的方法,而不是自動化相同的流程,因為他們不想冒任何風(fēng)險。但事實是自動化任務(wù)將有助于更快速地開發(fā)和部署軟件,這意味著能加快公司從客戶處賺取利益的速度。
為了闡述清楚這一點,我們可以考慮下面這個情況,系統(tǒng)工程師如果每天按要求手動備份所有服務(wù)兩次,那么他可以通過在云端設(shè)施上編寫腳本來完成這項工作而不是浪費時間來完成這項工作。通過自動執(zhí)行備份過程,您可以讓系統(tǒng)工程師更專注于重要的事情,例如對由于某些因為虛擬機問題而需要關(guān)閉的服務(wù)進(jìn)行故障排除。手動執(zhí)行相同的操作會導(dǎo)致您的系統(tǒng)工程師的負(fù)擔(dān)過重,而這些工程師的效率將大大降低。這只是一個非常簡單的例子,通過不實施自動化來闡述資源浪費的概念。
DevOps因此可以作為敏捷的擴展,因為它可以降低由于開發(fā)人員、QA和運維團隊之間的非協(xié)作而可能出現(xiàn)的風(fēng)險。DevOps通過認(rèn)識到高質(zhì)量的軟件開發(fā)要求包括質(zhì)量保證和運營專家在內(nèi)的所有利益相關(guān)方的持續(xù)參與和反饋,擴大了敏捷原則的范圍。
有很多事情可以通過自動的方式來完成,比如在發(fā)布新的補丁的時候更新ApacheWeb服務(wù)器,更新部署在服務(wù)器上的開源軟件的版本。
DevOps工程師可以通過創(chuàng)建腳本環(huán)境自動完成配置服務(wù)器的過程。您可以在一個節(jié)點上運行腳本,但如果在數(shù)千上百個節(jié)點上手工運行相同的腳本將變得不切實際。腳本在這里就變得不再是一個可擴展的解決方案了。
因此,需要以可擴展的方式跨大量節(jié)點自動化進(jìn)行軟件配置、配置管理和應(yīng)用程序部署。這是配置管理工具(如Chef,Puppet和Ansible)在DevOps世界中派上用場的地方。
持續(xù)集成:
關(guān)于DevOps的另一個重要方面是在軟件開發(fā)實踐中實施持續(xù)集成(CI), CI允許開發(fā)人員不斷更新自動化構(gòu)建、測試使用到的資源庫。
持續(xù)集成系統(tǒng)通常包含一個可以持續(xù)監(jiān)控版本控制系統(tǒng)的工具。只要檢測到對版本控制系統(tǒng)的更改,系統(tǒng)就會自動構(gòu)建并測試您的應(yīng)用程序。如果構(gòu)建或測試沒有通過的,系統(tǒng)會立即通知開發(fā)人員解決問題。
持續(xù)集成可確保持續(xù)交付,因為所有代碼更改都會不斷部署到構(gòu)建階段之后的測試和生產(chǎn)環(huán)境中。
通過持續(xù)集成,開發(fā)人員可以從人工任務(wù)中解脫出來,提高工作效率,因為現(xiàn)在在CI中以自動化方式完成自動構(gòu)建任務(wù),并且由于更加頻繁的測試,錯誤和bug更容易找到和解決,從而最終用戶的更新可以更快,更頻繁地進(jìn)行。
有不同的產(chǎn)品和工具可以幫助您在組織中實現(xiàn)持續(xù)集成。有些工具可讓您將CI 服務(wù)器托管在您自己的網(wǎng)絡(luò)基礎(chǔ)架構(gòu)中。最受歡迎的是從Sun的Hudson項目更名為Jenkins的工具。
還有一些其他托管的CI產(chǎn)品,如完全托管在云中的CircleCI和Travis CI。這些托管的CI產(chǎn)品越來越受到小組織的歡迎,因為它使工程團隊能夠盡快開始持續(xù)集成。
總結(jié)
DevOps工程師扮演的最重要角色是彌合軟件開發(fā)和運營團隊之間的差距,提高軟件交付速度。
盡管DevOps工程師在組織中的角色各不相同,但有兩個共同點:自動化和持續(xù)集成。
-
工程師
+關(guān)注
關(guān)注
59文章
1570瀏覽量
68513 -
devops
+關(guān)注
關(guān)注
0文章
113瀏覽量
12021
發(fā)布評論請先 登錄
相關(guān)推薦
評論