Un'introduzione agli strumenti DevOps su AWS

Un'introduzione agli strumenti DevOps su AWS
DevOps (Operazioni di sviluppo) è un insieme di strumenti e pratiche utilizzate per sviluppare e fornire applicazioni software più velocemente. DevOps stesso non è uno strumento che viene utilizzato per rendere più veloce lo sviluppo, il rilascio e la consegna del software. Ci sono molti strumenti open source che vengono utilizzati per implementare DevOps in un'organizzazione. In generale, i seguenti sono i passaggi di base eseguiti per implementare le migliori pratiche DevOps per sviluppare e fornire il codice più velocemente.
  • Piano
  • Codice
  • Costruire
  • Test
  • Pubblicazione
  • Distribuire
  • Operare
  • Tenere sotto controllo

Oltre agli strumenti open source, diversi fornitori di servizi cloud forniscono i loro strumenti nativi cloud per implementare le pratiche DevOps sul cloud. Questo articolo descrive diversi strumenti e tecnologie fornite da AWS per implementare DevOps su AWS.

CODECMIT AWS

AWS CodeCommit è un servizio utilizzato per il controllo della versione e ospitato da AWS. Proprio come altri servizi di controllo della versione come Github, Bitbucket e Gitlab, il codice sorgente può essere spinto a repository privati ​​in Codecommit. Non ci sono repository pubblici su AWS CodeCommit.

AWS CodeCommit è un servizio altamente disponibile, sicuro e scalabile utilizzato per ospitare repository di codice privato. Utilizzando il codecommit AWS, non è necessario aggiornare il servizio se i tuoi repository aumentano oltre un limite. Si ridimensiona automaticamente con l'aumento del numero di repository o dimensioni del repository.

Di seguito è riportato l'elenco di alcuni vantaggi forniti dal servizio CodeCommit AWS.

  • Servizio altamente disponibile e completamente gestito
  • Memorizza il codice con crittografia a riposo
  • Collaborazione del lavoro
  • Servizio di controllo della versione scalabile
  • Integrato con alcuni servizi AWS e di terze parti
  • Facile migrazione da altri repository
  • Supporta i comandi git che già conosci

La console CODECMIT AWS fornisce un'interfaccia utente grafica amichevole per visualizzare richieste, commetti, filiali e tag GIT. I repository di CodeCommit possono essere clonati utilizzando URL SSH e HTTPS.

Nelle impostazioni del repository CodeCommit, è possibile abilitare le notifiche e i trigger di avvisare quando si verifica un evento specifico (creare un ramo, eliminare un ramo, su richiesta pull).

AWS CodeBuild

AWS CodeBuild è un servizio completamente gestito utilizzato per eseguire test, costruire il codice e generare artefatti di build dal codice. Utilizzando AWS CodeBuild, non è necessario fornire un server di build extra per creare il codice sorgente. Fornisce ambienti preconfigurati per la maggior parte dei linguaggi di programmazione popolari come Python, Java, Nodejs e Build Strumenti come Maven, NPM e Gradle. Puoi anche creare i tuoi ambienti personalizzati per creare il tuo progetto utilizzando AWS CodeBuild.

AWS CodeBuild è un servizio senza server e ti viene addebitato solo quando una build è in esecuzione. In questo modo, puoi risparmiare denaro per un server extra per la costruzione dei progetti. Di seguito sono riportati alcuni vantaggi dell'utilizzo del servizio CodeBuild di AWS.

  • CodeBuild è un servizio completamente gestito e non è necessario aggiornare e gestire il server build.
  • È un servizio scalabile e si ridimensiona con l'aumento dell'elaborazione. Paghi solo per il tempo in cui la build è in esecuzione.
  • Fornisce ambienti di costruzione preconfigurati che lo rendono facile da usare.
  • Puoi anche creare i tuoi ambienti di build personalizzabili su CodeBuild.

AWS CodeBuild può essere integrato con diversi servizi di fornitore di codice sorgente per recuperare il codice. Puoi recuperare il codice da GitHub, Bitbucket, GitHub Enterprise, CodeCommit e S3. Inoltre, è possibile configurare il servizio CodeBuild per inviare i registri di build ai registri CloudWatch che possono aiutare a diagnosticare gli errori di build. Per comunicare con CloudWatch, AWS CodeBuild ha bisogno di un ruolo IAM con autorizzazioni specifiche.

