Guida per principianti: creazione di catene DevOps con strumenti open source

Guida per principianti: creazione di catene DevOps con strumenti open source
Creare la prima catena DevOps in cinque semplici passi per principianti.

DevOps è diventato la soluzione per processi di sviluppo troppo lenti, disconnessi e problematici. Tuttavia, servono conoscenze minime di DevOps. Qui si discuteranno concetti come la catena DevOps e come crearla in cinque passi. Questa non è una guida completa, ma solo una 'bozza' che può essere ampliata. Iniziamo con una storia.

La mia introduzione a DevOps

Un tempo lavoravo con il cloud in Citi Group e sviluppavo un'applicazione web IaaS per gestire l'infrastruttura cloud di Citi, ma sono sempre stato curioso di scoprire come ottimizzare la catena di sviluppo e migliorare la cultura tra gli sviluppatori. Greg Lavender, il nostro CTO per architettura cloud e infrastruttura, mi ha consigliato un libro Il Progetto 'Phoenix'. Spiega magnificamente i principi di DevOps, leggendo come un romanzo.

Nella tabella sul retro è mostrato quanto spesso le aziende rilasciano nuove versioni:

Guida per principianti: creazione di catene DevOps con strumenti open source

Come fa Amazon, Google e Netflix a rilasciare così tanto? È semplice: hanno capito come creare una catena DevOps quasi perfetta.

Da noi in Citi le cose erano molto diverse, fino a quando non siamo passati al DevOps. All'epoca, il mio team aveva ambienti diversi, ma il deploy sul server di sviluppo veniva effettuato manualmente. Tutti gli sviluppatori avevano accesso a un solo server di sviluppo basato su IBM WebSphere Application Server Community Edition. Quando più di noi tentava di effettuare il deploy contemporaneamente, il server si “bloccava” e dovevamo sempre “negotiare” con fatica. Inoltre, avevamo una copertura di codice test insufficienti, un processo di deploy manuale laborioso e nessuna possibilità di tracciare il deploy del codice in relazione a qualche requisito o richiesta del cliente.

È stato chiaro che era necessario agire rapidamente e ho trovato un collega con cui condividere la stessa visione. Abbiamo deciso di creare insieme il nostro primo flusso DevOps: lui ha configurato la macchina virtuale e il server applicativo Tomcat, mentre io mi sono occupato di Jenkins, dell'integrazione con Atlassian Jira e BitBucket, oltre che della copertura del codice con i test. Il progetto è stato un successo: abbiamo completamente automatizzato il flusso di sviluppo, raggiunto quasi il 100% di uptime del server di sviluppo, potuto monitorare e migliorare la copertura del codice con i test, e il ramo Git è stato associato a una consegna e a un task Jira. E quasi tutti gli strumenti con cui abbiamo costruito il flusso DevOps erano open source.

In realtà, il flusso era semplificato, poiché non abbiamo nemmeno utilizzato configurazioni avanzate con Jenkins o Ansible. Ma siamo riusciti a portarlo a termine. Forse è il risultato del principio Pareto (noto anche come regola 80/20).

Breve descrizione del flusso DevOps e CI/CD

In DevOps esistono diverse definizioni. Come Agile, DevOps comprende diverse discipline. Tuttavia, la maggior parte delle persone concorderebbe su questa definizione: DevOps è un metodo, o ciclo di vita, per lo sviluppo del software, il cui principio fondamentale è la creazione di una cultura in cui sviluppatori e altri membri del team sono "sulla stessa lunghezza d'onda", il lavoro manuale è automatizzato, ognuno si dedica a quello che sa fare meglio, aumentando la frequenza delle consegne, migliorando la produttività e aumentando la flessibilità.

E sebbene gli strumenti da soli non siano sufficienti per creare un ambiente DevOps, sono essenziali. Il più importante di questi è l'integrazione continua e la consegna continua (CI/CD). Nel flusso di lavoro per ciascun ambiente ci sono diverse fasi (ad esempio, DEV (sviluppo), INT (integrazione), TST (test), QA (controllo qualità), UAT (test da parte degli utenti), STG (preparazione), PROD (produzione)), le attività manuali sono automatizzate, gli sviluppatori possono scrivere codice di qualità, effettuare le consegne e adattarsi facilmente.

