Guida dei manichini: creazione di catene DevOps con strumenti open source

Guida dei manichini: creazione di catene DevOps con strumenti open source
Crea la tua prima catena DevOps in cinque passaggi per i principianti.

DevOps è diventato una panacea per processi di sviluppo troppo lenti, disconnessi e altrimenti problematici. Ma hai bisogno di una conoscenza minima in DevOps. Tratterà concetti come la catena DevOps e come crearne una in cinque passaggi. Questa non è una guida completa, ma solo un "pesce" che può essere ampliato. Iniziamo con la storia.

La mia introduzione a DevOps

Lavoravo con i cloud in Citi Group e sviluppavo un'applicazione web IaaS per gestire l'infrastruttura cloud di Citi, ma sono sempre stato interessato a come ottimizzare la catena di sviluppo e migliorare la cultura tra gli sviluppatori. Greg Lavender, il nostro CTO per Cloud Architecture and Infrastructure, mi ha consigliato questo libro. Progetto "Fenice". Spiega magnificamente i principi DevOps e si legge come un romanzo.

La tabella sul retro mostra la frequenza con cui le aziende lanciano nuove versioni:

Guida dei manichini: creazione di catene DevOps con strumenti open source

In che modo Amazon, Google e Netflix riescono a implementare così tanto? Ed è semplice: hanno capito come creare una catena DevOps quasi perfetta.

Le cose erano molto diverse per noi di Citi fino a quando non siamo passati a DevOps. Quindi il mio team aveva ambienti diversi, ma abbiamo effettuato manualmente la consegna al server di sviluppo. Tutti gli sviluppatori avevano accesso a un solo server di sviluppo basato su IBM WebSphere Application Server Community Edition. Con un tentativo simultaneo di consegna, il server "è caduto" e ogni volta abbiamo dovuto negoziare "dolorosamente" tra di noi. Avevamo anche una copertura del codice insufficiente con i test, un lungo processo di consegna manuale e nessun modo per tenere traccia della consegna del codice con l'aiuto di alcune attività o requisiti del cliente.

Era chiaro che era urgente fare qualcosa e ho trovato un collega che la pensava allo stesso modo. Abbiamo deciso di creare insieme la prima catena DevOps: lui ha configurato una macchina virtuale e un server delle applicazioni Tomcat e io mi sono occupato di Jenkins, dell'integrazione con Atlassian Jira e BitBucket, nonché della copertura del codice con i test. Il progetto ha avuto successo: abbiamo automatizzato completamente la catena di sviluppo, raggiunto quasi il 100% di uptime sul server di sviluppo, siamo stati in grado di monitorare e migliorare la copertura del codice con i test e un ramo Git potrebbe essere collegato a una consegna e problema Jira. E quasi tutti gli strumenti che abbiamo utilizzato per creare la catena DevOps erano open source.

Di fatto la catena è stata semplificata, perché non abbiamo nemmeno applicato configurazioni avanzate utilizzando Jenkins o Ansible. Ma ci siamo riusciti. Forse questa è una conseguenza del principio Pareto (ovvero la regola 80/20).

Una breve descrizione della catena DevOps e CI/CD

DevOps ha definizioni diverse. DevOps, come Agile, include diverse discipline. Ma la maggior parte concorderà con la seguente definizione: DevOps è un metodo, o ciclo di vita, di sviluppo del software, il cui principio principale è creare una cultura in cui sviluppatori e altri dipendenti siano "sulla stessa lunghezza d'onda", il lavoro manuale sia automatizzato, ognuno fa quello che sa fare meglio, aumenta la frequenza delle consegne, aumenta la produttività del lavoro, aumenta la flessibilità.

