Case Study
De Agostini Scuola

Infrastruttura scalabile con Amazon Web Services e CRM

Da una infrastruttura monolitica ad un applicativo scalabile in cloud

Cloud migration & refactoring Dea Scuola

Progetto ed esigenze

Il complesso sistema informatico di Dea Scuola, ideato per supportare le attività di gestione e fruizione di materiale didattico da parte di agenti, docenti e studenti, si basava su una infrastruttura monolitica non pienamente scalabile.

Tale struttura imponeva alcuni limiti nell'utilizzo delle risorse, rendendo difficile, oltre che costoso, l'allocamento di potenza necessaria ad ogni funzionalità applicativa.


Problematiche riscontrate

  • difficoltà nell'allocamento di risorse a specifiche funzioni
  • difficile gestione dei costi e delle risorse
  • sovradimensionamento dell'infrastruttura generale
  • impossibilità di aggiornamento di librerie, sistemi, pacchetti


Nuove esigenze ed obiettivi

  • ammodernamento dell'infrastruttura, dei pacchetti e dei servizi
  • flessibilità nell'allocazione delle risorse
  • controllo dei costi
  • efficientamento di protocolli di sicurezza e gestione

Container, Microservizi e Serverless con AWS

L'adozione di servizi evoluti messi a disposizione da parte di Amazon Web Services (Elastic Container Service) ha permesso di progettare e creare un'architettura in grado di soddisfare le esigenze di progetto. Da una parte l'adozione di una struttura a container ha permesso le veicolazione di app API separate e indipendenti, in grado di comunicare tra di loro attraverso API REST.

Al tempo stesso, l'introduzione di alcuni servizi quali Amazon Lambda, SNS, SQS e S3 ha consentito di delegare alcune funzionalità al paradigma serverless, abbattendo notevolente i costi di gestione architetturale e di esecuzione di alcune critiche funzionalità legate al catalogo elettronico editoriale.

API e microservizi

L'intero refactoring architetturale e applicativo ha avuto come obiettivo l'introduzione di uno strato API REST atto a far comunicare ogni microservizio scalabile ospitata nel layer di container.

La progettazione basata su un'architettura ad API ha semplificato enormemente la progettazione e messa in opera dell'intero set di funzioni a disposizione di tutti gli operatori in gioco: agenti, docenti e studenti che interagiscono con la piattaforma.


Vantaggi delle API

  • standardizzazione di funzioni e dati
  • migliore interoperabilità delle componenti
  • facile tracciabilità dei dati
  • integrabilità delle funzioni anche da parte di applicazioni terze

Processo di implementazione

La lavorazione è iniziata con una intesa fase progettuale e documentale, con l'obiettivo specifico di organizzare le applicazioni da migrare e sviluppare unitamente a tutte le specifiche API.

Si è quindi proceduto con lavorazioni parallele sia dal punto di vista di sviluppo software (implementazioni delle API) che infrastrutturale (su Amazon Web Services). In particolare quest'ultima attività è servita a definire gli schemi architetturali che, grazie a CloudFormation, hanno permesso una facile gestione e deploy delle componenti in diversi ambienti (sviluppo, test, produzione).

L'attività si è conclusa con una delicata fase di migrazione dei dati dalle vecchie alle nuove architetture, tramite importazione e revisione dei dati. Operazione facilitata dall'adozione delle API che per definizione hanno permesso una standardizzazione degli input e dei dati.

Risultati ottenuti

Il passaggio ad una infrastruttura a microservizi ha permesso, in primo luogo, di ammodernare tutte le componenti software slegandole le une dalle altre. Non solo quindi le componenti sono diventate più snelle e indipendenti, ma anche più facili da gestire e mantenere.

I container hanno portato ad una notevole riduzione dei costi permettendo di allocare con facilità le risorse alle singole applicazioni, producendo un risparmio di risorse e quindi anche economico. Si può dire quindi che l'accoppiata container-microservizi si è rivelata una scelta vincente per l'attività.

Infine l'adozione di alcune componenti serverless ha permesso di incasellare determinate funzionalità in un contesto infinitamente scalabile ma al tempo stesso eseguibile su richiesta e privo di costi di infrastruttura di base.