AWS Codedeploy

AWS CodeDeploy è un servizio completamente gestito fornito da AWS per distribuire l'applicazione pre-costruita a diversi servizi di calcolo come Server EC2, AWS Lambda, AWS ECS e on-premise. Il servizio AWS Codedeploy può distribuire automaticamente il seguente tipo di contenuto.

  • Funzione AWS Lambda
  • File eseguibili
  • File multimediali
  • Script
  • Codice
  • Pacchetti

AWS Codedeploy è un servizio senza server e ti viene addebitato solo quando una distribuzione è in esecuzione e il resto del tempo non ti viene addebitato. Proprio come AWS CodeBuild, AWS CodeDeploy elimina anche la necessità di provvedere a un server extra a fini di distribuzione. Di seguito sono riportati alcuni vantaggi dell'utilizzo del servizio AWS Codedeploy.

  • CodeDeploy può essere utilizzato per distribuire applicazioni tradizionali su server e applicazioni che distribuiscono le funzioni Lambda su AWS Lambda.
  • Può essere utilizzato per automatizzare completamente il processo di distribuzione del codice in diversi ambienti come (Dev, Test, Prod).
  • Può essere utilizzato per eseguire una distribuzione blu/verde che evita i tempi di inattività dell'applicazione durante la distribuzione.
  • La distribuzione può essere rimbalzata se si verificano qualche errore durante la distribuzione dell'ultima versione.

AWS CodePipeline

AWS CodePipeline è un servizio utilizzato per visualizzare una pipeline CICD completa utilizzando un'interfaccia utente grafica amichevole. Crea una bella GUI di una pipeline combinando diversi servizi come AWS CodeCommit, AWS CodeBuild, AWS Codedeploy. Semplifica il processo di rilascio del software visualizzando ogni fase della pipeline.

Quando uno sviluppatore spinge il codice al codeCommit, il codepipeline, se opportunamente configurato, risale al nuovo codice e passa il codice più recente al servizio CodeBuild AWS per eseguire test e costruire artefatti del codice. Dopo aver costruito i manufatti, questi artefatti vengono passati al servizio AWS Codedeploy per distribuire l'ultima versione dell'applicazione al server.

Tutti questi passaggi possono essere visualizzati e integrati tra loro nel servizio CodePipeline. Durante la distribuzione del codice dalla messa in scena in un ambiente di produzione, è possibile aggiungere una fase di approvazione manuale utilizzando AWS CodePipeline. Al fine di distribuire il codice nell'ambiente di produzione, qualcuno con autorizzazioni specifiche deve approvare la distribuzione. Evita di implementare un commit non autentico per la produzione, che può rompere l'ambiente di produzione.

AWS Codeguru

Amazon Codeguru è un servizio fornito da AWS per rivedere il codice sorgente. AWS Codeguru utilizza l'apprendimento automatico e l'analisi del programma per rivedere il codice sorgente e trovare i potenziali difetti nel codice. Dopo aver trovato i difetti nel codice sorgente, AWS Codeguru fornisce suggerimenti per risolvere questi difetti per i linguaggi di programmazione Java e Python.

Attualmente, AWS Codeguru supporta solo i linguaggi di programmazione Java e Python e può leggere il codice sorgente dai seguenti provider di origine.

  • CODECMIT AWS
  • AWS S3
  • GitHub Enterprise Cloud
  • GitHub Enterprise Server
  • Github
  • Bitbucket

Conclusione

Esistono diversi servizi di nativi cloud AWS che possono essere utilizzati per creare una pipeline CICD completa. Il principale vantaggio dell'utilizzo dei servizi proprietari di AWS è che questi servizi sono servizi senza server gestiti e interagiscono tra loro privatamente. Esistono diversi servizi per l'archiviazione del codice sorgente (CODECOMMIT AWS), costruendo ed eseguendo test sul codice (AWS CodeBuild), distribuendo il codice su server (AWS Codedeploy) su AWS. Tutti questi servizi possono essere integrati tra loro per creare una pipeline completa utilizzando il servizio AWS CodePipeline. Questo articolo fornisce una breve comprensione di tutti questi servizi AWS per implementare le pratiche DevOps su AWS.