Esigenze dell'azienda: miglioramento dell'organizzazione dei flussi e innovazione del software
AEP Ticketing Solutions ha sempre avuto la sfida di bilanciare la progettazione di dispositivi altamente funzionali con l'innovazione del software. Le necessità a cui REMIRA ha fornito il suo supporto, assegnando un team on site ad AEP, riguardano entrambi questi aspetti.
Le principali necessità che abbiamo cercato di supportare sono:
- Organizzare il processo di sviluppo e i flussi interni per automatizzare e certificare il rilascio degli applicativi ai clienti.
- È stato ottenuto il risultato di automazione grazie alla nostra contribuzione all'evoluzione dei prodotti, suddividendo le parti cruciali del prodotto in componenti atomici. Questa suddivisione è stata fondamentale per distribuire in modo adeguato le responsabilità e rendere trasparente a ogni reparto aziendale gli impatti delle evoluzioni. Inoltre, l'implementazione di SemVer come modello di versioning comunica immediatamente l'entità dei cambiamenti su ogni componente, fornendo una prima indicazione sulla complessità nell'introdurre ogni evoluzione del prodotto.
Obiettivi: automazione per la certificazione del prodotto, risparmio di tempo e incremento della responsabilizzazione del team
Automazione flussi
Il processo di automazione è stato introdotto per gestire diversi aspetti:
- Certificare la versione installata in campo su ogni cliente: automatizzando il processo di creazione degli asset e l'installazione in campo abbiamo ottenuto una riduzione notevole del tempo di verifica dell’esito dell’installazione diminuendo, quindi, lo spreco dovuto a falsi errori di configurazione o “bug” di installazione.
- Automatizzare l’installazione presso il cliente evitando possibili “dimenticanze” o errori in una fase così critica, garantendo una riproducibilità rispetto all’ambiente di test ed ottenendo una riduzione del tempo impiegato.
- Introduzione della cultura DevOps dove tutti i team sono responsabili, non solo della realizzazione del software, ma anche del suo versionamento e soprattuto dell’installazione.
Sfide e soluzioni riscontrate nel nostro percorso insieme
- Supportare i team nella gestione dei cambiamenti, fornendo: strumenti, formazione e aiuto pratico.
- Modularizzare il codice preesistente che avrebbe impedito l'automazione.
- Selezionare gli strumenti adeguati per attivare il processo.
- Ridurre il tempo di installazione di un sistema.
- Prevenire il Collo di Bottiglia dovuto ai Senior che Detengono la Conoscenza del Sistema, Ovvero Rendere il Processo di Deploy Ripetibile.
- Certificare la versione dei componenti installati per garantire riproducibilità ai clienti e agli escrow.
- Evitare regressioni.
Benefici ottenuti con modularizzazione e automazione
Benefici lato tecnico
- Automazione della compilazione su differente architettura X86, ARM e Android.
- Possibilità di sviluppare e testare il software embedded senza usare il device fisico poiché, grazie agli Unit Test e alla certificazione del processo di build (CONAN), non si perde tempo a reimpostare gli ambienti di sviluppo specifici.
- Automazione della parte dei prerequisiti lato server (runtme, iis, RabbitMQ, etc.).
- Gestione del software "a prodotto" e non a progetto specifico dedicato al singolo cliente.
- Installazione ex-novo di servizi e applicazioni web, lavoro che prima impiegava alcune giornate ai developer, ridotto a qualche ora da una "macchina".
- Archiviazione unica e certificata dei componenti (Nexus) compatibile con moltissimi tipi di build environment (Maven, Nuget, Conan, Ansible, etc.).
- Automatizzazione delle notifiche per gli aggiornamenti, utilizzando liste di distribuzione predefinite e un changelog generato automaticamente dal Build Server. Questo processo coinvolge una connessione con Jira per recuperare le informazioni delle user stories incluse nella release. Insieme all'adozione di SemVer, questo sistema permette al team di comunicare in modo automatico agli utenti interessati cosa risolverà l'aggiornamento e in quali aree avrà impatti, garantendo un'informazione continua e una maggiore responsabilizzazione nei confronti dei clienti.
Benefici lato Business
- Velocizzazione nel lavoro quotidiano permettendo di ricompilare solo ciò su cui si sta lavorando: il sistema si occupa in autonomia di ricomporre il testo e sveltisce quindi il lavoro.
- Maggior libertà e sicurezza nel fare modifiche ed evolvere il prodotto.
- Lo scripting dei processi porta a facilitare la creazione di una documentazione delle modalità di rilascio, rendendo l'azienda indipendente dal singolo sviluppatore. Gli script di installazione sono una guida passo-passo che da un sistema vuoto porta ad un sistema perfettamente funzionante, garantendo anche un aggiornamento costante.
- Recupero di ore lavorative di risorse esperte.
- Migliore time to market per le nuove funzionalità.