咱們以前已經聽到不少談論DevOps和DevOps世界的最新趨勢的事情,可是就DevOps工程師自己,到底幹些什麼呢?安全
在最純粹的存在形式上來講,DevOps工程師是爲了加快開發和運營團隊之間的服務器
交付效率而存在的橋樑。網絡
開發編寫的代碼最終並交給運維團隊,而後運維團隊來解決代碼部署過程當中出現的問題,或者將代碼交還給開發團隊來解決遇到的問題。全部這些都致使了軟件開發過程的放慢。架構
可是在DevOps模式下,這三個團隊再也不孤立。大多數時間內,從開發、測試、部署到運營,相關的工程師合併成一個團隊而且貫穿整個軟件生命週期,開發再也不限制於某一個技能而是一整套技術解決方案。固然安全團隊也所以有可能在這個軟件生命週期中與開發和運營更緊密地工做,及早發現安全問題。運維
DevOps工程師並非什麼新鮮事物。好比系統工程師,自動化工程師,軟件工程師,Linux工程師等等工程師都能成爲DevOps工程師。工具
可是,DevOps工程師的工做性質因組織而異。好比有些是在基礎設施自動化和維護中發揮做用,而在另一些組織中倒是在整個交付鏈中發揮做用而已。測試
DevOps工程師的角色各不相同,由於他必須經過克服傳統協做障礙與開發和運維人員進行協做。而不一樣的組織有不一樣的障礙,所以其扮演的角色天然不一樣。版本控制
DevOps工程師平常工做中最重要的兩個方面生命週期
儘管DevOps工程師的角色各不相同,但幾乎全部DevOps工程師天天都會觸及兩件事 - 自動化和持續集成。ci
自動化:
與維護基礎設施有關的大部分任務仍然是手動的。公司更喜歡使用傳統的通過驗證的方法,而不是自動化相同的流程,由於他們不想冒任何風險。但事實是自動化任務將有助於更快速地開發和部署軟件,這意味着能加快公司從客戶處賺取利益的速度。
爲了闡述清楚這一點,咱們能夠考慮下面這個狀況,系統工程師若是天天按要求手動備份全部服務兩次,那麼他能夠經過在雲端設施上編寫腳原本完成這項工做而不是浪費時間來完成這項工做。經過自動執行備份過程,您可讓系統工程師更專一於重要的事情,例如對因爲某些由於虛擬機問題而須要關閉的服務進行故障排除。手動執行相同的操做會致使您的系統工程師的負擔太重,而這些工程師的效率將大大下降。這只是一個很是簡單的例子,經過不實施自動化來闡述資源浪費的概念。
DevOps所以能夠做爲敏捷的擴展,由於它能夠下降因爲開發人員、QA和運維團隊之間的非協做而可能出現的風險。DevOps經過認識到高質量的軟件開發要求包括質量保證和運營專家在內的全部利益相關方的持續參與和反饋,擴大了敏捷原則的範圍。
有不少事情能夠經過自動的方式來完成,好比在發佈新的補丁的時候更新ApacheWeb服務器,更新部署在服務器上的開源軟件的版本。
DevOps工程師能夠經過建立腳本環境自動完成配置服務器的過程。您能夠在一個節點上運行腳本,但若是在數千上百個節點上手工運行相同的腳本將變得不切實際。腳本在這裏就變得再也不是一個可擴展的解決方案了。
所以,須要以可擴展的方式跨大量節點自動化進行軟件配置、配置管理和應用程序部署。這是配置管理工具(如Chef,Puppet和Ansible)在DevOps世界中派上用場的地方。
持續集成:
關於DevOps的另外一個重要方面是在軟件開發實踐中實施持續集成(CI), CI容許開發人員不斷更新自動化構建、測試使用到的資源庫。
持續集成系統一般包含一個能夠持續監控版本控制系統的工具。只要檢測到對版本控制系統的更改,系統就會自動構建並測試您的應用程序。若是構建或測試沒有經過的,系統會當即通知開發人員解決問題。
持續集成可確保持續交付,由於全部代碼更改都會不斷部署到構建階段以後的測試和生產環境中。
經過持續集成,開發人員能夠從人工任務中解脫出來,提升工做效率,由於如今在CI中以自動化方式完成自動構建任務,而且因爲更加頻繁的測試,錯誤和bug更容易找到和解決,從而最終用戶的更新能夠更快,更頻繁地進行。
有不一樣的產品和工具能夠幫助您在組織中實現持續集成。有些工具可以讓您將CI 服務器託管在您本身的網絡基礎架構中。最受歡迎的是從Sun的Hudson項目改名爲Jenkins的工具。
還有一些其餘託管的CI產品,如徹底託管在雲中的CircleCI和Travis CI。這些託管的CI產品愈來愈受到小組織的歡迎,由於它使工程團隊可以儘快開始持續集成。
總結
DevOps工程師扮演的最重要角色是彌合軟件開發和運營團隊之間的差距,提升軟件交付速度。
儘管DevOps工程師在組織中的角色各不相同,但有兩個共同點:自動化和持續集成。