Cos’è Docker e perché rende il business più efficiente e competitivo

triangolo

Indice

La Digital Transformation con Docker e l’obsolescenza delle applicazioni legacy

Un’enorme trasformazione digitale sta sconvolgendo il modo di fare business delle imprese:

  • Crescita del mobile: nel 2007, l’anno in cui è stato introdotto iPhone, nel mondo c’erano circa un miliardo di PC e 100 milioni di smartphone. Oggi i dispositivi mobile connessi alla rete superano decisamente la popolazione mondiale. Ma non è tutto: i cambiamenti del mercato e la necessità di rispondere sempre più rapidamente alle esigenze dei consumatori impongono che device, applicazioni e dati siano accessibili in mobilità, sia dall’interno che dall’esterno del perimetro aziendale.
  • Diffusione delle architetture a microservizi: con servizi circoscritti e protocolli leggeri, i microservizi offrono una maggiore modularità rispetto alle applicazioni monolitiche, semplificando sviluppo e test, ma soprattutto efficientando la manutenzione dei sistemi. Per questo sempre più aziende scelgono questo tipo di architettura per le loro applicazioni complesse.
  • Passaggio al cloud: è prevista una crescita del mercato globale del cloud dai 272 miliardi di dollari del 2018 ai 623 del 2023. Le aziende sfruttano le potenzialità offerte dal cloud per incrementare automazione e agilità, per fornire una migliore customer experience e per ridurre i costi di infrastruttura.
  • Crescita esponenziale dei dati: secondo IDC, i dati complessivamente scambiati a livello globale cresceranno dai 33 zettabyte del 2018 ai 175 del 2025, con un incremento annuale del 61%.

In poche parole, la Digital Transformation cambia il modo in cui le persone interagiscono con la tecnologia e, di conseguenza, le aspettative che i consumatori hanno rispetto alle modalità di interazione con le aziende. Se vogliono rimanere competitive, queste devono trovare soluzioni per sviluppare e manutenere le loro applicazioni con sempre maggiore rapidità, accelerando il più possibile il time-to-market e riducendo al massimo i vincoli tecnologici e Docker è senza dubbio una di queste.

Le parole d’ordine sono dunque flessibilità e agilità; ma come coniugare l’esigenza di mantenere funzionanti le applicazioni legacy (spesso legate a processi di business core) con la necessità di sfruttare appieno le potenzialità offerte dalla trasformazione digitale?

Le applicazioni legacy generano resistenza alle potenzialità offerte dalla digital transformation: modificarle è rischioso, eventuali cambiamenti possono avere ripercussioni negative sull’intera infrastruttura. E questo rallenta inesorabilmente i processi di business.

>> Leggi anche “I fondi europei per la digital transformation”

Le aziende hanno quindi bisogno di un modo per accelerare il cambiamento, riducendo il gap tra i sistemi legacy e le nuove architetture. In risposta a questa esigenza, da anni le aziende impiegano strumenti di virtualizzazione: isolando lo stack in una macchina virtuale, le applicazioni diventano più agili; ma rimangono comunque monolitiche, con dipendenze multiple e complesse, che costringono l’IT a testare varie configurazioni, rallentando inevitabilmente il time-to-market.

I vantaggi di Docker rispetto alle macchine virtuali: containerizzazione VS virtualizzazione

Grazie alla virtualizzazione, è possibile razionalizzare e ottimizzare le risorse hardware: infatti, più macchine virtuali possono essere eseguite contemporaneamente su un sistema fisico, condividendo le risorse della piattaforma.

In ogni macchina virtuale c’è un sistema operativo completo: in questo modo, è possibile eseguire molte istanze di uno o più sistemi operativi in parallelo su una singola macchina host; ma ogni macchina virtuale, sebbene eseguita sullo stesso hardware fisico di altre, rimane logicamente separata.

L’hypervisor è il processo che, separando il la macchina fisica host e le macchine virtuali guest, si occupa di distribuire tra queste ultime le risorse di calcolo come la memoria, la banda della rete e la CPU, promuovendone un uso efficace.

Docker utilizza un approccio del tutto diverso: se con una macchina virtuale lo sviluppatore immette il codice negli ambienti dove sarà eseguito, con i container invece si costruisce l’intero ambiente e poi lo si distribuisce ovunque.

Questa Enterprise Container Platform, infatti, è una piattaforma di container management, che gestisce pacchetti software (i container, appunto) leggeri, autonomi ed eseguibili, ma, soprattutto, standardizzati. Poiché ogni pacchetto contiene già al suo interno tutto il codice e le sue dipendenze (runtime, strumenti di sistema, librerie di sistema e impostazioni), è sostanzialmente svincolato dall’ambiente di esecuzione. Pertanto, l’applicazione può essere eseguita in modo rapido e affidabile in qualsiasi ambiente, indipendentemente dall’infrastruttura di riferimento.

