Loropiana
Il cliente
Loro Piana è un’eccellenza artigianale a livello mondiale nella fabbricazione di prodotti di lusso e tessuti a partire dalle materie prime più rare e pregiate, fondata nel 1924 nel Nord Italia e da allora punto di riferimento per i filati più preziosi al mondo grazie a investimenti continui nelle materie prime e nella produzione e a un’innovazione tecnologica costante. Nel 2013 la maison piemontese entra a far parte del gruppo LVMH beneficiando di sinergie eccezionali, pur restando fedele alla propria eredità e tradizione. Loro Piana ha 9 siti di produzione tutti dislocati in Italia, 171 negozi monomarca nel mondo, 5 milioni di metri di tessuto prodotti ogni anno.
La tensione verso l’innovazione si evince anche sul fronte digitale e infrastrutturale: la divisione IT interna ha la piena consapevolezza di quanto adottare un approccio Cloud Native sia ormai imprescindibile.
L'obiettivo
Avviare un percorso verso l’approccio Cloud Native che migliorasse i processi di sviluppo e permettesse una progressiva modernizzazione del legacy.
La sfida
Il Cliente aveva la necessità di capire se la migrazione in Cloud, e nello specifico su Kubernetes, di un loro applicativo legacy fosse fattibile, sostenibile in termini di risorse e concretamente efficace. Nel dettaglio gli obiettivi erano:
- Approfondire la conoscenza in ambito Cloud Native con un focus particolare su Kubernetes.
- Valutare le modalità di trasferimento da un’architettura OnPrem a Public Cloud.
- Approntare la migrazione in cloud di alcuni progetti di sviluppo: applicazione per gestione Retail on Line 'ROL' (Java-based); siti statici (Apache-based)
- Supportare il miglioramento dei processi di sviluppo.
- Introdurre best practice, velocità e qualità di rilascio.
Al momento dell’assessment del livello di maturità secondo il Cloud Native Maturity Model, una serie di difficoltà infrastrutturali e di organizzative, come la mancanza di documentazione o la conservazione di interventi manuali su una serie di attività già automatizzabili, hanno reso la sfida ancora più interessante.

Un orchestratore, di solito Kubernetes, è essenziale per coordinare la distribuzione e la supervisione dei microservizi all'interno di un'applicazione distribuita basata su container, allocandoli su varie macchine in modo dinamico al momento dell'esecuzione.
La soluzione
Gli stadi evolutivi verso l’approccio Cloud Native riguardano diversi diversi ambiti sia tecnici sia organizzativi:
- Cultura
- Design della soluzione
- Team/Competenze
- Processo
- Architettura
- Manutenzione
- Delivery
- Provisioning
- Infrastruttura
Nel contesto del Cloud Native Journey suggerito, è stata implementata su Azure una piattaforma completa per la gestione del codice sorgente e delle pipeline di Continuous Integration / Continuous Delivery basata su GitLab CE (Community Edition).

Il mantenimento di un ciclo breve di build/test/deliver assicura che il codice sia sempre pronto per la produzione, facilitando il rilascio rapido delle funzionalità ai clienti.
Ciò consente agli sviluppatori di ricevere prontamente il feedback dei clienti e di adattarsi di conseguenza.
Per mezzo di un approccio completamente IaC (Infrastructure as Code), tramite “Terraform” e apposite pipeline di CI sono stati deployati:
- Kubernetes AKS Cluster
- GitLab Server Community Edition
- GitLab runner kubernetes based (modulo)
Nello specifico, il Cloud Native Journey di Loro Piana ha previsto i seguenti step:
- Deployment usando un’architettura a container, per standardizzare gli ambieniti di sviluppo locale ed i processi di rilascio.
- Implementazione dell’automazione per la costruzione degli elementi di infrastruttura necessari per il setup up degli ambienti di sviluppo e di produzione tramite Terraform e IaC.
- Installazione di GitLab come sistema di versioning oltre che tool per la creazione di pipeline CI/CD.
- Utilizzo di CI anche per generare artefatti pronti per il deployment.
- Implementazione di sistema di monitoring dell’infrastruttura con relativo sistema di alerting.
- Applicazione dei principi di CD per aumentare la capacità di rilasciare in modo frequente e affidabile.
- Mantenimento dell'infrastruttura aggiornata tramite commit e merge requests sui repository di IaC.
I risultati
La PoC ha confermato la fattibilità di quanto il Cliente si fosse prefissato e si aspettasse di ottenere, dimostrando peraltro di essere facilmente replicabile. A valle del progetto, uno dei deliverables fondamentali attesi dal Cliente è stato un report di analisi sui risultati ottenuti e sullo stato dell’arte raggiunto.

È fondamentale evitare di affrontare la Cloud Native Transformation con un semplice Lift and Shift del sistema attuale nel cloud.
Meglio considerare la migrazione selettiva di alcuni componenti alla fine del processo.
Quali sono stati, in dettaglio, i principali risultati ottenuti?
- Una piattaforma di CI/CD e di versionamento del codice (GitLab) che sia facilmente manuntenibile e replicabile tramite un progetto di Infrastructure as Code.
- Maggiore conoscenza e consapevolezza di cosa sia necessario fare per trasformare un’applicazione legacy in un’applicazione Cloud Native, seguendo i principi della metodologia nota come 'The twelve-factor app'.
- Due cluster Kubernetes, uno per gli ambienti di sviluppo ed uno per gli ambienti di produzione, su cui era possibile deployare utilizzando le pipeline CI/CD di GitLab.
- Una serie di POC costituite da alcuni progetti GitLab in cui un semplice sito web statico scritto in HTML e PHP versionato in git, veniva containerizzato e deployato su diversi cluster Kubernetes (sviluppo e produzione) utilizzando una pipeline CI/CD di GitLab.
- La consapevolezza che migrare un applicativo legacy su Kubernetes non sempre è possibile senza un sostanzioso refactoring; le conoscenze acquisite durante il percorso hanno fornito gli strumenti necessari per capire in modo oggettivo i requisiti minimi cui un’applicazione deve soddisfare per poter funzionare in un ambiente dinamico come Kubernetes. Dall’altra parte è emerso che esistono anche altre strade che permettono di approcciare la migrazione in cloud in modo più graduale, fosse anche partendo con un semplice lift and shift e sfruttando ad esempio i servizi di Database as a service che il cloud vendor mette a disposizione.
Risultati chiave
Tecnologie utilizzate
Cloud
- Azure
- Kubernetes AKS
- Docker
DevOps
- GitLab CE
- Terraform
- CI/CD
Backend
- Java
- Containerization
- Microservices
Metodologia
- IaC
- Training on the job
- Assessment