Le pratiche DevOps

DevOps in Bmeme

DevOps è un set di pratiche che mirano ad integrare lo sviluppo del software (Dev) con l’IT Operations (Ops) allo scopo di migliorare il ciclo di vita di un applicativo, rilasciarlo velocemente e ad alti livello di qualità.

DevOps è complementare allo sviluppo Agile e molti dei suoi concetti base derivano direttamente dalle fondamenta della metodologia Agile.

Bmeme ha introdotto tali pratiche nel proprio flusso di lavoro dal 2017 ed oggi vengono applicate quotidianamente nello sviluppo dei nostro prodotti per il web.

Vantaggi delle pratiche DevOps

Qualità complessiva del Software
Qualità complessiva del Software
Velocità di rilascio e distribuzione
Velocità di rilascio e distribuzione
Comunicazione tra i diversi attori
Comunicazione tra i diversi attori
Riduzione del post-vendita
Riduzione del post-vendita
Miglioramento complessivo del ROI
Miglioramento complessivo del ROI

I punti cardine

Esse includono:

  • Continuous Integration (CI): il software viene costantemente sottoposto a processi di build e test ad ogni push sul repository Git. Questo ci permette di garantire la consistenza durante le differenti fasi di sviluppo e integrazione.

  • Continuous Delivery: una volta terminato con successo il processo di integrazione, il software viene pacchettizzato e archiviato su appositi sistemi di storage (Artifactory, Container Registry, ecc…). Il pacchetto, quindi, è disponibile al rilascio su qualsiasi ambiente, da quello di sviluppo o collaudo, fino a quello di produzione.

  • Continuous Deployment (CD): una volta pacchettizzato il software può essere rilasciato (automaticamente o manualmente) sugli ambienti target: sviluppo, collaudo, pre-produzione, produzione. Le automazioni caricano il corretto set di configurazioni necessarie per lo specifico ambiente oggetto del deploy.

Kick-off di progetto veloci e standardizzati

Per favorire la loro adozione e applicazione in tutte le fasi della produzione, ogni progetto di sviluppo viene generato a partire da un apposito kickstarter di prodotto specifico, che permette di velocizzare il kick-off delle attività e fornisce lo sviluppatore di tutto ciò di cui avrà bisogno dall’inizio alla fine del progetto.

Tutti i nostri kickstarter ci permettono di creare degli ambienti di sviluppo containerizzati e cloud-native ready, favorendo un approccio modulare, moderno e standardizzato ai nostri prodotti.

Il cuore pulsante del nostro processo

Il codice viene versionato e manutenuto sul nostro repository Git che orchestra anche il nostro sistema di Process Automation che garantisce anche l’esecuzione delle procedure di CI e CD che effettuano la build e il test del software e si occupano della loro pacchettizzazione, distribuzione e deploy.

“Cloud-native ready” by-design

La cloud-native readiness dei nostri prodotti viene testata e assicurata durante tutto il ciclo di sviluppo: tutti i nostri ambienti di test e validazione del software (collaudo interno, collaudo Cliente, business-simulation) sono containerizzati e risiedono su cluster Kubernetes.

La nostra toolchain

  • GitLab per il versioning e l’archiviazione del codice, oltreché per l’esecuzione delle procedure di automazione (attraverso lo strumento delle GitLab Pipelines) che garantiscono il ciclo di vita del software.

  • Atlassian Jira per la gestione del progetto, la definizione dei requisiti, la pianificazione dei rilasci.

  • Atlassian Confluence per le analisi, la documentazione di progetto, i deliverables documentali, i decision logs, i report operativi.

  • Docker per la containerizzazione del software, che ci garantisce un approccio standardizzato, modulare e moderno agli sviluppi.

  • Ansible per lo sviluppo delle procedure automatiche di installazione, test, integrazione, pacchettizzazione, rilascio.

  • Nexus per la gestione dei repository Maven e NPM e l’archiviazione degli artefatti (software o librerie) necessari durante le operazioni di build del software e/o deploy.

  • Container Registry per l’archiviazione delle immagini Docker che contengono specifiche release del software.

  • Kubernetes per il deploy e l’orchestrazione ed erogazione degli ambienti di sviluppo, test, pre-produzione e, in alcuni casi, anche produzione del software.

  • Google Cloud come cloud provider per la creazione, running e gestione delle nostre infrastrutture di sviluppo e produzione.

  • Slack, uno strumento di messaggistica istantanea che favorisce la condivisione immediata di informazioni tra i differenti attori del progetto (team di sviluppo, team operativo, Product Ownership, Cliente, Stakeholders).

In cosa siamo specialisti

Applicazioni Cloud-native ready
Applicazioni Cloud-native ready
Microservices development
Microservices development
DevOps
DevOps
Process Automation
Process Automation
Infrastructure Design
Infrastructure Design