Perché gli amministratori di sistema dovrebbero diventare ingegneri DevOps

Perché gli amministratori di sistema dovrebbero diventare ingegneri DevOps

Non c’è momento migliore nella vita per imparare di oggi.


È il 2019 e DevOps è più rilevante che mai. Dicono che i tempi degli amministratori di sistema siano finiti, proprio come l'era del mainframe. Ma è davvero così?
Come spesso accade in ambito informatico, la situazione è cambiata. La metodologia DevOps è emersa, ma non può esistere senza una persona con competenze di amministratore di sistema, cioè senza Ops.

Prima che l'approccio DevOps assumesse la sua forma moderna, mi classificavo come Ops. E so benissimo cosa prova un amministratore di sistema quando si rende conto di quanto ancora non può fare e di quanto poco tempo ha per impararlo.

Perché gli amministratori di sistema dovrebbero diventare ingegneri DevOps

Ma è davvero così spaventoso? Direi che la mancanza di conoscenza non dovrebbe essere percepita come una sorta di grosso problema. E' più una sfida professionale.

I prodotti su scala web sono basati su Linux o altri software open source e sul mercato sono sempre meno le persone in grado di mantenerli. La domanda ha già superato il numero di professionisti in questo campo. Un amministratore di sistema non sarà più in grado di continuare semplicemente a lavorare senza migliorare il proprio livello di abilità. Deve possedere competenze di automazione per gestire più server/nodi e avere una buona conoscenza di come funzionano per risolvere i problemi che si presentano.

Prima di diventare membro del team DevOps, devi intraprendere un viaggio piuttosto lungo ma interessante, apprendendo nuove tecnologie e vari strumenti necessari per mantenere il sistema secondo gli standard DevOps.

Quindi, come può un amministratore di sistema passare dal consueto approccio al lavoro al nuovo concetto di DevOps? Tutto è come al solito: prima devi cambiare pensiero. Non è facile abbandonare l'approccio seguito negli ultimi dieci o vent'anni e iniziare a fare le cose diversamente, ma è necessario.

Innanzitutto è importante capire che DevOps non è una posizione specifica in un’azienda, ma un insieme di pratiche specifiche. Queste pratiche implicano la distribuzione di sistemi isolati, la riduzione del danno derivante da bug ed errori, aggiornamenti software frequenti e tempestivi, un'interazione consolidata tra sviluppatori (Dev) e amministratori (Ops), nonché test costanti non solo del codice, ma anche l'intera struttura all'interno del processo integrazione e distribuzione continua (CI/CD).

Oltre a cambiare il modo di pensare, è necessario imparare come mantenere l'infrastruttura e garantirne il funzionamento stabile, l'affidabilità e la disponibilità per l'integrazione e la fornitura continua di applicazioni, servizi e software.

Ciò che potrebbe mancarti come professionista Ops sono le capacità di programmazione. Ora scrivere script (script), che gli amministratori di sistema utilizzano per installare automaticamente patch su un server, gestire file e account, risolvere problemi e compilare documentazione, è già considerato obsoleto. Lo scripting si applica ancora in casi relativamente semplici, ma DevOps riguarda la risoluzione di problemi su larga scala, siano essi implementazione, test, build o distribuzioni.

Quindi, se vuoi imparare l'automazione, devi padroneggiare almeno un po' di programmazione, anche se non sei uno sviluppatore, perché in questa fase del tuo sviluppo automazione delle infrastrutture in DevOps richiede questa competenza.

Cosa fare? Per rimanere richiesto come specialista, è necessario acquisire competenze pertinenti: padroneggiare almeno un linguaggio di programmazione, ad esempio Python. Questo può sembrare difficile a una persona coinvolta professionalmente nell'amministrazione, poiché è abituata a pensare che solo gli sviluppatori programmino. Non è necessario diventare degli esperti, ma la conoscenza di uno dei linguaggi di programmazione (potrebbe essere Python, Bash o anche PowerShell), sarà sicuramente un vantaggio.

Imparare a programmare richiede del tempo. Essere consapevoli e pazienti ti aiuterà a rimanere aggiornato quando comunichi con i membri del team e i clienti DevOps. Mezz'ora al giorno, un'ora o più, imparare un linguaggio di programmazione dovrebbe essere il tuo obiettivo principale.

