Esiste un set di domande comuni che si verificano intorno alla relazione tra la progettazione dell'affidabilità del sito e DevOps, tra cui "Come sono uguali? Quali sono le differenze? Possiamo avere entrambi nell'organizzazione?". Questo articolo tenta di condividere alcune delle risposte offerte dalle community SRE e DevOps che ci avvicinano alla comprensione di questa relazione.
Come sono uguali?
SRE e DevOps sono entrambe procedure operative moderne create e sviluppate in risposta alle sfide che includono:
- una crescente complessità degli ambienti di produzione e dei processi di sviluppo
- l'aumento della dipendenza delle organizzazioni dal funzionamento continuo di tali ambienti
- l'impossibilità di ridimensionare il personale in modo lineare per adattarlo alle dimensioni di questi ambienti
- la necessità di muoversi più velocemente mantenendo comunque la stabilità operativa
Entrambe le pratiche operative apprezzano l'attenzione su soggetti cruciali per affrontare queste sfide, ad esempio monitoraggio/osservabilità, automazione, documentazione e strumenti di sviluppo di software collaborativi.
Ci sono notevoli sovrapposizioni negli strumenti e nelle aree di lavoro tra SRE e DevOps. Poiché la cartella di lavoro sull'affidabilità del sito lo inserisce, "SRE crede nelle stesse cose di DevOps, ma per motivi leggermente diversi".
Tre modi diversi per confrontare le due procedure operative
Le analogie tra SRE e DevOps sono chiare. Dove si ottiene davvero interessante è come i due differiscono o divergono. Qui offriamo tre modi per pensare alla loro relazione come un modo per portare alcune sfumature a questa domanda. Non è possibile accettare queste risposte, ma ognuna fornisce un buon punto di partenza per la discussione.
"class SRE implementa l'interfaccia DevOps"
La cartella di lavoro sull'affidabilità del sito (menzionata nell'elenco dei libri di risorse) illustra SRE e DevOps nel primo capitolo. Questo capitolo usa la frase "class SRE implementa l'interfaccia DevOps" come sottotitolo. Ciò significa suggerire (usando una frase rivolta agli sviluppatori) che SRE potrebbe essere considerata un'implementazione specifica della filosofia DevOps. Come sottolinea il capitolo, "DevOps è relativamente silenzioso su come eseguire le operazioni a un livello dettagliato" mentre SRE è notevolmente più prescrittivo nelle procedure. Quindi una possibile risposta alla domanda su come le due relazioni è SRE potrebbe essere considerata una delle molte implementazioni possibili di DevOps.
SRE consiste nell'affidabilità perché DevOps prevede il recapito
Questo confronto è un po ' fangoso perché esistono più definizioni per SRE e DevOps, ma è ancora potenzialmente utile. Inizia con la domanda "Se dovevi distillare ogni pratica operativa in una o due parole che riflettono la sua preoccupazione principale, che cosa sarebbe?"
Se si usa questa definizione di SRE dall'hub di progettazione dell'affidabilità del sito:
Site Reliability Engineering (SRE) è una disciplina di ingegneria informatica dedicata ad assistere le organizzazioni nell'ottenimento in modo sostenibile dei livelli di affidabilità appropriati per i sistemi, i servizi e i prodotti.
quindi sarebbe facile dire che la parola per SRE è "affidabilità". Avendolo proprio al centro del nome offre anche alcune prove eccellenti per questa attestazione.
Se si usa questa definizione di DevOps dal Centro risorse di Azure DevOps:
DevOps è l'unione di persone, processi e prodotti in grado di offrire recapito continuo di valore agli utenti finali.
successivamente, una simile formattazione per DevOps potrebbe essere "consegna".
Di conseguenza, "SRE è di affidabilità perché DevOps è alla distribuzione".
Direzione dell'attenzione
Questa risposta è citata o leggermente parafrasata da un contributo di Thomas Limoncelli al libro Di ricerca SRE menzionato nella nostra lista dei libri di risorse. Egli nota che i tecnici DevOps si concentrano in gran parte sulla pipeline del ciclo di vita di sviluppo software con responsabilità occasionali delle operazioni di produzione, mentre le SRE si concentrano sulle operazioni di produzione con responsabilità occasionali della pipeline SDLC.
Ma soprattutto, disegna anche un diagramma che inizia con il processo di sviluppo software da un lato e le operazioni di produzione lavorano sull'altro. I due sono connessi dalla consueta pipeline creata per acquisire il codice da uno sviluppatore, guidare il codice attraverso il numero desiderato di test e fasi e quindi spostare il codice nell'ambiente di produzione.
Limoncelli osserva che i tecnici DevOps iniziano nell'ambiente di sviluppo e automatizzano i passaggi verso la produzione. Al termine, tornano per ottimizzare i colli di bottiglia.
Gli SRE, d'altra parte, si concentrano sulle operazioni di produzione e raggiungono il fondo della pipeline come mezzo per migliorare il risultato finale (fondamentalmente lavorando nella direzione opposta).
Si tratta di questa differenza nella direzione dello stato attivo SRE e DevOps che può aiutare a differenziarli.
Coesistenza nella stessa organizzazione
La domanda finale da affrontare è "È possibile avere sia SRE che DevOps nella stessa organizzazione?"
La risposta a questa domanda è un enfatico "sì!".
Speriamo che le risposte precedenti offrano un'idea del modo in cui le due procedure operative si sovrappongono e, quando non si sovrappongono, come possono essere complementari in focus. Le organizzazioni con una pratica DevOps consolidata possono sperimentare le procedure SRE su scala ridotta (ad esempio, provare contratti di servizio e contratti di servizio) senza dover eseguire il commit per creare posizioni o team SRE. Si tratta di un modello di adozione SRE abbastanza comune.
Passaggi successivi
Per altre informazioni sull'ingegneria dell'affidabilità del sito o Su DevOps, Consultare l'hub di progettazione dell'affidabilità del sito e il Centro risorse di Azure DevOps.