2010-11-10 8 views
10

Ho sempre lavorato in ambienti in cui gli sviluppatori dovevano passare attraverso un processo di lavoro con Network Operations (server guys) per distribuire materiale dallo sviluppo/test alla produzione.Perché gli sviluppatori non dovrebbero essere in grado di distribuire direttamente nella produzione?

Recentemente ho iniziato un lavoro in cui gli sviluppatori possono passare direttamente dalle loro macchine alla produzione senza intermediari. Ci sono ragioni per cui gli sviluppatori non dovrebbero essere in grado di farlo?

Quello che ho finora:

  • si è più attenti sulla distribuzione qualcosa se si deve passare attraverso qualcun altro. Come un giovane programmatore a volte mi ci sono voluti diversi tentativi per ottenere uno spiegamento di lavoro. Dal i ragazzi di NetOps erano incazzati che ho appreso per assicurarmi che fosse giusto il primo tempo .

  • C'è una certa responsabilità se qualcosa va storto e più di una persona sa cosa sta succedendo. Boss: "Il sito è andato giù!", Tutti gli altri in ufficio: "Abe ha appena fatto un dispiegamento, è colpa sua!"

  • Quando la responsabilità di qualcuno è il server di produzione, è meno probabile che facciano qualcosa di stupido.

  • Ci saranno (si spera) più informazioni sulle funzionalità di implementazione e rollback. Registri, backup a cui è possibile eseguire il rollback, funzioni automatizzate ...

Ci sono altri buoni motivi? Sono solo un maniaco del controllo?

+6

Più appropriato su programmers.SE di SO. – Chris

risposta

5

Se c'è un modo per fare un errore La legge dei grandi numeri: è irragionevole mettere il fardello sugli sviluppatori per essere perfetto, se vuoi anche che siano produttivi.

  • La gestione del cambiamento
  • Responsabilità
  • QA pulsante
  • si costruisce/deployment
  • Unità prove di stabilità
  • Codice - supponiamo che preme, proprio quando qualcun altro appena controllato nel codice?

Ora, la quantità di spese generali/difficoltà di modifica deve essere direttamente correlata ai requisiti di tempo di attività. Rideterminato: i tempi di fermo più costosi sono, più devi investire per prevenire i tempi di fermo.

7

Il motivo principale è perché consentire a un dev di distribuire direttamente alla produzione di eliminare il processo di controllo qualità. Che introduce il rischio. Quali tipi di gestione non piacciono.

Quindi un altro punto a favore per voi è un aumento massiccio del RISCHIO.

+0

+1: cosa impedisce a uno sviluppatore insoddisfatto di fare qualcosa che non dovrebbe essere con 0-oversight? Certo, si potrebbe obiettare che il team del server introduce la stessa esposizione, ma nel mio negozio il numero di persone nel team del server è molto inferiore al numero di sviluppatori. Inoltre, un buon team di server guarderà i registri per un po 'dopo una distribuzione: vuoi che il tempo del tuo sviluppatore sia legato solo al monitoraggio ??? Lo sviluppatore-A conosce abbastanza App-B per individuare possibili problemi di interazione tra l'app e il suo ??? – Bane

+1

@bane, stai parlando di separare i ruoli che gli individui nel negozio hanno, che è un punto eccellente. – hvgotcodes

+0

@hvgotcods: il mio commento intendeva * migliorare * il tuo punto eccellente, non sfidarlo; Mi dispiace se si è imbattuto in imbarazzante. :) (in altre parole, pensavo che * la tua * risposta - aumentasse * il rischio * - fosse la risposta più corretta fornita, e il mio commento era inteso solo a fornire esempi di rischio) – Bane

10

Perché molti sviluppatori sono congenitamente incapaci di pensare che commettano errori - lo stesso motivo per cui i gruppi di sviluppo hanno gruppi di test dedicati.

"Farò solo questo piccolo cambiamento di configurazione in Prod, che non spezzerà nulla."

Gli sviluppatori OOP dovrebbero comprendere la separazione delle responsabilità, avrei pensato. Lo infrangi, lo possiedi. Evita il problema con un team Ops separato.

In alcuni ambienti (ad esempio la finanza) grandi somme di denaro (e talvolta anche la legge) sono anche a rischio di cambiamenti mal consigliati o malintenzionati in un ambiente di produzione incontrollato.

