為什麼需要 DevOps?誰是 DevOps 專家?

當應用程式無法運行時,您最不想聽到同事說的就是「問題出在您這邊」。 結果,用戶遭受損失——而且他們並不關心團隊的哪一部分應該對故障負責。 DevOps 文化的出現正是為了圍繞最終產品的共同責任將開發和支持結合在一起。

DevOps 概念中包含哪些實踐以及為什麼需要它們? DevOps 工程師做什麼以及他們應該能夠做什麼? EPAM 的專家回答了這些問題和其他問題:系統工程師兼 DevOps 傳播者 Kirill Sergeev 和公司 DevOps 團隊之一的首席系統工程師兼協調員 Igor Boyko。

為什麼需要 DevOps?誰是 DevOps 專家?

為什麼需要 DevOps?

以前,開發人員和支援人員(所謂的營運)之間存在障礙。 這聽起來很矛盾,但儘管他們做的是同一件事,但他們的目標和 KPI 卻不同。 開發的目標是盡快實現業務需求並將其添加到工作產品中。 支援人員負責確保應用程式穩定運行 - 任何更改都會使穩定性面臨風險。 存在利益衝突-DevOps 的出現解決了這個問題。

什麼是 DevOps?

這是一個很好的問題,也是一個有爭議的問題:世界尚未最終就這個問題達成一致。 EPAM 認為 DevOps 結合了團隊內的技術、流程和互動文化。 該協會旨在持續為最終用戶提供價值。

基里爾·謝爾蓋夫:「開發人員編寫程式碼,測試人員對其進行審查,管理員將最終產品部署到生產中。 很長一段時間,團隊的這些部分有些分散,然後出現了透過一個共同的流程將他們團結起來的想法。 這就是 DevOps 實踐的出現方式。”

開發人員和系統工程師對彼此的工作產生興趣的那一天到來了。 生產和支援之間的障礙開始消失。 這就是 DevOps 的出現,其中包括實踐、文化和團隊互動。

為什麼需要 DevOps?誰是 DevOps 專家?

DevOps 文化的本質是什麼?

事實上,最終結果的責任在於每個團隊成員。 DevOps 哲學中最有趣和最困難的事情是要理解一個特定的人不僅對他自己的工作階段負責,而且對整個產品將如何運作負責。 問題不屬於任何一方——它是共享的,每個團隊成員都幫助解決它。

DevOps 文化中最重要的是解決問題,而不僅僅是應用 DevOps 實踐。 而且,這些做法並不是「在某人這邊」實施的,而是貫穿整個產品。 專案本身不需要 DevOps 工程師 - 它需要問題的解決方案,而 DevOps 工程師的角色可以指派給具有不同專業的多個團隊成員。

DevOps 實作有哪些類型?

DevOps 實務涵蓋軟體生命週期的所有階段。

伊戈爾·博伊科:「理想的情況是我們在專案啟動時就開始使用 DevOps 實踐。 我們與建築師一起規劃應用程式將具有什麼樣的架構景觀、它將位於何處以及如何擴展,並選擇一個平台。 如今,微服務架構很流行 - 為此我們選擇了編排系統:您需要能夠單獨管理應用程式的每個元素並獨立於其他元素進行更新。 另一種做法是「基礎設施即代碼」。 這是一種使用程式碼建立和管理專案基礎架構的方法的名稱,而不是透過與伺服器的直接互動。

接下來我們進入開發階段。 這裡最大的實踐之一是建立 CI/CD:您需要幫助開發人員快速、少量、更頻繁、更輕鬆地將變更整合到產品中。 CI/CD 涵蓋程式碼審查、將主版本上傳到程式碼庫以及將應用程式部署到測試和生產環境。

在 CI/CD 階段,代碼通過品質關卡。 在他們的幫助下,他們檢查從開發人員工作站出來的程式碼是否符合指定的品質標準。 此處新增了單元和 UI 測試。 為了快速、輕鬆和集中的產品部署,您可以選擇適當的部署類型。

DevOps 從業者在支援成品階段也佔有一席之地。 它們用於監控、回饋、安全性和引入變更。 DevOps 從持續改進的角度看待所有這些任務。 我們最大限度地減少重複操作並使其自動化。 這還包括遷移、應用程式擴展和性能支援。”

DevOps 實踐有哪些好處?

如果我們寫一本關於現代 DevOps 實踐的教科書,第一頁就會有三點:自動化、加速發布和用戶的快速回饋。

基里爾·謝爾蓋夫:「首先是自動化。 我們可以自動化團隊中的所有互動:編寫程式碼 - 推出 - 檢查 - 安裝 - 收集回饋 - 返回起點。 這一切都是自動的。

二是加快發布,甚至簡化開發。 對於客戶來說,產品盡快進入市場並比競爭對手的同類產品更早開始提供好處始終很重要。 產品交付流程可以不斷改進:減少時間、增加額外的控制標記、改善監控。

三是用戶回饋加速。 如果他有意見,我們可以立即做出調整,立即更新申請。”

為什麼需要 DevOps?誰是 DevOps 專家?

「系統工程師」、「建置工程師」和「DevOps 工程師」的概念有何關聯?

