Nel mondo del cloud, nel SaaS (Software as a Service), ci affidiamo a delle potenti infrastrutture esterne per riceverne dei servizi (Google Drive o Google, Amazon, Microsoft Azure…). Dirò due cose molto rapide.

Cosa sono le Macchine Virtuali?
Una macchina virtuale è un’emulazione di un computer, del tutto simile al computer desktop o portatile attualmente in uso. Ogni macchina virtuale, che include una configurazione hardware e un sistema operativo, appare all’utente come un computer fisico che esegue Windows o Linux. È quindi possibile installare il software necessario per eseguire le attività nel cloud.
La differenza è che non è si vede l’hardware e non bisogna installare noi il sistema operativo. Il provider di servizi cloud esegue la macchina virtuale su un server fisico in uno dei propri data center, spesso condividendo tale server con altre macchine virtuali. Con il cloud, è possibile disporre di una macchina virtuale pronta per l’uso in pochi minuti a costi minori rispetto a un computer fisico.
Cosa sono i Contenitori?
I contenitori come delle sandbox permettono una esecuzione isolata per le applicazioni. Sono simili alle macchine virtuali, tranne per il fatto che non richiedono un sistema operativo guest. Al contrario, l’applicazione e tutte le relative dipendenze sono incluse in un “contenitore” e quindi viene usato un ambiente di runtime standard per eseguire l’app. Questo consente l’avvio del contenitore in pochi secondi, poiché non è presente alcun sistema operativo da avviare e inizializzare. È sufficiente che venga avviata l’app.
Il progetto open source Docker è una delle principali piattaforme per la gestione di contenitori. I contenitori Docker forniscono un approccio efficiente e semplice per la distribuzione delle applicazioni, in quanto consentono di distribuire i diversi componenti dell’applicazione in modo indipendente in contenitori diversi. In un singolo computer possono essere eseguiti più contenitori e i contenitori possono essere spostati tra i computer. La portabilità del contenitore consente di distribuire facilmente le applicazioni in più ambienti, sia in locale che nel cloud, spesso senza apportare alcuna modifica all’applicazione.
Cos’è l’elaborazione Serverless?
Nell’elaborazione serverless si esegue il codice dell’applicazione senza creare, configurare o gestire un server. L’applicazione è divisa in funzioni distinte ed eseguite quando vengono attivate da un’azione. Si usa per attività automatizzate come, per esempio, un processo serverless che invii automaticamente una conferma tramite posta elettronica dopo che un cliente effettua un acquisto online. Vedi IFTTT o anche Microsoft Flows e Zapier
Il modello serverless è diverso dalle macchine virtuali e dai contenitori in quanto è previsto il pagamento solo per il tempo di elaborazione usato da ogni funzione durante la relativa esecuzione. Per le macchine virtuali e i contenitori, i costi vengono addebitati durante l’esecuzione, anche se le applicazioni che contengono sono inattive. Questa architettura non funziona per ogni app, ma quando la logica dell’app può essere suddivisa in unità indipendenti, è possibile testarle separatamente, aggiornarle separatamente e avviarle in microsecondi, rendendo questo approccio l’opzione più rapida per la distribuzione.