DevOps significa che gli sviluppatori ora si assumono la responsabilità dell'infrastruttura e del rilascio, ma quali sono i driver alla base di questo cambiamento?


18

DevOps significa che gli sviluppatori ora si assumono la responsabilità dell'infrastruttura e del rilascio, ma quali sono i driver alla base di questo cambiamento?

Metterò le mie carte sul tavolo: sono uno sviluppatore e ho lavorato sia in "DevOps" che in non culture. Dover preoccuparsi di infrastrutture, rilasci, QA e la cerimonia associata è una grande distrazione dallo scrivere un buon codice.

Ma l'industria si sta muovendo in questa direzione, quindi quali sono le ragioni? Quali problemi ha generato il "vecchio" modello di specializzazione di ruolo?


4
Stai dicendo che la qualità del tuo codice sta diminuendo perché fai altre cose o che la quantità del tuo codice sta diminuendo.
Caleth,

1
Prendi le tue carte dal tavolo, per favore. Sembra solo una lamentela così com'è.
svidgen,

7
@svidgen Se questa domanda fosse puramente irrisolta, sarebbe diverso ma il PO ha il diritto di esprimere la propria opinione e di porre una domanda perfettamente valida.
Robbie Dee,

1
@robbie certo. noterai che ho risposto comunque ... ma, la parte "opinione" di questa domanda consuma più della metà del corpo, inserita tra la stessa domanda di base ripetuta, e distrae dalla potenziale purezza della domanda di base in questo caso. Ma si. Vale ancora la pena rispondere ..
svidgen,

Risposte:


19

Il motivo principale è il cloud.

In passato il codice veniva spedito su floppy disk, quindi su CD, quindi distribuito su un server e quindi distribuito su due server (per resilienza) ... E tutta quella distribuzione poteva essere eseguita manualmente da un essere umano, quindi gli umani sono stati addestrati a farlo.

Oggi, il tuo codice è spesso destinato a dozzine o centinaia di server. Il provisioning, la configurazione e la distribuzione su tali server non possono essere realisticamente eseguiti manualmente da un essere umano. Hai bisogno che i tuoi amministratori di sistema conoscano abbastanza script per automatizzare quel processo, dato che ora stai usando Chef o i suoi simili. Ma francamente, non c'erano abbastanza amministratori di sistema che potevano farlo. Quindi gli sviluppatori sono stati tirati dentro per recuperare il gioco.

E sì, l'aggiunta di più abilità ai requisiti sempre crescenti degli sviluppatori ridurrà naturalmente la loro competenza altrove. L' idea è che, consentendo allo sviluppatore di comprendere il processo di compilazione / rilascio, possono anticipare meglio i problemi o avere l'autonomia per migliorarlo. L'idea è che la qualità di tutto aumenta poiché le vincite del rilascio superano le perdite di scrittura del codice.

Sono scettico sul fatto che il compromesso ne valga la pena tutte le volte che le persone si rendono conto di esserlo.



15

Ci sono molte ragioni diverse per le varie organizzazioni per passare a DevOps.
Proverò ad elencare quelli che escono spesso.

Ridurre i tempi di modifica del ciclo
Spesso è necessario molto tempo tra una richiesta di modifica e la sua effettiva distribuzione e utilizzo nell'organizzazione. Prima viene pianificato in uno dei cicli di sviluppo dagli sviluppatori e dopo la consegna viene pianificato in uno dei cicli di rilascio delle operazioni. Entrambi i cicli includono test e in caso di problemi riscontrati, entrambi i cicli si resettano. Integrando i dipartimenti di sviluppo e operazioni, possiamo semplificare entrambi i processi.

Problemi relativi a software e hardware
Ricorda il cartone animato Bugs Bunny in cui Bugs e Daffy stanno discutendo se si tratta della stagione delle anatre o dei conigli? Ora immagina di averlo invece realizzato con sviluppatori e operazioni in cui gli sviluppatori sostengono che si tratta di un problema hardware e che le operazioni sostengono che si tratta di un problema software. Per l'utente finale questa è una distinzione senza differenze. Vogliono solo ripararlo.
Riunendo gli sviluppatori e le operazioni dovranno risolvere i problemi. E si può scoprire che si trattava di un problema software e hardware.