Questa nota descrive come creare una catena DevOps in cinque passaggi, come mostrato nell'immagine qui sotto, utilizzando strumenti open source.

Guida per principianti: creazione di catene DevOps con strumenti open source

Andiamo al sodo.

Passo 1: Piattaforma CI/CD

Per iniziare, hai bisogno di uno strumento CI/CD. Jenkins è uno strumento CI/CD open source scritto in Java con licenza MIT, il quale ha avviato la popolarità del movimento DevOps ed è di fatto diventato lo standard per il CI/CD.

Ma cos'è Jenkins? Immagina di avere un telecomando magico per svariati servizi e strumenti. Di per sé, uno strumento CI/CD come Jenkins è inutile, ma con vari strumenti e servizi diventa onnipotente.

Oltre a Jenkins, ci sono molti altri strumenti open source, scegli quello che preferisci.

Guida per principianti: creazione di catene DevOps con strumenti open source

Ecco come appare il processo DevOps con uno strumento CI/CD

Guida per principianti: creazione di catene DevOps con strumenti open source

Hai uno strumento CI/CD in localhost, ma per ora non c'è molto da fare. Passiamo al passo successivo.

Passo 2: gestione delle versioni

Il modo migliore (e probabilmente più semplice) per testare la magia dello strumento CI/CD è integrarlo con uno strumento di controllo versione (source control management, SCM). Perché è necessario il controllo versione? Supponiamo che tu stia sviluppando un'applicazione. La scrivi in Java, Python, C++, Go, Ruby, JavaScript o in qualsiasi altro linguaggio, ne esistono numerosi. Quello che stai scrivendo è chiamato codice sorgente. Inizialmente, soprattutto se lavori da solo, puoi tenere tutto in una cartella locale. Ma quando il progetto si espande e più persone si uniscono, hai bisogno di un modo per condividere le modifiche del codice, evitando conflitti durante le fusioni. Inoltre, hai bisogno di un metodo per recuperare versioni precedenti senza usare backup e senza dover fare copia-incolla dei file di codice.

E qui entra in gioco lo SCM. Lo SCM salva il codice nei repository, gestisce le sue versioni e coordina il lavoro tra gli sviluppatori.

Ci sono molteplici strumenti SCM, ma Git è diventato il de facto standard meritatamente. Ti consiglio di utilizzare proprio lui, anche se ci sono altre opzioni disponibili.

Guida per principianti: creazione di catene DevOps con strumenti open source

Ecco come appare il pipeline DevOps dopo aver aggiunto lo SCM.

Guida per principianti: creazione di catene DevOps con strumenti open source

Lo strumento CI/CD può automatizzare il caricamento e il rilascio del codice sorgente e la collaborazione in team. Non male, vero? Ma come possiamo trasformarlo in un'applicazione funzionante, amata da miliardi di utenti?

Passo 3: strumento di automazione della build

Tutto procede per il meglio. Puoi rilasciare il codice e registrare le modifiche nel sistema di controllo versioni, oltre a invitare amici a collaborare con te. Ma, per ora, non hai un'applicazione. Perché diventi un'app web, deve essere compilata e imballata per la distribuzione o eseguita come file eseguibile. (I linguaggi di programmazione interpretati, come JavaScript o PHP, non devono essere compilati).

Utilizza lo strumento di automazione della build. Qualunque strumento tu scelga, compilerà il codice nel formato necessario e automatizzerà la pulizia, la compilazione, i test e la distribuzione. Gli strumenti di build variano a seconda del linguaggio, ma solitamente vengono utilizzate le seguenti opzioni open-source.

Guida per principianti: creazione di catene DevOps con strumenti open source

Eccellente! Ora inseriamo i file di configurazione dello strumento di automazione della build nel sistema di controllo versioni affinché lo strumento CI/CD li compili.

Guida per principianti: creazione di catene DevOps con strumenti open source

Sembra che vada tutto bene. Ma dove possiamo ora implementare tutto questo?

Passo 4: server per applicazioni web

