Che cos'è DevOps?
In un modello di sviluppo software tradizionale, gli sviluppatori scrivono grandi quantità di codice per nuove funzionalità, prodotti, correzioni di bug e simili, e poi passano il loro lavoro al team operativo per la distribuzione, di solito tramite un sistema di ticketing automatizzato. Il team operativo riceve questa richiesta nella sua coda, testa il codice e lo prepara per la produzione - un processo che può richiedere giorni, settimane o mesi. Secondo questo modello tradizionale, se le operazioni riscontrano dei problemi durante la distribuzione, il team invia un ticket agli sviluppatori per dire loro cosa devono risolvere. Alla fine, dopo aver risolto questo tira e molla, il carico di lavoro viene spinto in produzione.
Questo modello rende la consegna del software un processo lungo e frammentato. Gli sviluppatori spesso vedono le operazioni come un blocco, che rallenta le tempistiche dei loro progetti, mentre i team operativi si sentono come una discarica per i problemi dello sviluppo.
DevOps risolve questi problemi unendo i team di sviluppo e operativi lungo l'intero processo di consegna del software, consentendo loro di scoprire e risolvere i problemi in anticipo, automatizzare i test e la distribuzione e ridurre il time-to-market.
DevOps non è
- Una combinazione dei team Dev e Ops: Ci sono ancora due team, ma operano in modo comunicativo e collaborativo.
- Un team separato: Non esiste un "ingegnere DevOps". Anche se alcune aziende possono nominare un team DevOps come pilota quando cercano di passare a una cultura DevOps, DevOps si riferisce a una cultura in cui sviluppatori, tester e personale operativo collaborano durante l'intero ciclo di vita della consegna del software.
- Uno strumento o un insieme di strumenti: Anche se ci sono strumenti che funzionano bene con un modello DevOps o che aiutano a promuovere la cultura DevOps, DevOps è in definitiva una strategia, non uno strumento.
- Automazione: Sebbene sia molto importante per una cultura DevOps, l'automazione da sola non definisce DevOps.
DevOps definito
Invece di far sì che gli sviluppatori codifichino enormi serie di funzionalità prima di consegnarle alla cieca alle operazioni per la distribuzione, in un modello DevOps, gli sviluppatori consegnano spesso piccole quantità di codice per il test continuo. Invece di comunicare problemi e richieste attraverso un sistema di ticket, i team di sviluppo e operativi si incontrano regolarmente, condividono le analisi e sono co-proprietari dei progetti end-to-end.
Pipeline CI/CD
DevOps è un ciclo di integrazione continua e consegna continua (o distribuzione continua), altrimenti noto come pipeline CI/CD. La pipeline CI/CD integra i team di sviluppo e operativi per migliorare la produttività, automatizzando l'infrastruttura e i flussi di lavoro e misurando continuamente le prestazioni delle applicazioni. Si presenta così:

- L'integrazione continua richiede agli sviluppatori di integrare il codice in un repository più volte al giorno per i test automatizzati. Ogni check-in viene verificato da una build automatizzata, consentendo ai team di individuare i problemi in anticipo.
- La consegna continua, da non confondere con la distribuzione continua, significa che la pipeline CI è automatizzata, ma il codice deve passare attraverso controlli tecnici manuali prima di essere implementato in produzione.
- La distribuzione continua fa un ulteriore passo avanti nella consegna continua. Invece dei controlli manuali, il codice supera i test automatizzati e viene distribuito automaticamente, dando ai clienti l'accesso immediato alle nuove funzionalità.
DevOps e sicurezza
Un problema di DevOps è che la sicurezza spesso viene trascurata. Gli sviluppatori si muovono rapidamente e i loro flussi di lavoro sono automatizzati. La sicurezza è un team separato e gli sviluppatori non vogliono rallentare per i controlli e le richieste di sicurezza. Di conseguenza, molti sviluppatori distribuiscono senza passare attraverso i canali di sicurezza adeguati e inevitabilmente commettono errori di sicurezza dannosi.
Per risolvere questo problema, le organizzazioni stanno adottando DevSecOps. DevSecOps prende il concetto alla base di DevOps - l'idea che gli sviluppatori e i team IT debbano collaborare strettamente, anziché separatamente, durante la consegna del software - e lo estende per includere la sicurezza e integrare controlli automatizzati nell'intera pipeline CI/CD. Questo elimina il problema della sicurezza che sembra una forza esterna e consente agli sviluppatori di mantenere la loro velocità senza compromettere la sicurezza dei dati.