Categorie
Blog

MICROSERVIZI: COSA SONO, CARATTERISTICHE E VANTAGGI

MICROSERVIZI: COSA SONO, CARATTERISTICHE E VANTAGGI

Cosa sono i Microservizi?

microservizi sono un approccio allo sviluppo dell’architettura software emerso in particolar modo per sviluppare le applicazioni moderne di tipo Cloud-based. Con questo modello, le applicazioni vengono scomposte in “piccoli” servizi (microservizi, come suggerisce il nome) autonomi ed indipendenti tra loro che comunicano tramite API ben definite, con l’obiettivo di semplificare il processo di deployment e fornire software di alta qualità in tempi rapidi. I microservizi, infatti, permettono di scalare in modo più semplice e soprattutto più veloce, promuovendo l’innovazione e accelerando lo sviluppo di nuove funzionalità.

Architettura monolitica vs microservizi

I microservizi si contrappongono alla tradizionale architettura monolitica usata per sviluppare le applicazioni, la quale prevede che ogni componente venga creato all’interno dello stesso elemento. Il metodo monolitico, però, ha alcuni svantaggi. Maggiori sono le dimensioni dell’applicazione, più complicato sarà risolvere rapidamente i problemi ed implementare nuove features. Con questo approccio infatti, tutti i processi sono collegati tra loro e vengono eseguiti come un unico servizio. Questo significa che quando un processo sperimenta un picco nella richiesta, è necessario ridimensionare l’intera architettura. Di conseguenza aggiungere o modificare una funzionalità diventa molto laborioso, limitando la sperimentazione e l’inserimento di nuove features.

microservices

Allo stesso tempo, con le architetture tradizionali si amplia il rischio relativo alla disponibilità dell’applicazione, in quanto la presenza di processi strettamente connessi e dipendenti uno dall’altro aumenta l’impatto di un errore in un singolo processo.
L’approccio che utilizza i microservizi semplifica la risoluzione delle problematiche e ottimizza i tempi di sviluppo. Ciascun processo o componente costituisce un microservizio e viene eseguito come un servizio indipendente. I microservizi comunicano tra di loro utilizzando un’interfaccia formata da API “leggere” ed interagiscono per completare le stesse attività pur rimanendo indipendenti uno dall’altro, con la possibilità di condividere processi simili tra più applicazioni. E’ un modello altamente granulare in cui ogni microservizio corrisponde ad una funzione aziendale ed esegue solo una funzione. Inoltre, l’indipendenza tra i servizi elimina i problemi relativi all’aggiornamento, al ridimensionamento e alla distribuzione tipiche di un’architettura monolitica.

Microservizi e container

Sebbene l’architettura basata sui microservizi non sia del tutto nuova, la presenza dei container ha reso molto più semplice adottarla. I container rappresentano l’ambiente di sviluppo ideale per le applicazioni che usano i microservizi perchè consentono di eseguire diverse parti di un’applicazione in modo indipendente, sullo stesso hardware e operando un controllo superiore sui cicli di vita del software. I container forniscono ai microservizi un ambiente autosuffciente in cui la gestione di servizi, storage, rete e sicurezza diventa più semplice. Proprio per queste ragioni, microservizi e container insieme costituiscono la base dello sviluppo di applicazioni Cloud-native. Inserendo i microservizi nei container si accellera lo sviluppo e si facilita la trasformazione e l’ottimizzazione delle app esistenti.

I vantaggi dell’approccio basato sui microservizi

I microservizi, quando sono implementati correttamente, consentono di migliorare l’affidabilità e la scalabilità delle applicazioni. Come accennato poco fa, uno degli aspetti più interessanti dei microservizi nei confronti delle architetture monolitiche, è che un difetto o un bug in un singolo servizio non va ad influenzare il funzionamento degli altri servizi, pertanto non compromette l’intera applicazione. Questi e molti altri sono i vantaggi dei microservizi: vediamoli insieme.

  • Eliminazione dei single point of failure
  • Elevata scalabilità e resilienza
  • Time-to-market
  • Deployment semplificato
  • Top performance
  • Libertà nell’uso delle tecnologie
  • Maggiore sperimentazione ed innovazione
  • Codice riutilizzabile
  • Flessibilità del linguaggio di sviluppo
  • Sistema più agile
 

…e gli svantaggi

Non dimentichiamo però che i microservizi, sebbene rappresentino un modello di sviluppo innovativo e molto performante, hanno anche i loro svantaggi. Tra questi la complessità che si associa tipicamente a tutti i sistemi distribuiti, la necessità di utlizzare metodi di testing molto solidi e di avere a disposizione personale esperto per la gestione dei processi e l’assistenza tecnica. Inoltre, se un’applicazione non ha necessità di scalare rapidamente o non è Cloud-based, i microservizi potrebbero fornire benefici poco significativi all’architettura di sviluppo.

New call-to-action
Categorie
Blog

DOCKER: LE NUOVE FEATURES CHE TUTTI I DEVELOPERS ADORERANNO

DOCKER: LE NUOVE FEATURES CHE TUTTI I DEVELOPERS ADORERANNO

DockerCon 2019: updates per semplificare il lavoro degli sviluppatori in arrivo

Si è da poco conclusa la DockerCon di quest’anno a San Francisco, un evento della durata di tre giorni dedicato interamente a Docker. La conferenza riunisce ogni anno professionisti del mondo IT, sviluppatori, sistemisti e in generale utilizzatori di Docker, e ha l’obiettivo di promuovere l’aggiornamento, la condivisione e il confronto sulle ultime novità della tecnologia Container.