In poche parole, i container sono più portabili e leggeri delle macchine virtuali: permettono un avvio più rapido e migliori performance, maggior isolamento e un utilizzo più efficiente delle risorse grazie alla condivisione del kernel dell’host.

Docker

Riassumendo, Docker conferisce alle applicazioni esistenti agilità, portabilità e sicurezza, ottimizzando nel contempo i costi per il business.

>> Leggi anche “Microservizi, Docker e DevOps: i pilastri tecnologici dell’innovazione”

Il ruolo di Docker: semplificare l’architettura per ottenere flessibilità ed efficientare l’uso delle risorse

 

+300% +1.300% +60% -40% +40% +72%
Rapidità del time-to-market Produttività sviluppo Velocità di sviluppo Riduzione dell’infrastruttura IT Efficienza operativa Rapidità nella risoluzione dei problemi

 

Vediamo in quali vantaggi si traduce l’approccio di Docker:

  • Portabilità del software e flessibilità dell’infrastruttura: i container contengono tutto ciò che è necessario per eseguire un software, che quindi funzionerà esattamente allo stesso modo dovunque, indipendentemente dalla macchina su cui viene eseguito. Questo permette di superare il tipico problema per cui il software funziona sulla macchina dello sviluppatore, ma non su quella del suo collega o su quella di produzione. Grazie a Docker, infatti, le dipendenze esterne si azzerano: i container sono autoconsistenti e sposano perfettamente la filosofia del cloud (e del cloud ibrido), assicurando che l’applicazione sviluppata sarà replicata in modo identico ovunque. Non solo, poiché i container permettono una rapida migrazione al e dal cloud, le aziende possono scegliere liberamente dove eseguire le proprie applicazioni e mettere prontamente in pratica la loro decisione.
  • Risparmio dei costi e ottimizzazione dell’infrastruttura: Se è vero che la virtualizzazione permette di ridurre il numero di server impiegati, è vero anche che ogni applicazione richiede la propria macchina virtuale e il proprio sistema operativo. I container, invece, condividono il kernel del sistema operativo della macchina host. Non necessitano quindi di un sistema operativo per applicazione, né di un hypervisor; risultano pertanto più leggeri delle macchine virtuali, rispetto alle quali utilizzano meno risorse. In questo modo, aumentano l’efficienza dei server, permettendo così un’ulteriore riduzione dei costi di infrastruttura. Infine, oltre al kernel del sistema operativo host, i container possono condividere, se necessario, anche codice e librerie, garantendo così una gestione davvero efficiente delle risorse.
  • Velocità di esecuzione: Conseguenza della leggerezza dei container è la loro velocità; per avviare una macchina virtuale occorrono alcuni minuti, mentre bastano pochi secondi per avviare un container Docker.
  • Maggior produttività del team di sviluppo: Spesso i team di sviluppo perdono una gran quantità di tempo per installare gli ambienti necessari all’avvio di un progetto. Altrettanto spesso, si trovano ad impiegare una gran quantità di tempo nel replicare l’infrastruttura in cui si verificano gli errori che devono risolvere in fase di troubleshouting. Si tratta di attività a basso valore aggiunto, ripetitive e poco creative, che abbattono la produttività dei team di sviluppo. Permettendo di isolare codice e dipendenze, i container sollevano gli sviluppatori dalla necessità di risolvere i problemi di compatibilità e consentono loro di risparmiare tempo ed energie per attività decisamente più produttive, come la scelta delle soluzioni tecnologiche e lo sviluppo vero e proprio.
  • Maggior sicurezza delle applicazioni: Poiché i container funzionano indipendentemente dall’infrastruttura, con Docker le modifiche e gli aggiornamenti del software sono più semplici. Questo migliora l’affidabilità e la disponibilità delle applicazioni, semplificando anche la gestione dei rischi per la sicurezza.
  • Aggiornamento delle applicazioni legacy semplificato: Solo sfruttando le opportunità offerte dalla digital transformation e dal cloud, l’azienda può ottenere un vantaggio competitivo rilevante sui propri competitor. È fondamentale quindi che le applicazioni legacy, soprattutto se inerenti a processi core dell’azienda, non ne rallentino l’innovatività. Docker fornisce un modo rapido e semplice per trasformare applicazioni costose e difficili da mantenere in applicazioni efficienti, sicure e portatili, pronte per il cloud. Con Docker, far funzionare applicazioni legacy nel cloud non richiede lo sforzo e il costo che richiederebbero altri strumenti: in molti casi, la containerizzazione non comporta modifiche al codice e, in ogni caso, permette all’IT di avviare processi di aggiornamento delle applicazioni costituenti l’infrastruttura separatamente, a seconda delle potenzialità di ogni applicativo.