為什麼系統管理員應該成為 DevOps 工程師

為什麼系統管理員應該成為 DevOps 工程師

生活中沒有比今天更好的學習時間了。


現在是 2019 年,DevOps 比以往任何時候都更重要。 他們說系統管理員的時代已經結束,就像大型主機的時代一樣。 但事實真的是這樣嗎?
正如 IT 領域經常發生的那樣,情況已經發生了變化。 DevOps 方法論已經出現,但如果沒有系統管理員技能的人,即沒有 Ops,它就不可能存在。

在 DevOps 方法呈現其現代形式之前,我將自己歸類為維運人員。 我非常了解當系統管理員意識到自己還有多少事情還不能做以及他需要學習的時間是多麼少時,他會經歷什麼。

為什麼系統管理員應該成為 DevOps 工程師

但真的有那麼可怕嗎? 我想說,缺乏知識不該被視為某種大問題。 這更像是職業挑戰。

Web規模的產品是基於Linux或其他開源軟體,市場上能夠維護它們的人越來越少。 需求已經超過了該領域專業人員的數量。 系統管理員將不再能夠在不提高其技能水平的情況下簡單地繼續工作。 他必須具備管理多個伺服器/節點的自動化技能,並充分了解它們如何解決出現的問題。

在成為 DevOps 團隊的一員之前,你必須經歷一段相當漫長但有趣的旅程,學習新技術和按照 DevOps 標準維護系統所需的各種工具。

那麼,系統管理員如何從通常的工作方式轉向 DevOps 的新概念呢? 一切如常:首先你需要改變你的想法。 放棄過去十年或二十年來一直遵循的方法並開始以不同的方式做事並不容易,但這是必要的。

首先,要明白DevOps並不是公司的某個特定職位,而是一組具體的實踐。 這些實踐意味著隔離系統的分佈、減少錯誤和錯誤的危害、頻繁及時的軟體更新、開發人員 (Dev) 和管理員 (Ops) 之間建立良好的交互,以及不僅對程式碼進行持續測試,而且對還有流程中的整個結構 持續整合和交付(CI/CD).

在改變思維方式的同時,您還需要學習如何維護基礎架構並確保其穩定運作、可靠性和可用性,以實現應用程式、服務和軟體的持續整合和交付。

身為維運專業人員,您可能缺少的是程式設計技能。 現在編寫腳本(腳本),系統管理員用來在伺服器上自動安裝修補程式、管理文件和帳戶、解決問題以及編譯文檔,已經被認為已經過時了。 腳本仍然適用於相對簡單的情況,但 DevOps 是為了解決大規模問題,無論是實施、測試、建置還是部署。

因此,如果你想學習自動化,即使你不是開發人員,你至少需要掌握一點編程,因為在你的開發階段 基礎設施自動化 DevOps 需要這項技能。

怎麼辦? 為了保持作為專家的需求,您需要獲得相關技能 - 掌握至少一種程式語言,例如 Python。 對於專業從事管理工作的人來說,這似乎很困難,因為他習慣認為只有開發人員才會進行程式設計。 不一定要成為專家,但要了解其中一種程式語言(可以是 Python、Bash 甚至 PowerShell的),絕對是優勢。

學習程式設計需要一些時間。 在與 DevOps 團隊成員和客戶溝通時,保持專心和耐心將幫助您掌控全局。 每天半小時、一小時或更長時間,學習程式語言應該是你的主要目標。

系統管理員和 DevOps 專家解決類似的問題,但有顯著差異。 人們認為,系統管理員無法完成 DevOps 工程師所能做的所有事情。 他們說系統管理員更專注於配置、維護和確保伺服器系統的效能,但DevOps工程師卻拉著這輛大車和另一輛小車。

但這種說法的真實性如何呢?

系統管理員:戰場上的一名戰士

儘管本文指出了差異和相似之處,但我仍然認為系統管理和 DevOps 之間沒有顯著差異。 系統管理員一直執行與 DevOps 專家相同的功能,只是之前沒有人稱之為 DevOps。 我認為專門尋找差異是沒有意義的,特別是如果它與任何任務無關。 不要忘記,與系統管理員不同,DevOps 不是一個職位,而是一個概念。

應該注意一件更重要的事情,否則關於管理和 DevOps 的對話將是不完整的。 通常意義上的系統管理以專家擁有一套特定的技能為前提,並且專注於為各種類型的基礎設施提供服務。 並不是說這是一個通用員工,而是說所有管理員都執行許多任務。

例如,他們有時必須充當技術勤雜工,即幾乎做所有事情。 而如果整個組織只有一個這樣的管理員,那麼他一般會承擔所有的技術工作。 這可以是任何事情,從維護印表機和影印機到執行與網路相關的任務,例如設定和管理路由器和交換器或設定防火牆。