Negli scorsi 5 anni il termine Docker è praticamente diventato sinonimo di Container, ma questo non vuol dire che tutti gli sviluppatori conoscano i suoi dettagli tecnici e siano in grado di utilizzarlo. Durante la conferenza, infatti, è stato annunciato il lancio di nuovi tool per aiutare gli sviluppatori, non tutti esperti di Docker, a lavorare con i container.

In questi anni la tecnologia si è evoluta e l’azienda ha visto il mercato dei Container ampliarsi sempre di più, ma per sfruttare al meglio queste condizioni favorevoli è necessario migliorare la semplicità d’utilizzo di Docker. Questo è ciò che dichiara Scott Johnston, Chief Product Officer di Docker. Gli sforzi dell’azienda sono focalizzati sul fornire ai clienti un set di tool per migliorare l’usabilità della tecnologia e permettere a tutti di utilizzare Docker in modo semplice e veloce. Secondo quanto afferma Johnston infatti, la maggior parte degli utenti non è un esperto Docker ma deve avere la possibilità di usare facilmente e rapidamente la piattaforma di containerizzazione anche senza competenze specialistiche a riguardo.

Presto verrà lanciata una versione beta di Docker Enterprise 3.0, che comprenderà diversi elementi chiave. Di seguito vi descriviamo le nuove features di Docker che semplificheranno la vita agli sviluppatori, e che sicuramente adorerete.

Docker Desktop Enterprise

In primo luogo, Docker Desktop Enterprise consentirà al reparto IT di “settare” un ambiente Docker con il livello di sicurezza e il template di deployment adatto per ogni singolo cliente. A questo punto gli sviluppatori potranno scegliere i modelli utili alle loro implementazioni, in conformità con le specifiche regole di governance dell’azienda.

Johnston spiega che i modelli contengono già delle impostazioni di configurazione e delle Docker images pre-approvate dall’IT. Il reparto IT potrà fornire agli sviluppatori questi template attraverso i nuovi tool. Lo scopo è snellire i processi e consentire ai developers di scegliere i template più adatti per il loro lavoro senza dover richiedere l’approvazione dell’IT. L’idea di fondo è quella di lasciare che i developers si concentrino totalmente sullo sviluppo delle applicazioni attraverso la fornitura di modelli Docker pre-approvati e pronti all’uso, senza che debbano preoccuparsi delle questioni riguardanti l’IT.

Docker Application

Un’altra nuova feature della versione 3.0 è Docker Application, che consente agli sviluppatori di creare e gestire complesse applicazioni containerizzate come se si trattasse di un singolo pacchetto e di implementarle sull’infrastruttura che più preferiscono, Cloud o on-premise è indifferente. 5 anni fa, quando Docker era ancora agli albori della tecnologia Container, le operazioni erano più semplici e spesso coinvolgevano un unico container. Oggi, con la crescente popolarità dei micro-servizi, si è creato un livello di complessità maggiore, soprattutto quando si tratta di distribuire set sempre più grandi di applicazioni containerizzate. Ora il team Operations può cambiare in modo programmatico i parametri dei container a seconda degli ambienti, senza dover entrare nell’applicazione e modificarla. E’ facile immaginare quanto questo possa semplificare la vita agli sviluppatori.

Docker Kubernetes Service (DKS)

L’ultima novità riguarda il livello di orchestrazione, e in quest’ambito è sicuramente Kubernetes lo strumento più popolare ed utilizzato del momento. Docker integra nella sua offerta l’ultima versione di Kubernetes personalizzata ad hoc per semplificare l’orchestrazione dei container Docker. L’obiettivo è quello di offrire un potente strumento riducendo la sua complessità di utilizzo, oltre che quello di rendere Kubernetes perfettamente compatibile con l’ambiente Docker. Per queste ragioni Docker ha annunciato il rilascio di Docker Kubernetes Service (DKS), che è stato studiato e progettato pensando agli utenti Docker ed include il supporto per Docker Compose, un tool di script molto popolare tra gli utilizzatori dei Container. Da un lato potrai usare qualsiasi funzione di Kubernetes, dall’altra avrai a disposizione il DKS come versione Docker-friendly per developers.

Un obiettivo comune

Infine, a completare Docker Enterprise 3.0 alcuni aggiornamenti che riguardano tool per il deployment automatico dei container su qualsiasi tipo di infrastruttura e una serie di migliorie sulla sicurezza dell’ambiente.

Tutte queste nuove features hanno una cosa in comune, oltre a far parte di Docker Enterprise 3.0. Insieme riducono la complessità associata all’implementazione e alla gestione dei container, astraendo le parti tecniche più complicate, in modo che i developers possano concentrarsi liberamente sullo sviluppo senza preoccuparsi dei dettagli tecnici relativi ai container. Allo stesso tempo, Docker vuole rendere la vita più facile anche al team Operations per quanto riguarda la gestione complessiva dei container. Quando questi tool verranno lanciati ufficialmente sul mercato, saranno proprio i team DevOps a giudicare se l’obiettivo di Docker è stato raggiunto. La versione Beta di Docker Enterprise 3.0 sarà disponibile entro il prossimo trimestre.

New call-to-action
Categorie
Blog

CLOUD BEST PRACTICE: COME MIGRARE I TUOI PROGETTI SU KUBERNETES