Noi vs. loro
In molte aziende la distanza tra tester e sviluppatori stava crescendo perché erano dipartimenti separati e il ciclo di sviluppo stava diventando sempre più formalizzato e standardizzato.
Con l'avvento di Agile, sviluppatori e tester hanno lavorato insieme e abbiamo iniziato a vedere il punto di vista reciproco sul ciclo di sviluppo e forse siamo persino riusciti a rispettarlo.
Qualcosa di simile deve accadere tra sviluppatori e operazioni, poiché man mano che entrambi i campi maturano e i processi si formalizzano e standardizzano ulteriormente, la distanza tra questi reparti sta aumentando. Quindi uno dei problemi con il modello tradizionale è che sembra "noi" contro "loro" sia per gli sviluppatori che per le operazioni. Entrambi non comprendono completamente la difficoltà delle responsabilità dell'altro.

Aspettative / Upsides
Con DevOps entrambe le specialità impareranno alcune delle abilità tradizionalmente eseguite dall'altra. Nessuno si aspetta che un amministratore di sistema diventi un ingegnere del software o uno sviluppatore che diventi un ingegnere di rete, ma entrambi si assumeranno alcune delle responsabilità dell'altro. Ciò significa che quando hai davvero bisogno di qualche mano in più, sono lì.

E ci sono alcuni vantaggi positivi per gli sviluppatori: ora hai un maggiore controllo sugli ambienti di test, troverai più facile avere software distribuito agli utenti e avere più persone nella tua organizzazione con cui condividere il tuo amore per il mestiere.


4
+1 - Perché riguarda l'utente finale e non solo il codice.
JeffO,

3

Scrivere un codice di qualità non è sufficiente. O fai parte del problema o parte della soluzione.

Per molti programmatori, stai scrivendo un software che viene pagato da un utente finale. Scrivere un codice di qualità è una buona cosa, ma è anche qualcosa che i clienti / manager presumono che dovresti sempre fare e fare in fretta. È come dire che un falegname taglia accuratamente le assi, ma stai davvero costruendo qualcosa per cui qualcuno vuole pagare?

DevOps offre agli sviluppatori un maggiore controllo e spera che il loro codice sia in linea con il risultato finale. Chi è più adatto per automatizzare il processo operativo? La soddisfazione dell'utente finale è il principale metro di misurazione. Non solo devi scrivere un codice di qualità, ma deve soddisfare il cliente. Siamo spiacenti, ma nessuno tornerà a utilizzare le righe di codice. A loro non importa se hai costruito il tuo framework ORM da zero proprio come all'acquirente medio di casa non importa se hai tagliato l'albero e creato le tue schede. Qualcuno vuole ripetere tutti i propri file di configurazione perché il tuo "upgrade" li riporta ai valori predefiniti?

Vuoi mostrare le tue costolette da sviluppatore? Crea qualcosa che le persone vogliono acquistare e che include l'intera esperienza utente. È fantastico che tu stia scrivendo un codice di qualità, ma sfortunatamente potresti non ricevere un bonus se non viene rilasciato in modo soddisfacente per il cliente pagante. Sentiti libero di incolpare il QA, ma la tua azienda non ha ancora abbastanza soldi per pagarti di più.


2
Sono sicuro che sai quanto è difficile assumere buoni sviluppatori di software. E ora abbiamo bisogno che siano buoni analisti aziendali, interessati alla cerimonia del QA e preoccupati dei processi di rilascio. Il numero di persone che incontreranno il nuovo bar sarà incredibilmente piccolo.
Ben