他還將負責硬體升級、日誌檢查和分析、安全審核、伺服器修補、故障排除、根本原因分析和自動化(通常透過 PowerShell、Python 或 Bash 腳本進行)。 一個使用範例 場景 是使用者和群組帳戶的管理。 建立使用者帳戶和分配權限是一項極其繁瑣的任務,因為使用者幾乎每天都會出現和消失。 透過腳本實現自動化可以騰出時間來執行更重要的基礎設施任務,例如昇級交換機和伺服器以及其他影響管理員所在公司獲利能力的項目(儘管人們普遍認為 IT 部門不會直接產生收入)。

系統管理員的任務不是浪費時間,而是以任何可能的方式為公司節省金錢。 有時,系統管理員會作為一個大團隊的成員工作,例如,Linux、Windows、資料庫、儲存等的管理員。 工作安排也各不相同。 例如,一天結束時一個時區的輪班會將案例轉移到另一個時區的下一個班次,以便流程不會停止(跟隨太陽); 或員工的正常工作日為上午 9 點至下午 5 點; 或它在 XNUMX/XNUMX 資料中心工作。

隨著時間的推移,系統管理員學會了策略性思考並將重要事項與日常任務結合。 他們所在的團隊和部門通常資源匱乏,但同時每個人都在盡力完成日常任務。

DevOps:開發與維護合而為一

DevOps的 是一種開發和維護過程的哲學。 這種方法在 IT 領域已成為真正的創新方法。

在 DevOps 的保護下,一方面有軟體開發團隊,另一方面有維修團隊。 他們通常由產品管理專家、測試人員和使用者介面設計師加入。 這些專家共同簡化運營,快速推出新應用程式和程式碼更新,以支援和提高整個公司的效率。

DevOps 是基於對軟體整個生命週期的開發和營運的控制。 維護人員必須支援開發人員,而開發人員的任務不僅僅是了解系統中使用的 API。 他們需要了解幕後的內容(即硬體和作業系統如何運作),以便更好地處理錯誤、解決問題並與服務技術人員互動。

如果系統管理員想要學習最新技術並對創新想法和解決方案持開放態度,則可以加入 DevOps 團隊。 正如我所說,他們不必成為成熟的程式設計師,但掌握 Ruby、Python 或 Go 等程式語言將幫助他們成為團隊中非常有用的成員。 儘管系統管理員傳統上會自己完成所有工作,並且通常被認為是孤獨的人,但在 DevOps 中,他們有完全相反的體驗,流程中的每個人都相互互動。

自動化的話題變得越來越重要。 系統管理員和 DevOps 專家都對快速擴展、減少錯誤以及快速查找和修復現有錯誤感興趣。 因此,自動化是兩個領域融合的概念。 系統管理員負責AWS、Azure和Google Cloud Platform等雲端服務。 他們必須了解持續整合和交付的原則以及如何使用諸如 詹金斯.

此外,系統管理員必須使用設定和管理工具,例如 Ansible,並行部署十到二十台伺服器所必需的。

主要概念是 基礎設施即程式碼。 軟體就是一切。 事實上,為了讓系統管理員這個職業不失去相關性,你只需要稍微改變重點。 系統管理員從事服務業務,必須能夠與開發人員進行有效的溝通,反之亦然。 正如他們所說,一個頭很好,但兩個更好。

這個機制的最後一個細節是 混帳。 使用 Git 是系統管理員的傳統日常職責之一。 此版本控制系統被開發人員、DevOps 專家、敏捷團隊等廣泛使用。 如果你的工作與軟體生命週期有關,那麼你一定會使用Git。

Git 有很多功能。 您可能永遠不會學習所有 Git 命令,但您會確切地理解為什麼它是軟體通訊和協作的主要內容。 如果您在 DevOps 團隊中工作,全面了解 Git 非常重要。

如果你是系統管理員,那麼你需要更好地學習Git,了解版本控制是如何建構的並記住常用指令: git狀態,git提交-m,git添加,git拉,git推,git變基,git分支,git diff 和別的。 有許多線上課程和書籍可以幫助您從頭開始學習這個主題並成為具有特定技能的專業人士。 還有精彩的 Git 指令備忘單,所以你不必把它們全部死記硬背,但是你​​使用 Git 越多,就會越容易。

結論

最終,您決定是否需要成為 DevOps 專家,或者是否最好繼續擔任系統管理員。 如您所見,過渡需要一個學習曲線,但越早開始越好。 選擇一種程式語言並同時學習諸如 混帳 (版本控制), 詹金斯 (CI/CD,持續整合)和 Ansible (配置和自動化)。 無論您選擇哪種選擇,請不要忘記您需要不斷學習和提高您的技能。

來源: www.habr.com

添加評論