CLOUD BEST PRACTICE: COME MIGRARE I TUOI PROGETTI SU KUBERNETES

Oggi utilizzare il Cloud non è più un’opzione, ma un must-have. La migrazione dei sistemi informativi aziendali su infrastrutture Cloud porta numerosi benefici alle aziende, tra i quali l’ottimizzazione delle risorse e una significativa riduzione dei costi operativi. In questo scenario il trend più diffuso è quello di spostare i propri progetti in ambienti Cloud basati su Container. Nella maggior parte dei casi la scelta ricade su Kubernetes, lo strumento attualmente più popolare per la gestione e l’orchestrazione dei ContainerKubernetes è il sistema più utilizzato a livello globale, il più efficiente e scalabile tra quelli disponibili sul mercato dei Container. In questo post vi parleremo delle modalità di migrazione in Cloud e vi illustreremo tre best practice per spostare i vostri progetti su Kubernetes.

Rehosting
Tra gli approcci disponibili per migrare le applicazioni in Cloud, il “rehosting” (anche chiamato “lift and shift“) è sicuramente il metodo più semplice. In pratica, si tratta di migrare l’applicazione nella sua interezza senza alterarne lo stato: “impacchettate” la vostra app e la trasferite nell’ambiente containerizzato così com’è, senza apportare modifiche o ottimizzazioni di alcun tipo. Il rehosting è il processo di migrazione più veloce e meno impegnativo in termini di costi e risorse. Detto questo, non effettuando alcuna modifica al codice dell’applicazione e lasciandola al suo stato “originale”, sarà più difficile beneficiare della flessibilità e di altri vantaggi che caratterizzano gli ambienti Cloud nativi.

Replatforming
La seconda tecnica, detta replatforming oppure “lift, tinker and shift“, implica delle lievi modifiche all’applicazione prima della sua migrazione in Cloud. Il replatforming ha l’obiettivo di ottimizzare le applicazioni attraverso piccoli update in modo che possano beneficiare maggiormente dei vantaggi offerti dalle infrastrutture e dai Container Cloud, senza toccare però il “cuore” dell’applicazione. Il replatforming è il processo intermedio tra le tre tecniche di migrazione Cloud. E’ più impegnativo e lungo rispetto al semplice rehosting, ma consente di sfruttare meglio le potenzialità degli ambienti Cloud-native e soprattutto non richiede l’impegno nè le risorse necessarie per effettuare il refactoring.

Refactoring
Eccoci infine alla tecnica del refactoring, la più complessa e dispendiosa a livello di tempi e processi, ma anche la più vantaggiosa per altri versi. Il refactoring implica un processo avanzato di “re-architecting” e anche di “recoding” dell’applicazione, ossia l’apporto di modifiche significative nel codice dell’app. Lo scopo di questa tecnica di migrazione è quello di adattare ed ottimizzare il più possibile l’applicazione alla nuova infrastruttura e poter usufruire in modo completo dei vantaggi e delle funzionalità offerti dagli ambienti Cloud nativi.

Quale processo di migrazione scegliere per la tua azienda? Non c’è una soluzione migliore in assoluto. La scelta della tecnica più adatta dipende dalle esigenze dei singoli business (tempistiche, risorse disponibili, personale dedicato) e dalle caratteristiche dell’infrastruttura pre-esistente.

 

Vuoi maggiori informazioni sulla migrazione in Cloud? Richiedi subito una consulenza gratuita ai nostri esperti!

New call-to-action
Categorie
Blog

COS’È KUBERNETES E PERCHÈ USARLO

Cos’è Kubernetes e perché usarlo

kubernetes

Kubernetes e Docker vivono in simbiosi. I due tool, infatti, sono strettamente collegati ed entrambi rientrano nella tecnologia di containerizzazione alla base del cloud. Dopo aver dedicato a Docker un approfondimento specifico, passiamo ora a Kubernetes cercando di evidenziarne le basi tecniche e il valore per l’innovazione aziendale.

Kubernetes, di cosa si tratta?

Kubernetes è uno strumento open source di orchestrazione e gestione di container. È stato sviluppato dal team di Google ed è uno dei tool più utilizzati a questo scopo. Kubernetes permette di eliminare molti dei processi manuali coinvolti nel deployment e nella scalabilità di applicazioni containerizzate, nonché di gestire in maniera semplice ed efficiente cluster di host su cui vengono eseguiti i container.

Un esempio potrà senz’altro chiarire il funzionamento della tecnologia. Immaginiamo di utilizzare Docker e di creare un’infrastruttura composta da numerosi container; una volta raggiunto un certo grado di complessità, Docker non riesce a gestire l’attivazione e disattivazione dei container e tutte le altre operazioni di gestione, ed è in questa sede che si inserisce Kubernetes. Questo tool, infatti, nasce proprio per semplificare la gestione delle varie operazioni sui container e per orchestrare in modo veloce, efficiente e performante l’intera infrastruttura.

L’impiego ormai pervasivo della tecnologia Kubernetes non dipende unicamente dall’aumento esponenziale di quantità dei container, ma soprattutto dal livello di affidabilità e disponibilità ricercato per il servizio. Kubernetes è ideale per tutti i business che hanno bisogno di una soluzione in HA (Alta Disponibilità), poiché garantisce la continuità del servizio con SLA prossimi al 100%.

Tecnologia Kubernetes, come funziona?