Quindi, hai un file impacchettato che può essere eseguito o distribuito. Affinché l'applicazione porti realmente valore, deve avere qualche servizio o interfaccia, ma devi trovare un posto dove ospitarlo.

L'applicazione web può essere ospitata su un server per applicazioni web. Il server per applicazioni offre un ambiente in cui è possibile eseguire la logica software dal pacchetto, gestire il rendering dell'interfaccia e aprire servizi web tramite socket. Hai bisogno di un server HTTP e di alcuni altri ambienti (come una macchina virtuale, per esempio) per installare il server per applicazioni. Per ora, immaginiamo di conoscere tutto ciò durante il processo (anche se di contenitori parlerò più avanti).

Ci sono diversi server per applicazioni web open source.

Guida per principianti: creazione di catene DevOps con strumenti open source

Abbiamo già quasi realizzato una catena DevOps funzionante. Ottimo lavoro!

Guida per principianti: creazione di catene DevOps con strumenti open source

In pratica, qui puoi fermarti; dopo te la cavi da solo, ma è utile parlare anche della qualità del codice.

Passo 5: Copertura dei test

I testare richiedono molto tempo e impegno, ma è meglio identificare subito gli errori e migliorare il codice per soddisfare gli utenti finali. A questo scopo ci sono molti strumenti open source che non solo testano il codice, ma forniscono anche suggerimenti su come migliorarlo. La maggior parte degli strumenti CI/CD può integrarsi con questi strumenti e automatizzare il processo.

I test sono suddivisi in due parti: framework di test per scrivere ed eseguire i test, e strumenti con suggerimenti per migliorare la qualità del codice.

Framework di test

Guida per principianti: creazione di catene DevOps con strumenti open source

Strumenti con suggerimenti per la qualità

Guida per principianti: creazione di catene DevOps con strumenti open source

La maggior parte di questi strumenti e framework sono scritti per Java, Python e JavaScript, poiché C++ e C# sono proprietari (anche se GCC ha un codice sorgente aperto).

Abbiamo implementato strumenti di copertura dei test, e ora il pipeline DevOps dovrebbe apparire come mostrato nel diagramma all'inizio della guida.

Passi aggiuntivi

Container

Come già detto, il server delle applicazioni può essere ospitato su una macchina virtuale o su un server, ma i container sono più popolari.

Cosa sono i container? Вкратце, в виртуальной машине операционная система чаще всего занимает больше места, чем приложение, а контейнеру обычно достаточно нескольких библиотек и конфигурации. В некоторых случаях без виртуальных машин не обойтись, но контейнер вмещает приложение вместе с сервером без лишних затрат.

Per i container si usa normalmente Docker e Kubernetes, anche se ci sono altre opzioni.

Guida per principianti: creazione di catene DevOps con strumenti open source

Leggi articoli su Docker e Kubernetes su Opensource.com:

Strumenti per l'automazione del middleware

La nostra catena DevOps è focalizzata sulla collaborazione per la costruzione e la distribuzione delle applicazioni, ma con gli strumenti DevOps è possibile fare anche altre cose interessanti. Ad esempio, utilizzare strumenti di 'infrastruttura come codice' (IaC), che sono anche chiamati strumenti per l'automazione del middleware. Questi strumenti aiutano ad automatizzare l'installazione, la gestione e altre attività per il middleware. Per esempio, uno strumento di automazione può prendere applicazioni (server di applicazioni web, database, strumenti di monitoraggio) con le configurazioni corrette e distribuirle sui server delle applicazioni.

Ecco alcune opzioni di strumenti di automazione del middleware open source:

Guida per principianti: creazione di catene DevOps con strumenti open source

Maggiori dettagli negli articoli su Opensource.com:

E adesso?

Questo è solo la punta dell'iceberg. La catena DevOps può fare molto di più. Inizia con uno strumento CI/CD e scopri cos'altro puoi automatizzare per semplificarti il lavoro. Non dimenticare di strumenti di comunicazione aperti per una collaborazione efficace.

Ecco alcuni ottimi articoli su DevOps per principianti:

Inoltre, è possibile integrare DevOps con strumenti aperti per agile:

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster