Loropiana

Un Cloud Native Journey iconico per un’eccellenza italiana: la containerizzazione di filati pregiati
Il progetto
Loropiana
Le tecnologie
azure icon

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.

Schema di containerizzazione delle app
© Pini Reznik, Jamie Dobson, and Michelle Gienow
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
La soluzione proposta al Cliente ha escluso alcuni aspetti che non erano rilevanti a valle dell’assessment, a seconda che il focus fosse più o meno tecnico e orientato al “training on the job” dei team di sviluppo, o in virtù della composizione del team coinvolto.

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).

Schema del flusso di sviluppo e feedback della Continuous Delivery
© Pini Reznik, Jamie Dobson, and Michelle Gienow
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)
L’analisi post-installazione di questa piattaforma ha rappresentato la perfetta occasione per una “full immersion” nel mondo dell’Infrastructure as Code (IaC), dell’automazione dei deploy tramite procedure di Continuous Integration e Continuous deployment, e delle tematiche correlate con Kubernetes, dalle basi teoriche fino all’implementazione.

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.
Per quanto è riguardato il software dedicato al Retail Online e la sua architettura al momento di inizio del progetto, l’attenzione si è concentrata sulla fase di containerizzazione, che ha richiesto approfondimenti sull’architettura stessa, sul tooling di sviluppo e sulla gestione delle risorse di una soluzione Java-based. Durante il Cloud Native Journey, quindi, il POC relativo a ROL ha avuto come scope la containerizzazione dell’ambiente di sviluppo locale.

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.

Schema di lift shift in diverse fasi del Cloud Native Journey
© Pini Reznik, Jamie Dobson, and Michelle Gienow
È 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.

Get in touch

Seguici sui social
Ascolta Continuous Delivery