Per comprendere correttamente il funzionamento della tecnologia Kubernetes, occorre introdurre alcuni termini e concetti fondamentali che ne descrivono l’architettura. In particolare, tre:

  • Master:è la macchina che controlla i nodi Kubernetes. È il punto di origine di tutti i processi.
  • Nodi: sono le macchine che eseguono le attività richieste, controllate dal master Kubernetes.
  • Pod: un gruppo di uno o più container distribuiti in un singolo nodo. Tutti i container presenti in un pod condividono delle risorse. I pod astraggono la rete e lo storage dal container sottostante, permettendo di spostare i container nei cluster con maggiore facilità.

Kubernetes offre la possibilità di distribuire i container in modo agevole e scalabile e di gestire al meglio i carichi di lavoro. Permette di creare applicazioni e servizi su più container, programmarli e gestirli a livello di scalabilità e integrità nel tempo. La complessità di gestione derivante da un numero elevato di contenitori viene semplificata raggruppando i container in Pod, che aiutano a programmare i carichi di lavoro e a erogare i servizi richiesti, inclusi rete e storage, ai container stessi. Kubernetes è anche in grado di bilanciare automaticamente i carichi all’interno dei Pod, semplificando notevolmente la gestione complessiva dell’infrastruttura. Inoltre, l’infrastruttura standard di Kubernetes è completamente ridondata, e questo riduce drasticamente il rischio di downtime, mentre con il solo uso di Docker o di altri sistemi di containerizzazione, i livelli di affidabilità non sono così alti.

Perché usare Kubernetes

Concludiamo questo articolo introduttivo riassumendo i motivi che hanno determinato il successo planetario di questa tecnologia. In particolare, Kubernetes va impiegato quando:

  1. Si vuole gestire applicazioni containerizzate in maniera semplice, veloce ed efficiente;
  2. Si ha bisogno di una soluzione in HA e non ci si può permettere alcun disservizio;
  3. L’infrastruttura è complessa ed è formata da numerosi container;
  4. Si vuole usufruire di ulteriori vantaggi di questo tool innovativo, così come descritti nell’articolo dedicato.

L’ecosistema Kubernetes è in costante crescita, sia sotto il profilo dell’adozione che dell’evoluzione tecnologica. In Criticalcase, ci poniamo come partner fidato e competente per guidare le imprese nel nuovo paradigma di sviluppo e gestione del software, su cui esse basano la loro competitività. Container e orchestrazione (Kubernetes) sono i pilastri di questo nuovo mondo, e siamo lieti di poter offrire ai nostri partner le competenze, i tool e l’esperienza necessaria per costruire su di essi il loro vantaggio competitivo.

Siamo a vostra disposizione per una consulenza e ogni informazione al riguardo, e nel frattempo vi consigliamo di approfondire il tema dell’evoluzione dell’infrastruttura verso il cloud scaricando il nostro White Paper dedicato.

La cyber-resilienza è un modello che riunisce i processi di business continuity, pratiche di data security, resilienza organizzativa e offre una soluzione efficace e concreta al crimine informatico.

Add a date

White paper

Categorie
Blog

4 MODI INNOVATIVI DI USARE DOCKER

4 MODI INNOVATIVI DI USARE DOCKER

Abbiamo già parlato di container, ed in particolare di Docker, il tool per la gestione dell’infrastruttura a container più popolare nel settore IT. Nell’articolo di oggi ti mostreremo 4 modi per utilizzare Docker a cui non avevi mai pensato.

1. Esperimenti
La validità scientifica di un esperimento si basa sulla ripetibilità dello stesso. Spesso per verificare l’attendibilità di una nuova scoperta è necessario replicare anche l’ambiente di lavoro e le condizioni in cui è stato condotto l’esperimento. Come fornire gli strumenti per verificare la correttezza di pubblicazioni e paper scientifici? Utilizzando Docker. Docker infatti, grazie alla tecnica dei container, rappresenta la soluzione ideale per ottenere la replicabilità dell’esperimento, mettendo a disposizione in modo semplice lo stesso ambiente di sperimentazione usato nella ricerca a chiunque voglia verificarne la correttezza.

2. Deployment tra le nuvole (letteralmente!)
Un intervento interessante ha suscitato lo stupore di molti al DockerCon 2016: il software di un drone è stato aggiornato mentre l’oggetto era ancora in volo. Qualcosa da non credere. E invece con i container si può fare, e ne abbiamo la prova. Grazie a Docker è stato possibile aggiornare il software del drone mentre stava ancora volando, avviando in parallelo al software di volo un container con il nuovo programma che, una volta aggiornato, si è sostituito al container di volo, dopo aver ricevuto i dati di trasferimento. Con Docker, perciò, si può gestire il deploy di un’applicazione da remoto ma soprattutto con soli 50-200 ms di attesa nel trasferimento dei dati da un container all’altro.

3. Formazione
Non avendo bisogno di configurazioni manuali, i container consentono di risparmiare moltissimo tempo nella preparazione dell’ambiente di lavoro. Spesso per gli studenti è proprio questa la fase in cui emergono le difficoltà. Usando il sistema di gestione dei container si evitano perdite di tempo e si migliora la qualità della formazione.

