1. 程式人生 > >DevOps工程師到底做些什麽?

DevOps工程師到底做些什麽?

apach 系統 頻繁 監控 之前 編寫 另一個 出現 導致

我們之前已經聽到很多談論DevOps和DevOps世界的最新趨勢的事情,但是就DevOps工程師本身,到底幹些什麽呢?
在最純粹的存在形式上來說,DevOps工程師是為了加快開發和運營團隊之間的交付效率而存在的橋梁。
技術分享圖片
DevOps工程師在軟件生命周期中能帶來什麽?
在傳統的交付周期中,軟件開發人員會在經年累月的編寫代碼後,將軟件交給QA團隊進行測試,然後將最終版本交給運營團隊部署。這三個階段,即開發,測試和部署之間是缺乏協作的。
開發編寫的代碼最終並交給運維團隊,然後運維團隊來解決代碼部署過程中出現的問題,或者將代碼交還給開發團隊來解決遇到的問題。所有這些都導致了軟件開發過程的放慢。
技術分享圖片
但是在DevOps模式下,這三個團隊不再孤立。大多數時間內,從開發、測試、部署到運營,相關的工程師合並成一個團隊並且貫穿整個軟件生命周期,開發不再限制於某一個技能而是一整套技術解決方案。當然安全團隊也因此有可能在這個軟件生命周期中與開發和運營更緊密地工作,及早發現安全問題。
為什麽DevOps工程師的角色各不相同呢?
DevOps工程師並不是什麽新鮮事物。比如系統工程師,自動化工程師,軟件工程師,Linux工程師等等工程師都能成為DevOps工程師。
但是,DevOps工程師的工作性質因組織而異。比如有些是在基礎設施自動化和維護中發揮作用,而在另外一些組織中卻是在整個交付鏈中發揮作用而已。
技術分享圖片
DevOps工程師的角色各不相同,因為他必須通過克服傳統協作障礙與開發和運維人員進行協作。而不同的組織有不同的障礙,因此其扮演的角色自然不同。
DevOps工程師日常工作中最重要的兩個方面
盡管DevOps工程師的角色各不相同,但幾乎所有DevOps工程師每天都會觸及兩件事 - 自動化和持續集成。
自動化:
與維護基礎設施有關的大部分任務仍然是手動的。公司更喜歡使用傳統的經過驗證的方法,而不是自動化相同的流程,因為他們不想冒任何風險。但事實是自動化任務將有助於更快速地開發和部署軟件,這意味著能加快公司從客戶處賺取利益的速度。
為了闡述清楚這一點,我們可以考慮下面這個情況,系統工程師如果每天按要求手動備份所有服務兩次,那麽他可以通過在雲端設施上編寫腳本來完成這項工作而不是浪費時間來完成這項工作。通過自動執行備份過程,您可以讓系統工程師更專註於重要的事情,例如對由於某些因為虛擬機問題而需要關閉的服務進行故障排除。手動執行相同的操作會導致您的系統工程師的負擔過重,而這些工程師的效率將大大降低。這只是一個非常簡單的例子,通過不實施自動化來闡述資源浪費的概念。
技術分享圖片
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工程師在組織中的角色各不相同,但有兩個共同點:自動化和持續集成。

DevOps工程師到底做些什麽?