Gli amministratori di sistema e gli specialisti DevOps risolvono problemi simili, tuttavia esistono differenze significative. Si ritiene che un amministratore di sistema non possa fare tutto ciò che può fare un ingegnere DevOps. Dicono che l'amministratore di sistema è più concentrato sulla configurazione, manutenzione e garanzia delle prestazioni dei sistemi server, ma l'ingegnere DevOps tira tutto questo carrello e un altro piccolo carrello.

Ma quanto è vera questa affermazione?

Amministratore di sistema: un guerriero sul campo

Nonostante le differenze e le somiglianze rilevate in questo articolo, continuo a credere che non vi sia alcuna differenza significativa tra l'amministrazione dei sistemi e DevOps. Gli amministratori di sistema hanno sempre svolto le stesse funzioni degli specialisti DevOps, solo che prima nessuno lo chiamava DevOps. Credo che non abbia senso cercare specificamente le differenze, soprattutto se non sono legate ad alcun compito. Non dimenticare che, a differenza di un amministratore di sistema, DevOps non è una posizione, ma un concetto.

Va notato un'altra cosa importante, senza la quale una conversazione sia sull'amministrazione che su DevOps sarà incompleta. L'amministrazione del sistema nel senso comune presuppone che uno specialista abbia un insieme specifico di competenze e si concentri sulla manutenzione di vari tipi di infrastrutture. Non nel senso che si tratti di un dipendente universale, ma nel senso che ci sono una serie di compiti svolti da tutti gli amministratori.

Ad esempio, di tanto in tanto devono agire come una sorta di tuttofare tecnico, cioè fare letteralmente tutto. E se esiste un solo amministratore di questo tipo per l'intera organizzazione, generalmente eseguirà tutto il lavoro tecnico. Potrebbe trattarsi di qualsiasi cosa, dalla manutenzione di stampanti e fotocopiatrici all'esecuzione di attività relative alla rete come l'impostazione e la gestione di router e switch o la configurazione di un firewall.

Sarà inoltre responsabile degli aggiornamenti hardware, dell'ispezione e dell'analisi dei registri, dei controlli di sicurezza, dell'applicazione di patch ai server, della risoluzione dei problemi, dell'analisi delle cause principali e dell'automazione, in genere tramite script PowerShell, Python o Bash. Un esempio di utilizzo scenari è la gestione degli account utente e di gruppo. Creare account utente e assegnare autorizzazioni è un compito estremamente noioso poiché gli utenti appaiono e scompaiono quasi ogni giorno. L'automazione tramite script consente di risparmiare tempo per attività infrastrutturali più importanti, come l'aggiornamento di switch e server e altri progetti che influiscono sulla redditività dell'azienda in cui lavora l'amministratore (anche se è generalmente accettato che il reparto IT non generi direttamente entrate).

Il compito dell'amministratore di sistema è non perdere tempo e far risparmiare in ogni modo denaro all'azienda. A volte gli amministratori di sistema lavorano come membri di un grande team, unendo, ad esempio, gli amministratori di Linux, Windows, database, storage e così via. Anche gli orari di lavoro variano. Ad esempio, uno spostamento in un fuso orario alla fine della giornata trasferisce i casi al turno successivo in un altro fuso orario in modo che i processi non si interrompano (follow-the-sun); oppure i dipendenti hanno una normale giornata lavorativa dalle 9:5 alle XNUMX:XNUMX; oppure funziona in un data center XNUMX ore su XNUMX, XNUMX giorni su XNUMX.

Nel corso del tempo, gli amministratori di sistema hanno imparato a pensare in modo strategico e a combinare questioni importanti con attività di routine. I team e i dipartimenti in cui lavorano sono solitamente a corto di risorse, ma allo stesso tempo tutti cercano di portare a termine al massimo le attività quotidiane.

DevOps: sviluppo e manutenzione come una cosa sola

DevOps è una sorta di filosofia per i processi di sviluppo e manutenzione. Questo approccio nel mondo IT è diventato davvero innovativo.