4. Gestione di stack locali
Docker è un valido strumento anche per quanto riguarda la gestione di stack locali. Gli aggiornamenti continui a cui vengono sottoposti i software rischiano di creare conflitti di versione e incompatibilità difficili da risolvere. Grazie ai container, questo problema viene facilmente evitato. Le applicazioni/servizi possono essere scritti con qualsiasi linguaggio di programmazione senza generare alcuna incompatibilità di sistema. I container, infatti, sono ambienti isolati ed indipendenti all’interno dei quali è possibile inserire un’applicazione con tutte le sue dipendenze, avviabili su qualsiasi macchina che esegue Docker.

Vuoi saperne di più su Docker e l’infrastruttura a container? Richiedi una consulenza gratuita con i nostri esperti!

Facebook
Twitter
LinkedIn

Contattaci

Compila il form e un nostro esperto ti ricontatterà entro 24 ore: non vediamo l’ora di conoscerti!

Categorie
Blog

KUBERNETES: FEATURE E VANTAGGI

KUBERNETES: FEATURE E VANTAGGI

Kubernetes, come abbiamo spiegato nello scorso post, è un tool di orchestrazione dei container in grado di semplificare e allo stesso tempo rendere più efficiente la gestione dei contenitori. Nell’articolo di oggi vedremo nello specifico quali sono le caratteristiche e soprattutto i vantaggi che derivano dall’uso di questo strumento.

Lo scopo principale di Kubernetes, e degli altri orchestratori di container presenti sul mercato, è sicuramente quello di semplificare il lavoro dei team tecnici, automatizzando molti dei processi che prima venivano eseguiti manualmente per il deployment delle applicazioni e dei servizi. In particolare vediamo quali sono le funzioni di Kubernetes in grado di migliorare il lavoro del reparto IT e quali sono i vantaggi per le aziende che decidono di usarlo.

Feature di Kubernetes:

  • Automatizza vari processi manuali: ad esempio controllare quale server ospiterà il container, come verrà avviato ecc.
  • Interagisce con più gruppi di container: è in grado di gestire contemporaneamente più cluster
  • Fornisce servizi aggiuntivi: oltre a gestire i container, Kubernetes offre servizi di networking, storage e security
  • Self-monitoring: controlla costantemente lo stato dei nodi e dei container (auto-monitoraggio)
  • Autoscaling orizzontale: permette una scalabilità delle risorse non solo verticalmente ma anche orizzontalmente, in modo semplice ed immediato
  •  Orchestrazione storage: monta e aggiunge il sistema di storage selezionato per eseguire le applicazioni
  • Automatizza rollout e rollback: se in seguito all’esecuzione di modifiche qualcosa non dovesse funzionare, ritorna automaticamente alle versioni precedenti
  • Bilanciamento dei container: sa sempre dove inserire i container, calcolando qual è il “posto ideale”
  • Eseguibile dappertutto: è uno strumento open source che ti dà la libertà di sfruttare indistintamente infrastrutture on-premise, cloud pubblico o ibrido, lasciandoti spostare i carichi di lavoro dove vuoi

Vantaggi di Kubernetes per le aziende:

  •  Controllare e automatizzare i deployment e gli aggiornamenti
  • Risparmiare ottimizzando le risorse infrastrutturali grazie all’utilizzo dell’hardware in modo più efficiente
  • Orchestrare container su host multipli
  • Risolvere problemi comuni dovuti alla proliferazione dei container organizzandoli in “pod” (vedi articolo precedente)
  •  Scalare in tempo reale risorse e applicazioni
  • Testare e correggere automaticamente le applicazioni

I vantaggi sono numerosi…non ti abbiamo ancora convinto? Parla con i nostri esperti e trova la soluzione più vantaggiosa per il tuo business!

 
Facebook
Twitter
LinkedIn

Contattaci

Compila il form e un nostro esperto ti ricontatterà entro 24 ore: non vediamo l’ora di conoscerti!

Categorie
Blog

7 COSE CHE DEVI SAPERE SU DOCKER

7 COSE CHE DEVI SAPERE SU DOCKER

Cos’è Docker e come funziona?

Continuiamo a parlare di container, la soluzione IT sulla bocca di tutti in questo periodo. Docker è uno dei tool più conosciuti e utilizzati a livello di infrastruttura a container. Di seguito ti mostriamo 7 cose che devi assolutamente sapere su Docker per comprendere meglio di cosa si tratta e come funziona.

1. Docker è uno strumento per la gestione dei container
Partiamo dalle basi, ossia da che cos’è Docker. Si tratta di uno strumento open-source per il deployment e la gestione dei container. Come detto sopra, è uno dei più diffusi e conosciuti, sebbene non sia l’unico. E’ un sistema studiato per creare ed eseguire applicazioni e servizi come container isolati.

Docker si esegue direttamente sul sistema operativo e i container condividono il kernel e l’hardware della macchina fisica grossomodo con lo stesso overhead dei processi eseguiti direttamente sulla macchina. Inoltre Docker permette di automatizzare il deployment delle applicazioni all’interno dell’ambiente containerizzato.

2. Docker non è un sistema di virtualizzazione dell’hardware
Quando Docker fu rilasciato, molte persone lo paragonavano agli hypervisor delle virtual machine come VMware, KVM e Virtualbox. Anche se Docker risolve problemi simili e condivide alcuni vantaggi con gli hypervisor, in realtà ha un approccio totalmente differente da essi. Le macchine virtuali emulano l’hardware, ma le astrazioni necessarie per fare questa operazione hanno un determinato costo. Questo significa che si possono eseguire solamente alcune virtual machine su un determinato hardware prima che emrgano delle problematiche. D’altra parte, teoricamente si possono creare centinaia di container Docker sulla stessa macchina senza avere problemi di questo tipo.

