Deltatre Cloud Native Journey

Il Cloud Native Journey del leader mondiale nella tecnologia per lo sport e l’intrattenimento
Il progetto
Deltatre Cloud Native Journey
Le tecnologie
azure-devops icon

Il cliente

Deltatre è un’azienda leader nel settore sportivo, specializzata nella creazione di grafiche e strumenti per giornalismo e trasmissioni televisive dal vivo.

L'obiettivo

Spingere sull’acceleratore dell’automazione per scalare grandi volumi.

La sfida

Il team di sviluppo di Deltatre si trovava ad uno stadio avanzato all’interno del Cloud Native Maturity Model, ma sentiva la necessità di un supporto nella creazione di un progetto white-label facilmente replicabile e scalabile che potesse dare un boost all’automazione. Tra le richieste iniziali:

  • validare l’implementazione in corso d’opera di GitOps come tecnologia cardine per l’automazione dei rilasci, per la gestione centralizzata dei repository di progetto e per la segregazione degli accessi
  • introdurre best practice, velocità e qualità di rilascio, uniformando la delivery dei progetti
  • rafforzare un approccio multi-cloud / cloud-agnostico (evitando il vendor lock-in)
  • ottimizzare il processo di sviluppo locale rendendo le persone produttive all’interno del loro team in tempi più brevi
  • incrementare le competenze lato operation da parte degli sviluppatori (Shift Left)
  • aumentare il livello di sicurezza by-design dell’infrastruttura attuale (Shield Right)

La soluzione

Qualunque Cloud Native Journey è un percorso che afferisce a tutto il ciclo di vita del software e attraversa l’organizzazione in termini di processi e di persone, oltreché di tecnologia. È sempre molto sfidante, ma in questo caso è stato particolarmente interessante per la maturità del team del Cliente con cui abbiamo collaborato con assiduità (maturità intesa in ottica Cloud Native Maturity Model).

In fase iniziale procediamo sempre con un approfondito assessment fatto di incontri e decine di domande per avere ben chiaro il contesto di partenza ed evitare passi falsi o banalmente inutili. I meeting più lunghi avevano una cadenza quindicinale, mentre settimanalmente si teneva un rapido incontro di 30 minuti per valutare lo stato dei task progressivamente concordati.

Perché il Journey condiviso funzioni, infatti, è fondamentale uno scambio continuo di informazioni e dettagli e non solo l’accesso a codice e infrastrutture. È questa la ragione che ci ha spinto ad un esperimento, che possiamo definire riuscito, di costante journaling: non un semplice verbale degli incontri, ma un tentativo di analizzare ad ogni singolo passaggio obiettivi parziali, problemi individuati, soluzioni proposte e poi implementate, sino ad arrivare a una lista di “to do” che tracciavano la direzione del backlog.

La prima fase del CNJ ha riguardato tutta la parte di operations, nello specifico il bootstrap di un nuovo progetto basato su Forge, una piattaforma editoriale altamente scalabile presente nel portafoglio prodotti di Deltatre. Analizzando l’attuale flusso di lavoro, abbiamo identificato quei passaggi che ancora richiedevano step manuali o non ottimali e che avrebbero potuto essere automatizzati. Ne è emerso un set attività di ottimizzazione, concretizzatesi in un backlog di issue, per il quale abbiamo proposto come base fondante la creazione di un progetto IaC di seed che automatizzasse e standardizzasse, anche in termini di security, tutti quegli step altrimenti manuali richiesti durante lo stab di un nuovo progetto (come ad esempio la configurazione iniziale del Cloud Vendor e dei relativi repository).

Durante questa fase è inoltre emerso che i task in carico al team di operation, dal bootstrap iniziale dell’infrastruttura, alla consegna delle credenziali di accesso alla piattaforma, dal successivo bootstrap delle pipeline di CI/CD, fino al setup degli ambienti di stage e produzione, richiede solitamente unlasso di tempo minore (2-3 settimane al massimo tra supporto ed eventuali ottimizzazioni) rispetto alle diverse settimane richieste per lo sviluppo e la personalizzazione di progetto della soluzione frontend.

Dopo aver concluso la raccolta di informazioni riguardo il flusso di lavoro dei developer, da come viene fatto il setup della macchina sino a come si integrano le comunicazioni tra i vari team, attraverso la condivisione del codice di infrastruttura e front end applicativo, abbiamo concluso che si dovesse incrementare la coerenza tra l’ambiente di sviluppo nelle macchine locali e gli ambienti di sviluppo creati internamente alle pipeline, lavorando sulla creazione di un ambiente containerizzato locale per:

  • garantire l’allineamento delle versioni dei vari software / librerie utilizzate dai singoli sviluppatori
  • favorire la coerenza con le pipeline di deploy che avrebbero condiviso la medesima configurazione
  • fare in modo che gli sviluppatori possano iniziare le loro attività senza dover attendere che l’ambiente di sviluppo sia effettivamente pronto
Considerando quindi che le attività in carico agli sviluppatori occupano la maggior parte del tempo del progetto, abbiamo ritenuto importante dedicare una seconda fase all’individuazione di quei punti di intervento atti a migliorare la developer experience (DX) quotidiana. Tra le considerazioni emerse:
  • automatizzare la registrazione e l'autorizzazione delle utenze sulla piattaforma di autenticazione creata per lo startup di un nuovo progetto
  • automatizzare la creazione dello schema con la struttura iniziale delle pagine del Frontend di Forge
  • automatizzare la fase iniziale di rilascio di un nuovo modulo per il frontend, creando alcuni template da cui partire e velocizzando la fase di prima integrazione nell'ambiente di CI
  • in ottica 'Shift-left', aggiungere dei Git Hooks attivi nell'ambiente locale dello sviluppatore per automatizzare l'esecuzione dei test di linting del codice con SonarQube; questo avrebbe permesso di identificare problematiche al codice senza dover attendere l’esecuzione delle pipeline
L’ultima fase si è focalizzata su Alta Disponibilità, utilizzo della CDN ed Osservabilità dei sistemi del Cliente, che ha portato ad una conseguente valutazione di tool di autoscaling e di Cloud Cost Analysis. Nel complesso la strategia GitOps del Cliente era già molto ben impostata, tanto che il nostro intervento è andato nella direzione di potenziamento della stessa in modo tale che tutte le modifiche al cluster saranno possibili solo tramite GitOps: le modifiche manuali saranno completamente inficiate.

Concludiamo con un paio di considerazioni che riteniamo interessanti raccolte dalla nostra esperienza:
  • indipendentemente dagli obiettivi specifici di un Cloud Native Journey, capita spesso che alla dichiarazione di Cloud Agnosticism desiderato, si contrappongano spesso legami con il vendor presente che paiono essere sempre molto più forti di quanto ci si renda conto, fosse anche per una questione di 'sappiamo come maneggiarlo'
  • l’avvio di CNJ porta molto frequentemente team diversi allo stesso tavolo, team che nonostante appartengano alla stessa azienda potrebbero non aver mai avuto l’occasione o sentito l’esigenza di confrontarsi prima. Si tratta di un effetto collaterale estremamente interessante e per lo più efficace in termini di risoluzione di eventuali nodi comunicativi o di comprensione procedurale. Da tenere in considerazione

Get in touch

Seguici sui social
Ascolta Continuous Delivery