2
@Ben: non esiste "e ora"; queste sono cose che i bravi sviluppatori stavano facendo decenni prima che qualcuno pensasse che DevOps fosse una novità e coniato il termine. Il tuo lavoro come sviluppatore è quello di risolvere i problemi che si estendono dal bisogno di una soluzione per assicurarsi che le persone che devono gestire il tuo codice dopo averlo scritto non abbiano difficoltà. Non lesinare su nessuno di essi e nessuno si preoccuperà di quanto meravigliosamente i tuoi pioli quadrati siano realizzati se hanno bisogno di una slitta da dieci libbre per guidarli in fori rotondi.
Blrfl,

Questo sembra un argomento contro la specializzazione. Che una persona dovrebbe essere un tuttofare padrone di nessuno. Ciò non è suggerito in nessun altro settore, non hai elettricisti-muratori-idraulici-tetti che cercano di capire ogni piccola cosa sulla costruzione di una casa
Richard Tingle,

2
@RichardTingle: nessuno dice che devi capire tutto, ma devi capire le cose che il tuo prodotto toccherà una volta usato. Un idraulico deve sapere abbastanza su ciò che fanno gli elettricisti - o almeno lavorare con uno - per sapere che non è sicuro far passare un tubo dell'acqua fredda attraverso una scatola dell'interruttore anche se ci sono knockout disponibili per farlo.
Blrfl,

Non si preoccupa nemmeno di rispondere alla domanda. -1
RubberDuck,

2

È qualcosa che è andato di pari passo con Agile & Scrum. Non ci sono più ruoli di lavoro chiaramente definiti: ognuno è uno "sviluppatore".

E non sono solo operazioni. Gli sviluppatori devono spesso assumere analisi di business, test, amministrazione di database e ruoli di manager di build - l'elenco continua.

Al centro del problema c'era quello che potevi chiamare zangola . Con l'aumentare del numero di ruoli diversi coinvolti in un progetto, aumentavano le riunioni, i malintesi e gli scontri di risorse. Avere rapidamente il software di fronte agli utenti è la fine del gioco e tutto ciò che può essere concepibilmente ostacolato è andato un po 'in disparte.

Questa non è del tutto una brutta cosa. Il tuo sviluppatore medio espande le sue abilità, anche se adesso l'inceppamento sta diventando molto sottile. Evita inoltre le discussioni tra i programmatori e gli amministratori del server su dove si trovano i problemi quando le distribuzioni vanno per il verso giusto. Gli sviluppatori spesso vogliono distribuire soluzioni con tecnologia all'avanguardia e gli amministratori del server spesso non hanno idea di cosa significhi un POV di amministrazione fino a quando non vengono presentati con il set di installazione.

Le aziende più brillanti e lungimiranti stanno finalmente iniziando a rendersi conto che le persone a forma di T sono una buona cosa. Tuttavia, c'è una differenza tra pensare che siano una buona cosa e aspettarsi che ciò accada magicamente dove una cultura tradizionale era stata precedentemente adottata.


-1 "non sono più ruoli chiaramente definiti - ognuno è uno sviluppatore." Questo non è affatto vero. Una squadra di scrum dovrebbe essere formata da un gruppo eterogeneo di persone, che include sviluppatori, artisti grafici, ragazzi IT, ecc. I ruoli non vanno via, ma l'idea è ora che siano tutti in un solo team, non dipartimenti separati.
Andy,

1
@Andy ti consiglierei di leggere di nuovo la guida alla mischia : Scrum non riconosce alcun titolo per i membri del team di sviluppo diversi dallo sviluppatore, indipendentemente dal lavoro svolto dalla persona; non ci sono eccezioni a questa regola . Le persone ovviamente si specializzano ma, per sua stessa natura, si suppone che sia un'entità auto-organizzante.
Robbie Dee,

Chiamare qualcuno che è la specialità è creare grafica in Photoshop, o qualcuno che sta traducendo il ruolo, uno sviluppatore è fuorviante poiché lo sviluppatore di progetti software è universalmente inteso come sviluppatore software. La guida alla mischia è semplicemente sbagliata con questa affermazione.
Andy,

0