3. Docker usa un file system stratificato in layer
Gli strumenti come Docker forniscono un modello di deployment basato sull’immagine, che semplifica la condivisione di un’applicazione o di un servizio tra più ambienti. I file di immagine sono organizzati in livelli, e ogni volta che il file viene modificato viene creato un nuovo livello. Se conosci photoshop il concetto dei livelli potrebbe essserti già familiare: Docker funziona circa allo stesso modo. In poche parole, modificare un layer non comporta modifiche ai livelli sottostanti. Inoltre Docker permette di controllare facilmente le versioni delle immagini e di eseguire velocemente un eventuale roll-back alla versione precedente.

4. Docker ti fa risparmiare tempo
Docker consente di risparmiare moltissimo tempo sul processo di configurazione ed installazione, che in alcuni casi può essere veramente lungo e dispendioso, sia in termini di tempo che di risorse umane dedicate (e di conseguenza anche a livello economico). Grazie all’automatizzazione del deployment, processi che impegnerebbero un team per un giorno intero con Docker diventano una questione di minuti.

5. Docker ti fa risparmiare soldi
Si sa, il tempo è denaro. Docker consente di risparmiare sui costi, non solo a livello di staff dedicato ma anche a livello di spese infrastrutturali. Con i container memoria e dischi non utilizzati possono essere condivisi tra diverse istanze. Pertanto differenti servizi possono essere “pacchettizzati” sullo stesso hardware, spostandoli quando non sono più necessari senza doversi preoccupare del costo di riattivazione.

6. Docker ha un solido ecosistema di immagini disponibili
Già due anni fa erano disponibili sul web oltre 14.000 immagini Docker pubbliche. La maggior parte di esse viene condivisa attraverso la piattaforma Docker Hub, il punto di riferimento per chi lavora con le immagini pubbliche di Docker.

7. Docker è multipiattaforma
Docker nasce per la gestione di container Linux. Tuttavia ora è possibile utilizzarlo anche con sistemi operativi differenti con l’utilizzo delle dovute accortezze.

Nel prossimo post parleremo di Kubernetes, un altro tool utile per gestire le infrastrutture a container, stay tuned!

Vorresti usare Docker ma non sai da dove iniziare? Scopri le nostre SOLUZIONI CONTAINER e richiedi subito una consulenza gratuita e senza impegno ai nostri specialisti!

Facebook
Twitter
LinkedIn

Contattaci

Compila il form e un nostro esperto ti ricontatterà entro 24 ore: non vediamo l’ora di conoscerti!

Categorie
Blog

CONTAINER VS VIRTUAL MACHINE

Container Vs Virtual Machine: è vera sfida?

Si parla con sempre maggiore frequenza dei container, la tecnologia di virtualizzazione che sta prendendo velocemente piede in ambito IT, soprattutto in ottica di cloud computing.

Rimandando all’articolo introduttivo ogni considerazione di base circa i container, molti operatori si interrogano circa le differenze tra container e virtual machine, il metodo di virtualizzazione finora più utilizzato nel settore. Ci si interroga se siano davvero differenti e se i container non siano “semplice virtualizzazione”. Approfondendo, si arriva poi a contrapporle: container vs virtual machine è diventato un tema piuttosto comune.

Oggi, vedremo le principali differenze tra container e virtual machine e chiariremo ogni dubbio.

Container e Virtual Machine, quali differenze?

La tecnologia dei container può essere considerata figlia della virtualizzazione, una sorta di “nuova generazione” che introduce innovazioni importanti alla tecnica tradizionale.

La differenza principale tra le due tecnologie è che nei container non esiste l’hypervisor (cuore pulsante dell’architettura delle macchine virtuali), ma è presente un sistema che “impacchetta” le applicazioni/servizi applicativi in unità logiche indipendenti, dette appunto container. Il sistema crea un livello di astrazione fra i container e il sistema operativo ospitante e gestisce l’attivazione e la disattivazione dei contenitori.

Un’altra grande differenza è che la virtualizzazione permette di eseguire più sistemi operativi contemporaneamente in un singolo sistema, mentre i container condividono lo stesso kernel del sistema operativo e isolano i processi applicativi dal resto dell’infrastruttura.

Piuttosto che contrapporre le tecnologie, parlando di container vs macchine virtuali, esse andrebbero adottate sinergicamente, ognuna con una determinata finalità, con elementi di forza e inevitabili limiti.

I vantaggi dei container, punto per punto

Ponendoci dal punto di vista dei container, ecco i principali benefici della tecnologia.

  • Deployment semplificato: la tecnologia dei container permette di semplificare il deployment di qualsiasi applicazione poiché essa viene “impacchettata” in un singolo componente distribuibile e configurabile con una sola linea di comando, senza doversi preoccupare della configurazione dell’ambiente di esecuzione;
  • Disponibilità rapida: virtualizzando solamente il sistema operativo e le componenti necessarie all’esecuzione dell’applicazione, invece che l’intera macchina, i tempi di avvio di un container si riducono notevolmente rispetto a quelli di una virtual machine;
  • Ampia portabilità: i container possono essere creati e replicati in qualsiasi ambiente in modo semplice e veloce. Si tratta di un grande vantaggio a livello di software life cycle poiché, per esempio, i container possono essere copiati molto velocemente per creare gli ambienti di sviluppo, test e produzione senza la necessità di operare configurazioni;
  • Controllo più granulare: i container possono “pacchettizzare” un’intera applicazione ma anche solo un singolo componente e servizio. In questo modo, consentono agli sviluppatori di suddividere ulteriormente le risorse in microservizi, garantendo così un maggiore controllo sull’eseguibilità delle applicazioni e un miglioramento delle performance dell’intera infrastruttura;
  • Leggerezza: un grande punto di forza dei container è che sono molto più “leggeri” delle virtual machine perché non devono attivare un loro sistema operativo dedicato. Di conseguenza, sono molto più veloci da attivare e disattivare e ideali per quegli ambienti in cui il carico di elaborazione varia sensibilmente e in maniera imprevedibile.

