Articoli
Tutorial
Guide interattive
Considerazioni per la toolchain DevOps
Toolchain DevOps all-in-one o personalizzabile, quale scegliere?
Robert Krohn
Head of Engineering, DevOps
Contributo editoriale: Chandler Harris
Una toolchain DevOps è una raccolta di strumenti, spesso di fornitori diversi, che operano come unità integrata per progettare, compilare, testare, gestire, misurare e utilizzare software e sistemi. Consente ai team di sviluppo e operativi di collaborare lungo l'intero ciclo di vita del prodotto e affronta principi fondamentali di DevOps, tra cui la continuous integration, la continuous delivery, l'automazione e la collaborazione.
Da Agile a DevOps
Quando i principi Agile si sono ampiamente diffusi, hanno rivoluzionato il modo in cui creiamo i prodotti. Abbiamo adottato team di piccole dimensioni e interfunzionali, e sprint di una o due settimane da cui sono nati artefatti pronti per la produzione. Abbiamo avuto cicli di feedback serrati e miglioramenti continui. Abbiamo consegnato i prodotti più velocemente e con meno difficoltà.
È incredibile quanto possano cambiare velocemente le cose. Ora con i servizi cloud, SaaS e sempre attivi, il ciclo di vita dello sviluppo è molto più veloce. Accade spesso che più fasi di sviluppo e test avvengano contemporaneamente. Mentre Agile in genere aveva sprint di una o due settimane, i team negli odierni ambienti nativi per il cloud effettuano iterazioni e distribuzioni più volte al giorno. I flussi di lavoro e le basi di codice si evolvono costantemente. I team utilizzano flag delle funzioni, implementazioni progressive e test A/B per garantire una distribuzione continua di codice pulito e di alta qualità.
Ciò ha determinato l'evoluzione da Agile a DevOps, un insieme di procedure che automatizza e integra i processi tra lo sviluppo del software e i team IT, consentendo loro di creare, testare e rilasciare software in modo più rapido e affidabile. I team DevOps vengono misurati in base alla velocità con cui eseguono il push di codice in produzione. Sono definiti dal numero di iterazioni spedite ogni giorno e dal tempo necessario affinché una modifica del codice vada dal test alla distribuzione fino alla produzione. Per i progetti tipici del mio team vengono effettuate fino a 20 modifiche al giorno. Per alcuni progetti più grandi si arriva fino a 100 modifiche al giorno.
Questo flusso di lavoro accelerato è reso possibile da nuovi strumenti che consentono ai team di collaborare nell'ambito delle attività di sviluppo, test e distribuzione. In particolare, una toolchain DevOps aiuta i team ad affrontare molto rapidamente ogni fase del ciclo di vita dello sviluppo.
Che cos'è una toolchain DevOps?
Una toolchain DevOps include gli strumenti e la tecnologia che consentono ai team di sviluppo e operativi di collaborare durante l'intero ciclo di vita del software. Gestisce gli aspetti fondamentali di DevOps, tra cui la continuous integration, la continuous delivery, l'automazione e la collaborazione.
Poiché DevOps rappresenta un cambiamento culturale in cui i team di sviluppo e operativi agiscono come unità integrate, non esiste un unico strumento che abiliti i principi e le pratiche DevOps. Una toolchain DevOps è invece una raccolta di strumenti, spesso di diversi fornitori, che operano come unità integrata per progettare, compilare, testare, gestire, misurare e utilizzare software e sistemi. Spesso le organizzazioni e i team devono provare diverse combinazioni di strumenti per trovare la toolchain giusta.
Se si osserva un prodotto DevOps sofisticato, la toolchain DevOps dovrebbe essere in grado di affrontare molto rapidamente diverse componenti del ciclo di vita dello sviluppo e offrire più punti di vista per utenti diversi. Dovrebbe includere strumenti di sviluppo che gestiscano ogni fase del ciclo di vita dello sviluppo, tra cui la continuous integration e la continuous delivery, l'automazione dei test e la distribuzione ad alta velocità. Dal lato operativo di DevOps, gli strumenti dovrebbero includere funzionalità che facilitino il monitoraggio e la gestione degli imprevisti. Inoltre, gli strumenti dovrebbero fare da tramite tra il team di sviluppo e quello operativo fornendo feedback e registrazione continui.
materiale correlato
Inizia gratis
materiale correlato
Esplora le integrazioni
Se si considera il lato sinistro del simbolo dell'infinito come il lato prodotto e il lato destro come lato operativo, il responsabile del prodotto che inserisce una nuova funzione in produzione è interessato a vedere in che modo il progetto si suddivide in task e storie utente. Lo sviluppatore sul lato sinistro del progetto deve capire come spostare la funzionalità in produzione, includendo ticket di progetto, storie utenti e dipendenze. Se gli sviluppatori aderiscono al principio DevOps "You Build It, You Run It", sono interessati anche alla risoluzione degli imprevisti.
Passando al lato operativo del ciclo di vita, il tecnico responsabile dell'affidabilità del sito deve comprendere i servizi che possono essere misurati e monitorati, in modo da poter correggere gli eventuali problemi che si verificano. Se non si dispone di una toolchain DevOps che unisce tutti questi processi, il risultato è un ambiente caotico, disordinato e non correlato. Se si dispone di una toolchain adeguatamente integrata, è possibile ottenere un contesto migliore di ciò che sta avvenendo.
Opzioni per la creazione della toolchain DevOps
Nella scelta della toolchain DevOps appropriata, è importante innanzitutto comprendere le best practice DevOps fondamentali e il modo in cui gli strumenti le supportano. Quindi, occorre stabilire una strategia comune per gli strumenti che consenta ai team di collaborare durante lo sviluppo, i test e la distribuzione.
Quando le organizzazioni adottano DevOps, di solito si trovano di fronte a due scelte: una toolchain DevOps "all-in-one" o una toolchain DevOps personalizzata. La scelta della configurazione corretta è importante in quanto modella i processi DevOps di un team.
Toolchain DevOps all-in-one
Una soluzione DevOps all-in-one è una soluzione completa che potrebbe non integrarsi con altri strumenti di terze parti. Ciò può essere utile per aziende o gruppi che hanno appena iniziato il loro percorso DevOps o nel caso di un team che desideri avviare rapidamente un progetto. Lo svantaggio di questo tipo di toolchain risiede nel fatto che la maggior parte dei team consolidati dispone già di un set di strumenti preferenziali, che potrebbero non integrarsi con una soluzione completa. Inoltre, una toolchain così completa potrebbe risentire della sindrome della soluzione generalista. Un unico strumento semplicemente non sarà in grado evolversi al ritmo di mercati in rapida evoluzione. Infine, il più delle volte le aziende devono integrare strumenti legacy in una toolchain DevOps e una toolchain all-in-one può essere limitante in tal senso.
Toolchain DevOps personalizzabile
L'altro approccio consiste nell'utilizzare una toolchain DevOps che può essere personalizzata per le esigenze di un team che utilizza strumenti diversi. Ciò consente ai team di integrare gli strumenti esistenti che conoscono e apprezzano nella toolchain DevOps più ampia. Ad esempio, un team può utilizzare Jira per la pianificazione e il monitoraggio del flusso di lavoro, Kubernetes per il provisioning di singoli ambienti di sviluppo, GitHub per la codifica collaborativa, Jenkins per la continuous integration e altro ancora. Le organizzazioni possono personalizzare i flussi di lavoro per team e/o per progetto.
L'integrazione è essenziale per questi tipi di toolchain. Se i vari strumenti non si integrano, i membri del team impiegano inutilmente il proprio tempo a passare da una schermata all'altra e ad accedere a più posizioni; inoltre, la condivisione di informazioni tra gli strumenti potrebbe essere difficile. Non si tratta di un'esperienza piacevole per gli sviluppatori o per chiunque cerchi di capire cosa stia avvenendo. Se sei impegnato a rispondere a un imprevisto, non hai il tempo di consultare un manuale e cercare informazioni chiave su un nuovo strumento.
In conclusione...
DevOps ha a che fare con l'abbattimento dei silos e con la capacità di rendere il ciclo di vita dello sviluppo più veloce, altamente automatizzato e collaborativo in modo fluido, sia che si tratti di un ciclo di vita interfunzionale o interno a un unico team. La scelta degli strumenti DevOps adeguati e che funzionano insieme comporta innanzitutto un attento esame del processo corrente di sviluppo del software e delle operazioni IT e l'individuazione delle aree in cui è necessario apportare miglioramenti.
Scopri di più sugli strumenti per ogni fase del ciclo di vita DevOps.
Condividi l'articolo
Argomento successivo
Letture consigliate
Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.