Sono sicuro che ci sono più di alcuni buoni motivi per gli sviluppatori di gestire anche le operazioni e il controllo di qualità (a volte). Eccone tre:

  • Interesse
    Alcuni sviluppatori vogliono effettivamente lavorare su tutti gli aspetti del prodotto. Se sono bravi a farlo, e se stanno riempiendo un vuoto nella squadra o stanno fornendo un buon supporto ai membri della squadra esistenti in altri ruoli, potrebbe non esserci alcun motivo per fermarli.
  • Costo Le
    grandi aziende possono permettersi dipendenti specializzati. Le piccole aziende a volte non possono. Alcuni di questi posti possono assumere 1 o forse 2 o 3 sviluppatori che devono essere semplicemente in grado di far funzionare le cose fuori dalla porta.
  • Dimensione del progetto
    Non tutti i progetti sono molti. Se stai costruendo una "piccola" applicazione, potrebbe essere semplicemente eccessivo avere più di 1 persona che la completa fino al completamento. Inoltre, i piccoli progetti con molte persone che svolgono ruoli specifici sono spaventosi . Nessuno ha abbastanza lavoro da fare - anche se puoi permetterti di tenerli tutti intorno per schioccare i pollici per 6 mesi, quelli buoni non rimarranno. Se non si annoiano, si spaventeranno o ti renderai conto che stai pagando un bel po 'per niente. Ad ogni modo, i tuoi bravi impiegati se ne andranno e diranno a tutti di stare lontano da te.

... E altri motivi, ne sono sicuro.


0

"Dover preoccuparsi di infrastrutture, rilasci, QA e la cerimonia associata è una grande distrazione dalla scrittura di un buon codice"

Fondamentalmente, penso che DevOps affermi che preoccuparsi dell'infrastruttura e delle versioni e del QA IS sta scrivendo un buon codice.

In ruoli precedenti operanti in culture non DevOps, ho avuto numerosi problemi che, probabilmente, una cultura DevOps avrebbe potuto prevenire; problemi di prestazioni relativi al codice sviluppato su piattaforme non rappresentative, problemi di codifica dei caratteri in cui gli sviluppatori ignoravano le codifiche dei caratteri utilizzate da un client, istruzioni di distribuzione codificate a mano e insufficienti per il team Ops senza un certo grado di ipotesi -opera.

Ora potresti sostenere che una maggiore specializzazione sia sul lato Dev che su quello Ops ci consente di superare alcuni di questi, ma molti possono essere risolti solo attraverso una condivisione delle conoscenze e del lavoro tra i nostri team.


0

DevOps non deve significare "Dev now do also Ops". Il termine originariamente significava "le persone Dev e Ops lavorano insieme in una squadra". E lo fa significa che l'Ops persone hanno bisogno di diventare più simili a Devs, perché l'automazione di cose richiede una sorta di programmazione, e il vecchio modo manuale non è tagliato (vedi le altre risposte per un'elaborazione più approfondita su questo punto).

Da Wikipedia :

DevOps (un composto troncato di sviluppo e operazioni) è una cultura, movimento o pratica che enfatizza la collaborazione e la comunicazione sia degli sviluppatori di software che di altri professionisti della tecnologia dell'informazione (IT) mentre automatizza il processo di consegna del software e i cambiamenti dell'infrastruttura

Quindi, a mio avviso, in realtà se tu come Dev hai le stesse vecchie responsabilità e inoltre ora le responsabilità delle Operazioni, questo sembra un errore di calcolo da parte della direzione. Automatizzando le cose è del tutto possibile che occorrano meno persone operanti e quindi ci siano risparmi sui costi. Ma DevOps certamente non significa "Liberiamoci di tutte le persone Ops e lasciamo che gli sviluppatori facciano il lavoro aggiuntivo".

Come spesso accade con Buzzwords, si verifica una semantica diffusione e all'improvviso la gente pensa "Facciamo in modo che anche gli sviluppatori facciano operazioni, e immagino che possiamo risparmiare ..."

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.