Per estendere e approfondire ulteriormente la panoramica sui benefici dei container, ti indirizziamo all’articolo dedicato.

Container vs Virtual Machine: anche i container hanno dei limiti

Anche i container hanno le loro debolezze. Una di queste è rappresentata dalla difficoltà di gestione quando il numero di container diventa molto elevato. Al contrario, le virtual machine sono più semplici da amministrare perché raramente raggiungono grandi quantità, come invece può accadere facilmente con l’utilizzo dei container.

Un altro punto debole è proprio la condivisione dello stesso kernel del sistema operativo. A livello teorico, uno dei container potrebbe compromettere la stabilità del kernel, influenzando anche gli altri.

In conclusione, non c’è sfida tra i due

Per concludere possiamo dire che non si tratta di due soluzioni antitetiche: parlare di container vs virtual machine ha poco senso. A seconda dello scopo, può essere più adatta la virtualizzazione o la tecnologia dei container. Ad esempio, la leggerezza dei container si scontra con l’impossibilità di avere più sistemi operativi nello stesso sistema. Allo stesso modo, con risorse e capacità limitate, una soluzione leggera come quella dei container è sicuramente più idonea e performante rispetto a un’infrastruttura composta da virtual machine.

Al giorno d’oggi, pensare al cloud journey o alla modernizzazione applicativa senza avere a che fare con la virtualizzazione di container e virtual machine è del tutto impossibile. Tuttavia, si tratta di temi complessi, che richiedono competenze specialistiche, strumenti adeguati e una solida infrastruttura su cui lavorare. In Criticalcase, supportiamo da anni le aziende nei percorsi di modernizzazione, e abbiamo sviluppato un bouquet di servizi finalizzati a realizzare il massimo valore del cloud.

Se siete interessati a portare innovazione nella vostra azienda, possiamo intraprendere un percorso insieme. Qui, tutte le informazioni per entrare in contatto con noi.

Perché quantificare i costi del passaggio al cloud può rivelarsi difficile?

Scopri come gestire al meglio la tua piattaforma cloud ed evita extra budget indesiderati!

Add a date

White paper

Categorie
Blog

I VANTAGGI DEI CONTAINER

I VANTAGGI DEI CONTAINER

Perchè usare i container?

Negli scorsi articoli abbiamo spiegato che cosa sono i container e abbiamo visto brevemente qual è la storia di questa nuova tecnologia. Oggi ci soffermeremo su uno degli aspetti più interessanti e vedremo insieme quali sono i vantaggi dell’uso dei container per le aziende.

In particolare, abbiamo individuato 6 benefici dei container che rendono l’infrastruttura più flessibile ed efficiente.

1.Isolamento
Un grande vantaggio della tecnologia dei container è l’isolamento delle risorse: memoria, processi, dispositivi e rete sono virtualizzati a livello di sistema operativo, e le applicazioni isolate l’una dall’altra.

Ciò significa che non bisogna preoccuparsi di conflitti di dipendenze o risorse contese, poichè ogni applicazione ha dei limiti definiti di utilizzo delle risorse. Inoltre, grazie all’isolamento, il livello di protezione è maggiore.

2. Aumento della produttività
Uno dei benefici dei container è la possibilità di ospitare una grande quantità di contenitori anche sul proprio PC, avendo sempre a disposizione un ambiente di deploy e test adatto a ciascuna applicazione, operazione che risulterebbe molto più complessa a livello di virtual machine. In particolare questa tecnologia determina un aumento della produttività degli sviluppatori, grazie all’eliminazione delle dipendenze e dei conflitti tra i differenti servizi. Ogni contenitore può ospitare un’applicazione o un singolo componente dell’applicazione, e, come dicevamo nel punto 1, è isolato rispetto agli altri. In questo modo gli sviluppatori possono dimenticarsi delle sincronizzazioni e delle dipendenze per ogni servizio, così come sono liberi di eseguire gli aggiornamenti senza doversi preoccupare di possibili conflitti tra i componenti.

3. Deployment semplificato e tempi di avvio più rapidi
Ogni container include non solo l’applicazione/servizio ma anche tutto il pacchetto utile per eseguirlo, semplificando ogni operazione di deployment e facilitando la distribuzione su differenti sistemi operativi senza ulteriori sforzi di configurazione. Inoltre, virtualizzando solamente il sistema operativo, i tempi di avvio si accorciano notevolmente rispetto alle VM.