In piccole squadre, posso vedere un caso per gli sviluppatori che dispongono dell'accesso alla produzione, ma che deve essere controllato e verificabile in modo da poter SEMPRE sapere cosa c'è in produzione. In questo senso, non importa chi spinge i pulsanti di implementazione e di rollback, ma che esistono e sono il modo solo per modificare l'ambiente di produzione.

Io per primo non voglio che sia una gran parte del mio lavoro. Potresti scoprire che i tuoi sviluppatori sono d'accordo quando vedono quanto più tempo possono dedicare alla codifica.

2

Distribuendo direttamente nell'ambiente di produzione, esiste una buona probabilità che non sia coinvolto alcun QA (ovvero, non è stato eseguito il test).

2

Perché ci deve essere UNA persona che si può andare a chissà cosa viene distribuito sul sito. Se ogni sviluppatore può implementare, non sai chi ha implementato cosa fare quando qualcuno nota qualcosa di sbagliato.

14

A pochi che vengono in mente (ci può essere sovrapposizione con il vostro):

  • uno sviluppatore può modificare qualcosa finché non funziona. Questo non dovrebbe essere fatto in produzione. Se lo sviluppatore viene colpito da un autobus il giorno successivo, nessuno conoscerà il sistema. Un processo di implementazione documentato e ripetibile-da-qualcun altro aiuta a garantire che tali conoscenze aziendali vengano acquisite.
  • Come sviluppatore, io non voglio quel tipo di accesso. Se qualcosa non funziona, è molto meno probabile che sia colpa mia. Vengo e aiuto, siamo tutti della stessa squadra, dopo tutto, ma mi piace sapere che qualcun altro ha dovuto rivedere il mio lavoro e concordare con esso. (Lo stesso vale per i miei script DB delta. Voglio un DBA più qualificato la cui unica responsabilità è il database per rivedere il mio lavoro. Se tutto ciò che fanno è eseguire ciò che dico loro quando dico loro, allora non è sostanzialmente diverso da dandomi l'accesso diretto. È solo più lento.)
  • Gli sviluppatori spesso risolvono rapidamente le cose semplici. Sappiamo tutti che spesso non è così semplice come pensava lo sviluppatore, e che la soluzione rapida non l'ha risolta o ha rotto qualcos'altro. Non importa quanto piccola sia la modifica/correzione, dovrebbe esserci comunque un processo di controllo qualità. (Per alcuni negozi in cui i tempi di attività non sono così importanti che il processo di QA può essere effettivamente di produzione, ma questa è una rara eccezione. Non dovrebbe essere così, da una prospettiva purista, ma come qualsiasi cosa è un rapporto rischio/rendimento. il rischio è basso (come in un fallimento di produzione non comporta molte penalità se non del tutto) e il costo del QA è relativamente alto, quindi va bene.)
  • Requisiti normativi. La conformità PCI, ecc. Spesso richiede una chiara separazione delle attività tra i lavori. Questo è spesso frainteso come "gli sviluppatori non possono accedere alla produzione" e trattati molto in bianco e nero. Ma vuol dire che gli sviluppatori dovrebbero essere in grado di accedere solo a ciò di cui hanno bisogno per fare il loro lavoro. Se non hai bisogno di dati di produzione e tali dati sono sensibili, non dovresti averli.
+0

+1 per la menzione della conformità. Le procedure di gestione dei cambiamenti sono di primaria importanza in questo ambito. –

7

Sicurezza: con un gatekeeper (con un backup) solo una persona accede ai dati e ai server di produzione. Questo significa meno punti di accesso.

Facilità di gestione: non è necessario creare il numero di account nel proprio ambiente di produzione per tenere traccia di - o, peggio ancora, condividere un account tra molti. (Supponendo ambiente tua prod è separato dal proprio ambiente dev

La pratica rende perfetti -.. Una persona che costruisce una routine e bastoni ad esso ha meno possibilità di vite up

0

La conformità SOC-1 può (inutilmente) suggerire o richiedere che lo sviluppatore sia una persona separata rispetto a quella che esegue la produzione in modo tale che i controlli siano in atto per impedire l'intento malevolo.