Sebbene gli strumenti da soli non siano sufficienti per creare un ambiente DevOps, sono indispensabili. Il più importante di questi è l'integrazione continua e la consegna continua (CI/CD). Ci sono diverse fasi nella catena per ogni ambiente (ad es. DEV (sviluppo), INT (integrazione), TST (test), QA (assicurazione qualità), UAT (test di accettazione utente), STG (preparazione), PROD (uso)) , le attività manuali sono automatizzate, gli sviluppatori possono creare codice di qualità, consegnarlo e ricostruirlo facilmente.

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

Guida dei manichini: creazione di catene DevOps con strumenti open source

Andiamo al sodo.

Passaggio 1: piattaforma CI/CD

Prima di tutto, hai bisogno di uno strumento CI/CD. Jenkins è uno strumento CI/CD open source con licenza MIT scritto in Java che ha reso popolare il movimento DevOps ed è diventato lo standard de facto per CICD.

Cos'è Jenkins? Immagina di avere un pannello di controllo magico per una varietà di servizi e strumenti. Di per sé, uno strumento CI/CD come Jenkins è inutile, ma con strumenti e servizi diversi diventa onnipotente.

Oltre a Jenkins, ci sono molti altri strumenti open source, scegline uno qualsiasi.

Guida dei manichini: creazione di catene DevOps con strumenti open source

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

Guida dei manichini: creazione di catene DevOps con strumenti open source

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

Passaggio 2: controllo della versione

Il modo migliore (e probabilmente più semplice) per testare la magia di uno strumento CI/CD è integrarlo con uno strumento di gestione del controllo del codice sorgente (SCM). Perché hai bisogno del controllo della versione? Diciamo che stai facendo una domanda. Lo scrivi in ​​Java, Python, C++, Go, Ruby, JavaScript o qualsiasi altro linguaggio che sia un carro e un piccolo carrello. Quello che scrivi si chiama codice sorgente. All'inizio, soprattutto se lavori da solo, puoi salvare tutto in una directory locale. Ma man mano che il progetto cresce e più persone si uniscono, è necessario un modo per condividere le modifiche al codice ma evitare conflitti durante l'unione delle modifiche. E devi anche ripristinare in qualche modo le versioni precedenti senza utilizzare backup e utilizzare il metodo copia-incolla per i file di codice.

E qui senza SCM da nessuna parte. L'SCM archivia il codice nei repository, ne gestisce le versioni e lo coordina tra gli sviluppatori.

Esistono molti strumenti SCM, ma Git è meritatamente diventato lo standard de facto. Ti consiglio di usarlo, ma ci sono altre opzioni.

Guida dei manichini: creazione di catene DevOps con strumenti open source

Ecco come appare la pipeline DevOps dopo l'aggiunta di SCM.

Guida dei manichini: creazione di catene DevOps con strumenti open source

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

Passaggio 3: crea lo strumento di automazione

Tutto sta andando come dovrebbe. Puoi caricare il codice e confermare le modifiche al controllo del codice sorgente e invitare gli amici a lavorare con te. Ma non hai ancora un'app. Perché questa sia un'applicazione Web, deve essere compilata e impacchettata per la distribuzione o eseguita come eseguibile. (Non è necessario compilare un linguaggio di programmazione interpretato come JavaScript o PHP.)

Usa uno strumento di automazione della compilazione. Qualunque strumento tu scelga, assemblerà il codice nel formato giusto e automatizzerà la pulizia, la compilazione, il test e la consegna. Gli strumenti di compilazione variano in base alla lingua, ma vengono comunemente utilizzate le seguenti opzioni open source.

Guida dei manichini: creazione di catene DevOps con strumenti open source

Perfetto! Ora inseriamo i file di configurazione dello strumento di automazione della compilazione nel controllo del codice sorgente in modo che lo strumento CI/CD li compili.

Guida dei manichini: creazione di catene DevOps con strumenti open source

Si sente bene. Ma dov'è che tutto questo deve essere lanciato ora?

Passaggio 4: server di applicazioni Web

