All’inizio del cloud pubblico il fattore chiave di scelta era dettato dalle economie di scala. Si è utilizzato lo stesso hardware su interi datacenter, con enormi vantaggi di prezzo, ma allo stesso tempo limitando le capacità dei server utilizzati per ospitare l’infrastruttura e la piattaforma come servizio.
L’ascesa del Progetto Open Compute e il suo supporto da parte dei principali vendor cloud, hanno cambiato le cose, dando a quei cloud standard hardware comuni per supportare una gamma più ampia di funzioni senza aggiungere costi significativi.
Il cloud di oggi: server reali e macchine virtuali
L’ultima generazione di hardware è ancora più flessibile. Il framework Olympus project di Microsoft, la base della sua nuova generazione di datacenter Azure, è un ottimo esempio, basandosi sul suo patrimonio x86 per supportare l’aggiunta di ulteriore elaborazione tramite Gpu o Fpga. Con la tecnologia delle Gpu al centro di molti algoritmi di machine learning e Fpga che forniscono una rete accelerata e supportano l’apprendimento macchina dedicato per servizi come Bing, ora c’ è molta più flessibilità, sia nelle funzionalità della Cpu che in come questi server supportano i servizi cloud.
Attualmente, Azure offre 36 tipi di macchine virtuali separate, focalizzate su sei diversi casi d’ uso. È necessario riflettere attentamente sui carichi di lavoro prima di scegliere un’opzione, perché scegliere il tipo sbagliato potrebbe rendere l’applicazione più costosa da eseguire.
I 36 tipi di Virtual machine in Azure sono disponibili sia con il supporto di Windows sia Linux, così è a disposizione un’ampia scelta di sistemi operativi per il codice, facilitando il sollevamento e lo spostamento delle applicazioni esistenti o fornendo endpoint che si inseriscono nella catena di sviluppo.
I sei casi d’ uso suggeriti da Microsoft sono i seguenti:
generico
ottimizzato per il calcolo
ottimizzato per la memoria
ottimizzato per lo storage
Graphic processing unit
calcolo ad alte prestazioni.
Una volta deciso il carico di lavoro e il tipo di Vm che si desidera utilizzare, è possibile sintonizzarlo selezionando il numero di Cpu virtuali, la quantità di memoria disponibile e le dimensioni dello storage locale. Altre opzioni aggiungono dischi dati e supporto per più connessioni di rete, offrendo una larghezza di banda maggiore.
Per semplificare le cose, Microsoft ha normalizzato le capacità di calcolo delle proprie macchine virtuali, rendendo più facile il confronto delle capacità, con un grafico che utilizza le prestazioni per aiutarvi a scegliere la macchina virtuale giusta per la vostra applicazione.
L’hardware utilizzato da Azure per queste macchine virtuali proviene da diverse generazioni di datacenter. Avrete ancora bisogno di scegliere il tipo di Virtual machine che volete, perché hanno caratteristiche diverse. Alcuni sono progettati in modo da non vedere molta differenza di prestazioni tra di loro, indipendentemente da quale hardware sottostante ci potrebbe essere. Altri hanno prestazioni superiori, con accesso a diverse generazioni di hardware server.
Le macchine virtuali specializzate Azure si concentrano su questioni specifiche che riguardano i principali carichi di lavoro aziendali. Alcuni offrono un maggior numero di calcoli, pronti per contenuti web dinamici, per server applicativi e per l’ elaborazione in batch offline. Altri aggiungono memoria per quando si lavora con database in-memory e per l’analisi, dove avere il maggior numero possibile di dati in memoria è la chiave. Altri server aggiungono larghezza di banda di archiviazione, per quando è necessario un sacco di I/O e un sacco di disco. Microsoft ha recentemente implementato una nuova generazione di macchine virtuali di storage, un grande cambiamento nella sua strategia di acquisto.
Altre opzioni supportano carichi di lavoro più recenti, con istanze basate su Gpu che offrono Gpu Nvidia. Due versioni supportano sia i carichi di lavoro di visualizzazione sia il calcolo basato su Gpu utilizzando Cuda e OpenCl. Gpu: istanze di calcolo come questa supportano il lavoro con codice dati-parallelo, oltre a costruire le proprie reti neurali per l’apprendimento automatico.
In alternativa alla programmazione basata su Gpu, ci sono anche Virtual machine per problemi di calcolo ad alte prestazioni, che funzionano su processori veloci con interfacce di rete veloci. Questi sono i punti d’avanguardia del cloud, offrendo le stesse capacità di calcolo scientifico che prima richiedevano investimenti significativi. Se state lavorando con strumenti di ingegneria computazionale, utilizzando tecniche come l’analisi degli elementi finiti o la fluidodinamica computazionale, queste sono le immagini per voi e per il vostro codice.
Molti carichi di lavoro non hanno bisogno di server dedicati; se si progetta il codice per essere apolidi, si dovrebbe cercare di lavorare con gli Azure hosted container, soprattutto ora che c’ è il supporto per la scalabilità di massa con Azure Container Instances, e per le applicazioni Kubernetes-managed e servizi con Azure Container Service, ora noto come Aks.
Anche così, vale comunque la pena di capire le capacità delle Vm sottostanti utilizzate per ospitare i container, in quanto ciò può determinare sia il numero di Vm che si sta utilizzando, sia la velocità con cui si distribuiscono i nuovi container.
Qualunque cosa si faccia, si dovrebbe tenere d’ occhio l’utilizzo della Vm nel vostro portale Azure. Se una Vm mostra un utilizzo regolare al 100%, è un segno che avete scelto qualcosa di troppo piccolo per il carico di lavoro. Allo stesso modo, se l’utilizzo è basso, probabilmente è stata scelta una macchina virtuale sovraalimentata per il carico di lavoro.
Riorientare le applicazioni e i servizi alle nuove macchine virtuali più adatte è relativamente semplice e, se l’architettura delle applicazioni è a prova di errore, richiederà pochissimi o nessun tempo di inattività.