Bando: Hybrid Cloud Center per l’erogazione dei servizi IT innovativi |
Ente finanziatore: Regione Emilia Romagna – (Bando Por Fesr 2014-2020) |
Anni di competenza: 2014-2020 |
Progettazione software di una infrastruttura Hybrid Cloud.
Il progetto in breve
I sistemi informativi stanno avendo un ruolo sempre più importante nel mantenimento e sviluppo dei business aziendali. Questa dinamica comporta una accelerazione dei tempi di rilascio (time to market) di nuove applicazioni o funzionalità che contestualmente devono anche essere più solide (esenti da malfunzionamenti) in quanto sempre più critiche.
È necessario ripensare il modo di approcciare lo sviluppo e il mantenimento del software per rispondere a queste esigenze.
Il progetto prevede di implementare una piattaforma in ottica DevOps che individui strumenti, definisca automatismi e processi per dare una risposta a queste esigenze.
Obiettivi e finalità
L’obiettivo è predisporre una piattaforma basata su strumenti provenienti esclusivamente dal mondo open source che permetta di creare processi, elementi di integrazione e automatismi per la gestione dell’intero ciclo di vita di una applicazione con un Runtime elastico e scalabile, il cloud ibrido.
Le tecnologie
Il team di progetto ha identificato le tecnologie più idonee per soddisfare le esigenze di livello Enterprise proprie dei clienti di Imola Informatica. Come piattaforma di Runtime ci si è orientati su Openshift/Kubernetes, che costituisce uno standard per l’orchestrazione di container adatti a sistemi di livello Enterprise e soddisfa il requisito di scalabilità verso il cloud ibrido.
Oltre alla piattaforma di Runtime sono stati individuati una serie di strumenti per supportare gli stakeholder nelle varie fasi del ciclo di vita delle applicazioni (sviluppo, provisioning, test, quality assurance, deploy, etc.).
L’approccio adottato, coerente con gli obiettivi di progetto, è stato quello di affacciarsi al mondo OpenSource.
I tool selezionati:
- Gitlab come Source Code Management
- Maven come project build tool
- JUnit e WireMock per la Test Automation
- Sonarqube per la Software Quality Assurance
- Jenkins per la Job Automation
I processi e gli automatismi
Individuati i tool, sono stati definiti alcuni processi per indirizzare lo sviluppo e il rilascio negli ambienti target. Il codice sviluppato deve essere testato (JUnit e WireMock) per garantire requisiti minimi di qualità (Sonarqube). Deve poi essere rilasciato in un ambiente target il cui provisiong va automatizzato (Jenkins).
Integrati questi strumenti in una toolchain e implementati gli automatismi necessari, è stato possibile realizzare un processo DevOps completamente automatizzato che consente agli sviluppatori di accelerare il processo di sviluppo e rilascio e di accrescere la qualità del codice prodotto:
- Un team di sviluppo ha il compito di implementare le applicazioni secondo le linee guida aziendali e depositare il tutto su GitLab (Source Code Management)
- La toolchain verifica che i requisiti di qualità siano rispettati
- Se le verifiche di qualità hanno un esito positivo, la toolchain provvede al rilascio nell’ambiente target.