Quindi, hai un file impacchettato che può essere eseguito o implementato. Affinché un'applicazione sia davvero utile, deve avere un qualche tipo di servizio o interfaccia, ma devi metterlo tutto da qualche parte.

Un'applicazione Web può essere ospitata su un server di applicazioni Web. Il server delle applicazioni fornisce un ambiente in cui è possibile eseguire la logica in pacchetto, eseguire il rendering delle interfacce ed esporre i servizi Web su un socket. Sono necessari un server HTTP e alcuni altri ambienti (una macchina virtuale, ad esempio) per installare il server delle applicazioni. Per ora, facciamo finta che tu abbia a che fare con tutto questo mentre procedi (anche se parlerò dei contenitori di seguito).

Esistono diversi server di applicazioni Web aperti.

Guida dei manichini: creazione di catene DevOps con strumenti open source

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

Guida dei manichini: creazione di catene DevOps con strumenti open source

In linea di principio, puoi fermarti qui, quindi puoi gestirlo da solo, ma vale la pena parlare della qualità del codice.

Passaggio 5: rivestimento di prova

Il test richiede molto tempo e impegno, ma è meglio trovare subito i bug e migliorare il codice per soddisfare gli utenti finali. A tale scopo, esistono molti strumenti aperti che non solo testeranno il codice, ma consiglieranno anche su come migliorarlo. La maggior parte degli strumenti CI/CD può collegarsi a questi strumenti e automatizzare il processo.

Il test è diviso in due parti: framework di test per la scrittura e l'esecuzione di test e strumenti con suggerimenti per migliorare la qualità del codice.

Framework di test

Guida dei manichini: creazione di catene DevOps con strumenti open source

Strumenti con punte di qualità

Guida dei manichini: creazione di catene DevOps con strumenti open source

La maggior parte di questi strumenti e framework sono scritti per Java, Python e JavaScript perché C++ e C# sono proprietari (sebbene GCC sia open source).

Abbiamo applicato gli strumenti di copertura del test e ora la pipeline DevOps dovrebbe essere simile all'immagine all'inizio del tutorial.

Passaggi aggiuntivi

contenitori

Come ho detto prima, un application server può essere ospitato in una macchina virtuale o in un server, ma i container sono più diffusi.

Cosa sono i contenitori? In breve, in una macchina virtuale, il sistema operativo occupa spesso più spazio dell'applicazione e un contenitore di solito è sufficiente con poche librerie e configurazione. In alcuni casi, le macchine virtuali sono indispensabili, ma il contenitore può ospitare l'applicazione insieme al server senza costi aggiuntivi.

Per i container, di solito vengono presi Docker e Kubernetes, sebbene ci siano altre opzioni.

Guida dei manichini: creazione di catene DevOps con strumenti open source

Leggi gli articoli su Docker e Kubernetes su Opensource.com:

Strumenti di automazione del middleware

La nostra catena DevOps è incentrata sulla creazione e la distribuzione collaborativa di un'applicazione, ma ci sono altre cose interessanti che puoi fare con gli strumenti DevOps. Ad esempio, utilizza gli strumenti Infrastructure as Code (IaC), noti anche come strumenti di automazione del middleware. Questi strumenti aiutano ad automatizzare l'installazione, la gestione e altre attività per il middleware. Ad esempio, uno strumento di automazione può prendere le applicazioni (server di applicazioni Web, database, strumenti di monitoraggio) con le configurazioni corrette e inviarle al server delle applicazioni.

Ecco alcune opzioni per gli strumenti di automazione middleware aperti:

Guida dei manichini: creazione di catene DevOps con strumenti open source

Dettagli negli articoli Opensource.com:

E ora cosa?

Questa è 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 semplificare il tuo lavoro. Non dimenticare strumenti di comunicazione aperti per una fattiva collaborazione.

Ecco alcuni altri buoni articoli DevOps per principianti:

Puoi anche integrare DevOps con strumenti agili aperti:

Fonte: habr.com

Aggiungi un commento