它們重疊,但屬於略有不同的領域。

EPAM 的系統工程師是一個職位。 他們有不同的級別:從初級到首席專家。

建置工程師更多的是可以在專案中執行的角色。 現在這是負責 CI/CD 的人的稱呼。

DevOps 工程師是專案上實施 DevOps 實務的專家。

如果我們總結一下,我們會得到這樣的結果:擔任系統工程師的人在專案中扮演建置工程師的角色,並參與該專案中 DevOps 實踐的實施。

DevOps 工程師到底做什麼的?

DevOps 工程師將構成專案的所有部分組合在一起。 他們了解程式設計師、測試人員、系統管理員的工作細節並幫助簡化他們的工作。 他們了解業務的需求和要求及其在開發過程中的作用,並在建立流程時考慮客戶的利益。

我們談了很多關於自動化的話題——這是 DevOps 工程師首先要處理的問題。 這是一個非常大的點,其中包括準備環境。

基里爾·謝爾蓋夫:「在對產品實施更新之前,需要在第三方環境中進行測試。 它是由 DevOps 工程師編寫的。 他們向整個計畫灌輸 DevOps 文化:他們在計畫的各個層面引入 DevOps 實踐。 這三個原則:自動化、簡化、加速——它們將帶到任何它們能到達的地方。”

DevOps 工程師該了解什麼?

總的來說,他必須具備不同領域的知識:程式設計、使用作業系統、資料庫、彙編和配置系統。 與雲端基礎設施、編排和監控系統配合使用的能力對這些功能進行了補充。

1. 程式語言

DevOps 工程師了解幾種基本的自動化語言,例如,可以告訴程式設計師:「不要手動安裝程式碼,而是使用我們的腳本來安裝程式碼,該腳本可以自動執行所有操作,怎麼樣? 我們會為其準備一個設定文件,方便您和我們閱讀,並且我們可以隨時更改它。 我們還將了解誰、何時以及為何對其進行更改。”

DevOps 工程師可以學習以下一種或多種語言:Python、Groovy、Bash、Powershell、Ruby、Go。 沒有必要深入了解它們 - 語法基礎知識、OOP 原理以及編寫簡單自動化腳本的能力就足夠了。

2. 操作系統

DevOps 工程師必須了解產品將安裝在什麼伺服器上、將在什麼環境中運作以及將與哪些服務互動。 您可以選擇專注於 Windows 或 Linux 系列。

3.版本控制系統

如果不了解版本控制系統,DevOps 工程師就無處可去。 Git 是目前最受歡迎的系統之一。

4. 雲端提供者

AWS、Google、Azure - 尤其是當我們談論 Windows 方向時。

基里爾·謝爾蓋夫:「雲端供應商為我們提供了完全適合 CI/CD 的虛擬伺服器。

安裝十台實體伺服器需要大約一百次手動操作。 每台伺服器都必須手動啟動,安裝和配置所需的作業系統,在這十台伺服器上安裝我們的應用程序,然後仔細檢查所有內容十次。 雲端服務用十行程式碼取代了這個過程,優秀的 DevOps 工程師應該能夠使用它們。 這為客戶和公司節省了時間、精力和金錢。”

5.編排系統:Docker和Kubernetes

基里爾·謝爾蓋夫:「虛擬伺服器被劃分為多個容器,我們可以在每個容器中安裝我們的應用程式。 當有很多容器時,您需要管理它們:打開一個,關閉另一個,在某處進行備份。 這變得相當複雜,需要一個編排系統。

以前,每個應用程式都由單獨的伺服器處理 - 其操作的任何變更都可能影響應用程式的可服務性。 借助容器,應用程式變得隔離並單獨運行 - 每個應用程式都在自己的虛擬機器上運行。 如果發生故障,無需浪費時間尋找原因。 銷毀舊容器並添加新容器會更容易。”

6.設定係統:Chef、Ansible、Puppet

當您需要維護整個伺服器群組時,您必須執行大量相同類型的操作。 它既漫長又困難,而且手工工作也增加了出錯的機會。 這就是配置系統發揮作用的地方。 在他們的幫助下,他們創建了一個易於程式設計師、DevOps 工程師和系統管理員閱讀的腳本。 該腳本有助於自動在伺服器上執行相同的操作。 這減少了手動操作(從而減少了錯誤)。

DevOps 工程師可以打造什麼樣的職業?

您可以橫向和縱向發展。

伊戈爾·博伊科:「從橫向發展的角度來看,DevOps工程師現在前景最廣闊。 一切都在不斷變化,您可以培養各個領域的技能:從版本控制系統到監控,從組態管理到資料庫。

如果員工有興趣了解應用程式在其生命週期的各個階段(從開發到支援)的工作原理,那麼您就可以成為系統架構師。”

如何成為 DevOps 工程師?

  1. 閱讀 Phoenix 專案和 DevOps 手冊。 這些是 DevOps 哲學的真正支柱,第一個是虛構的作品。
  2. 從上面的列表中學習技術:自行學習或透過線上課程。
  3. 以 DevOps 工程師加入開源專案。
  4. 在您的個人和工作項目中練習並提供 DevOps 實踐。

來源: www.habr.com

添加評論