Sotto l’egida di DevOps, c’è un team di sviluppo software da un lato e un team di manutenzione dall’altro. A loro si uniscono spesso specialisti della gestione del prodotto, tester e progettisti di interfacce utente. Insieme, questi esperti semplificano le operazioni per implementare rapidamente nuove applicazioni e aggiornamenti del codice per supportare e migliorare l'efficienza dell'intera azienda.

DevOps si basa sul controllo dello sviluppo e del funzionamento del software durante il suo intero ciclo di vita. Gli addetti alla manutenzione devono supportare gli sviluppatori e gli sviluppatori hanno il compito di comprendere qualcosa di più delle semplici API utilizzate nei sistemi. Devono capire cosa c'è sotto il cofano (ovvero come funzionano l'hardware e i sistemi operativi) in modo da poter gestire meglio i bug, risolvere problemi e interagire con i tecnici dell'assistenza.

Gli amministratori di sistema possono entrare a far parte di un team DevOps se desiderano apprendere le tecnologie più recenti e sono aperti a idee e soluzioni innovative. Come ho detto prima, non è necessario che diventino programmatori a tutti gli effetti, ma padroneggiare un linguaggio di programmazione come Ruby, Python o Go li aiuterà a diventare membri molto utili del team. Sebbene gli amministratori di sistema tradizionalmente svolgano tutto il lavoro da soli e siano spesso percepiti come solitari, in DevOps vivono un'esperienza completamente opposta, in cui tutti nel processo interagiscono tra loro.

Il tema dell’automazione sta diventando sempre più attuale. Sia gli amministratori di sistema che gli specialisti DevOps sono interessati a scalare rapidamente, ridurre gli errori e trovare e correggere rapidamente gli errori esistenti. Pertanto, l’automazione è un concetto in cui convergono due aree. Gli amministratori di sistema sono responsabili dei servizi cloud come AWS, Azure e Google Cloud Platform. Devono comprendere i principi dell'integrazione e della fornitura continue e come utilizzare strumenti come Jenkins.

Inoltre, gli amministratori di sistema devono utilizzare strumenti di configurazione e gestione come ansible, necessario per la distribuzione parallela di dieci o venti server.

Il concetto principale è infrastruttura come codice. Il software è tutto. Infatti, affinché la professione di amministratore di sistema non perda rilevanza, basta cambiare leggermente l'enfasi. Gli amministratori di sistema operano nel settore dei servizi e devono essere in grado di comunicare in modo efficace con gli sviluppatori e viceversa. Come si suol dire, una testa è buona, ma due sono meglio.

E l'ultimo dettaglio in questo meccanismo è Idiota. Lavorare con Git è una delle tradizionali responsabilità quotidiane di un amministratore di sistema. Questo sistema di controllo della versione è ampiamente utilizzato da sviluppatori, specialisti DevOps, team Agile e molti altri. Se il tuo lavoro è legato al ciclo di vita del software, lavorerai sicuramente con Git.

Git ha molte funzionalità. Probabilmente non imparerai mai tutti i comandi Git, ma capirai esattamente perché è un punto fermo nella comunicazione e collaborazione software. Una conoscenza approfondita di Git è molto importante se lavori in un team DevOps.

Se sei un amministratore di sistema, devi studiare meglio Git, capire come viene creato il controllo della versione e ricordare i comandi comuni: git status, git commit -m, git add, git pull, git push, git rebase, git branch, git diff e altri. Esistono molti corsi e libri online che possono aiutarti ad apprendere questo argomento da zero e diventare un professionista con competenze specifiche. Ci sono anche meravigliosi cheat sheet con comandi Git, quindi non devi stiparli tutti, ma più usi Git, più facile sarà.

conclusione

Alla fine sarai tu a decidere se devi diventare uno specialista DevOps o se è meglio rimanere un amministratore di sistema. Come puoi vedere, c'è una curva di apprendimento per effettuare la transizione, ma prima inizi, meglio è. Scegli un linguaggio di programmazione e contemporaneamente apprendi strumenti come Idiota (controllo della versione), Jenkins (CI/CD, integrazione continua) e ansible (configurazione e automazione). Qualunque opzione tu scelga, non dimenticare che devi imparare e migliorare costantemente le tue capacità.

Fonte: habr.com

Aggiungi un commento