4. Ambiente uniforme
Grazie alla forte standardizzazione dell’approccio, i container consentono la portabilità delle risorse, riducendo le problematiche legate allo spostamento delle applicazioni attraverso il ciclo di sviluppo, test e produzione. I container possono essere distribuiti su qualunque risorsa di calcolo indipendentemente da configurazioni, SO o hardware. Questo significa che le applicazioni possono essere distribuite in modo semplice e affidabile indipendentemente dall’ambiente. Non è necessario configurare manualmente i server e le nuove features possono essere rilasciate con maggiore facilità.

5. Efficienza operativa
I container permettono di eseguire più applicazioni sulla medesima istanza e di specificare la quantità esatta di risorse che devono essere usate, garantendo un’ottimizzazione delle stesse. I contenitori occupano minor spazio su disco rispetto alle VM e rendono il sistema più agile, migliorando l’efficienza operativa, lo sviluppo e la gestione delle applicazioni.

6. Controllo di versione
La tecnologia dei container permette di gestire le versioni del codice dell’applicazione e delle sue dipendenze. E’ possibile tenere traccia delle versioni di un container, analizzare le differenze tra di esse ed eventualmente tornare a versioni precedenti.

I vantaggi dei container sono molteplici: si tratta di una soluzione tecnologica avanzata in grado di migliorare la gestione delle applicazioni e di rendere più leggero e performante il sistema architetturale. Molti ne parlano come di un’alternativa alle più note virtual machines, ma quali sono le differenze tra VM e container? Ne parliamo nel prossimo post!

Vorresti usare i container ma non sai da dove iniziare? Scopri le nostre SOLUZIONI CONTAINERe richiedi una consulenza gratuita senza impegno con i nostri esperti!

 
Facebook
Twitter
LinkedIn

Contattaci

Compila il form e un nostro esperto ti ricontatterà entro 24 ore: non vediamo l’ora di conoscerti!

Categorie
Blog

CONTAINER: DALLE ORIGINI FINO A DOCKER

CONTAINER: DALLE ORIGINI FINO A DOCKER

Come nasce la tecnologia dei container?

Nello scorso post abbiamo parlato di container, una tecnologia sempre più utilizzata ultimamente in ambito IT e Cloud Computing, la cui origine non è però così recente come si può pensare. Vediamo in breve la storia dei container: dall’idea su cui si basa questa tecnologia fino alle soluzioni più recenti (Docker e simili).

Il concetto alla base dei container nasce già nel lontano 1979 con chroot UNIX, un sistema in grado di fornire ai processi degli spazi isolati all’interno dello storage in uso. Per questa peculiare caratteristica, Chroot può essere considerato una sorta di precursore degli attuali container.

Solo una ventina di anni dopo nasce una soluzione più vicina a quella dei container in uso oggigiorno: si tratta di FreeBSD Jail, introdotta nel 2000. FreeBSD Jail consentiva di ripartire il sistema in più sottosistemi isolati chiamati jail. Rispetto a chroot, la funzionalità aggiuntiva di questi ambienti era la possibilità di isolare anche i file di sistema, gli utenti e la rete, rendendoli molto più sicuri. La soluzione aveva però alcune debolezze in termini di implementazione e presto venne sostituita da metodi più efficienti.

L’anno dopo, nel 2001, viene sviluppata una soluzione simile a Jail chiamata Linux VServer, capace di partizionare le risorse di un computer nei cosidetti “security context”, all’interno dei quali vi era un sistema VPS (Virtual Private Server). Il progetto VServer, lanciato da Jacques Gèlinas, getta le basi per la creazione di più spazi utente controllati in Linux e, nel corso del tempo, con l’inserimento di tecnologie ed elementi aggiuntivi, si arriverà allo sviluppo degli attuali container Linux.

Grazie allo sviluppo di nuove tecnologie e ai progressi compiuti in materia di namespaces (spazi dei nomi utente), nel 2008 nasce il progetto LinuX Container (LXC): la soluzione più completa di gestione di container in quegli anni. Tra i componenti fondamentali del progetto vi è lo sviluppo dei cgroups, creati da Google nel 2006, i quali consentono di controllare e limitare l’utilizzo delle risorse da parte di un processo o di un gruppo di processi.

Il 2013 è l’anno di svolta: arriva Docker, il sistema di container Linux più utilizzato in campo IT. Docker è un progetto open source sviluppato dalla compagnia Dotcloud (in seguito rinominata Docker) sulla base di LXC, che, attraverso ulteriori avanzamenti, diventò ciò che è la tecnologia Docker di oggi. Dal 2014 Docker non utilizza più LXC come ambiente di esecuzione di default, sostituito dalla propria libreria libcontainer scritta nel linguaggio di programmazione Go. Docker è un ecosistema complesso ma molto intuitivo per il deployment e la gestione dei container, ricco di funzonalità tra le quali un sistema di immagini, registri locali e globali per i container e un’interfaccia a linea di comando.

Abbiamo parlato nello specifico di Docker in quanto è il più diffuso a livello mondiale, ma non è l’unico sistema di gestione dei container: esistono svariate soluzioni tecnologiche che hanno la stessa funzione tra le quali Kubernetes, Google Container Engine e molte altre.

Vuoi saperne di più sulla tecnologia dei container? Richiedi una consulenza gratuita con i nostri esperti!

 
Facebook
Twitter
LinkedIn

Contattaci

Compila il form e un nostro esperto ti ricontatterà entro 24 ore: non vediamo l’ora di conoscerti!

Richiedi la tua prova gratuita

Ehi! Stai già andando via?

Iscriviti alla nostra newsletter per restare aggiornato sulle novità dell’universo Criticalcase