Qual è la differenza tra Virtualizzazione e Cloud Computing?
CLOUD & DEVOPS
Qual è la differenza tra Virtualizzazione e Cloud Computing?
event 29/05/2018

Scommetto che almeno una volta nella vita ti sei trovato con gli amici a guardare insieme una partita o un film. Inutile dire che in questi casi spesso entri in gioco anche una componente mangereccia, magari una bella accoppiata pizza+birra prima o durante la proiezione. Ma che c'entra la pizza con virtualizzazione e Cloud Computing? Be', non ci crederai, ma sono molto più vicini di quanto tu possa immaginare! Cerchiamo di fare un po' di chiarezza su cosa sono e come si differenziano queste tecnologie facendoci aiutare da una metafora... succulenta!
La Digital Transformation sta puntando i riflettori sul Cloud Computing, alimentando il confronto tra questa tecnologia e quelle più tradizionali, come la virtualizzazione.
Culinariamente parlando, potremmo dire che ricorrere alla virtualizzazione è come farsi la pizza in casa, mentre essere in cloud è come ordinare una pizza a domicilio. Vediamo in dettaglio cosa comporta scegliere un'opzione o l'altra.
Che cos'è la Virtualizzazione?
La virtualizzazione è presente già da un pezzo e ormai è conosciuta ai più, specialmente nel settore IT. La virtualizzazione aiuta le aziende a lavorare in modo più efficiente rispetto ai flussi di lavoro tradizionali o alle applicazioni installate direttamente su server fisico. Le organizzazioni possono fare affidamento su un ambiente sicuro utilizzando hardware e software gestiti internamente dal personale IT. La virtualizzazione prevede un software che astragga le infrastrutture fisiche al fine di creare diverse risorse dedicate: la tecnologia alla base della virtualizzazione è nota come Virtual Machine Monitor (VMM) o virtual manager, che separa gli ambienti di calcolo dall'infrastruttura fisica effettiva.
I workload tradizionali sono ben supportati dai prodotti di virtualizzazione aziendale, poiché sono in grado di funzionare su istanze virtuali anche i software obsoleti ai quali sono legati i carichi di lavoro: la virtualizzazione consente di eseguire sullo stesso server più sistemi operativi e più applicazioni contemporaneamente. In tal modo, è possibile per le aziende ridurre i costi IT aumentando allo stesso tempo l'efficienza, l'utilizzo e la flessibilità degli hardware esistenti.
La tradizionale virtualizzazione è molto simile alla preparazione di una pizza. Se da una parte hai infatti bisogno di costruire, configurare e mantenere nel tempo l'ambiente virtuale procurando hardware e software, dall'altra hai la necessità di cucinare una pizza procurandoti tutti gli ingredienti necessari all'impasto e alla lievitazione. E se nell'IT hai bisogno di più risorse, devi ricominciare quel processo e costruire le risorse aggiuntive di cui ho bisogno, così come se dovessi preparare più impasti a seconda di quanti sono gli invitati. Una volta poste le basi, avrai quindi bisogno di dimensionare l'architettura (capire quanto grandi fare le pizze), il sistema operativo da utilizzare e il software che vuoi virtualizzare (la farcitura), dopodiché potrai realizzare le VM richieste (procedere con la cottura): se esiste un gruppo IT aziendale, è possibile eseguire metà di questo processo, ma è comunque necessario creare ogni nuova VM, configurarla, configurarne il software, mantenerla e così via.
Che cos'è il Cloud Computing?
Se ci pensi, in pizzeria seguono più o meno lo stesso procedimento che svolgi a casa. E proprio questo procedimento è ciò che sta alla base del servizio a domicilio, risparmiando a chi ordina la pizza l'onere della preparazione. Il paragone culinario con la virtualizzazione e il Cloud Computing è quantomeno azzeccato poiché, allo stesso modo, la prima è la tecnologia fondamentale che alimenta la seconda.
Il cloud offre agli utenti l'accesso ai dati ovunque si trovino, con l'unico requisito di essere connessi a Internet. Nelle aziende in costante evoluzione di oggi è fondamentale che le persone ottengano ciò di cui hanno bisogno quando ne hanno bisogno, sul proprio computer, tablet o cellulare, in ufficio, fuori sede o in viaggio. Questa è esattamente la comodità offerta dal Cloud Computing. Il Cloud Computing è un termine generico per diversi tipi di servizi cloud, tra i quali annoveriamo lo Storage, il Backup e l'Hosting, il tutto tramite un'offerta SaaS.
Quindi, quali sono le differenze?
Essenzialmente, la virtualizzazione riguarda software che manipolano l'hardware, mentre il Cloud Computing si riferisce a servizi che sono il risultato di tale manipolazione. Il cloud può quindi includere prodotti di virtualizzazione al fine di fornire un servizio di elaborazione: un vero cloud fornisce anche funzionalità self-service, elasticità, gestione automatizzata, scalabilità e servizi pay-as-you-go che non riguardano la virtualizzazione.
Quindi, in qualche modo il cloud non solo include la virtualizzazione, ma ne espande le potenzialità. Possiamo vedere il Cloud Computing come un'evoluzione della virtualizzazione: i clienti che virtualizzano i loro server hardware possono adottare il Cloud Computing per aumentare il self-service, la scalabilità, i livelli di servizio e l'agilità.
La virtualizzazione può fare in modo che una risorsa funzioni come molte, mentre il Cloud Computing consente a diversi reparti (tramite cloud privato) o aziende (attraverso un cloud pubblico) di accedere a un singolo pool di risorse con provisioning automatico.
Con il cloud, se hai bisogno di una nuova VM puoi semplicemente selezionare la sua immagine da un catalogo condiviso e ottenere il prodotto. Tutto qua. Non hai bisogno di sapere da dove provenga il sistema operativo, né su quale hardware o host sia eseguito, o qualsiasi altra informazione, a parte quale tra Windows o Linux eseguire. In quanto utente finale, il fatto che l'hardware sia già presente e che l'infrastruttura sia già configurata ti permette di non preoccuparti dell'utilizzo o del dimensionamento delle risorse, fermo restando che pagherai maggiormente -come ovvio- qualora tu ne utilizzi di più.
Chi ha un'infrastruttura virtuale, generalmente, la ha "in casa" e deve poi assicurarsi di avere un'area sistemi e delle competenze avanzate in grado di gestirla, con il vantaggio di un totale controllo e sicurezza. Il cloud offre un parallelo con il cloud di tipo privato. Tuttavia il cloud offre anche le versioni ibride e pubbliche che permettono un salto di livello in più a quelle aziende che non si vogliono dedicare al substrato più "basso" dell'infrastruttura. Possiamo dire che, a livello meramente infrastrutturale, virtualizzazione e Cloud Computing non differiscono molto: la vera differenza per l'acquirente è che il cloud permette, in aggiunta, la possibilità di fruire semplicemente del servizio "senza sapere cosa c'è dietro".
Per tornare alla nostra pizza, possiamo dire che il Cloud Computing è in grado di rispondere rapidamente alle tue esigenze come un comodo servizio a domicilio, considerato che non è necessario preparare in prima persona tutto il necessario. Devi solo sederti e usufruire del servizio! E se intendi avere maggiori funzionalità, puoi espandere in maniera semplice l'utilizzo delle risorse: è come se tu volessi ordinare una pizza o una bibita in più, basta una telefonata.
Ovviamente ci sono vantaggi ricorrendo a entrambi, virtualizzazione e Cloud Computing, proprio come alcune persone preferiscono la pizza fatta da loro a quella ordinata in pizzeria. Ma se pensi ai due diversi scenari, uno nel quale devi passare un bel po' di tempo a comprare gli ingredienti, cucinare, far lievitare e infine cuocere, e uno in cui ti basta una sola telefonata per avere lo stesso risultato con minor sforzo, potrai ben capire come virtualizzazione e Cloud Computing siano due aspetti tanto simili quanto diversi!
Un nuovo approccio
La cosa fondamentale da comprendere è che l'avvento della Digital Transformation non solo ha favorito l'ingresso di nuove tecnologie nella nostra vita e nelle nostre organizzazioni, ma ha anche contribuito a modificare la visione e l'approccio nei confronti di quelle già esistenti. Il Cloud Computing, infatti, non è solo una nuova architettura tecnologica, ma rappresenta un nuovo modo di pensare l'IT incentrato sulla fruizione dei servizi anziché sul possesso delle risorse.
Il cloud e i suoi strumenti flessibili e dinamici invogliano gli utenti a cambiare anche punti di vista e metodologia quando passano a questa tecnologia. Forse molte di queste cose si sarebbero potute realizzare anche prima, ma il nuovo paradigma della Digital Transformation sta creando e facilitando senza dubbio un flusso tecnologico di ammodernamento su tutti i livelli.
Scopri subito come ottenere un'infrastruttura Cloud in 5 step!
article Scarica l'eBook!Se hai intenzione anche tu di prendere parte a questo rinnovamento tecnologico, puoi cominciare subito a fare affidamento su una infrastruttura cloud efficiente che supporti la tua organizzazione lato IT. Come fare? Scarica subito l'eBook gratuito e scopri i 5 passi per realizzare un'infrastruttura cloud di prima classe!

Failed to "?eval" string with this error: ---begin-message--- Syntax error in ?eval-ed string in line 1, column 463: Lexical error: encountered "u" (117), after "\"Extra Red \\". ---end-message--- The failing expression: ==> entitiesListJson?eval [in template "20097#20123#43230" at line 59, column 29] ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign entities = entitiesListJson?eval [in template "20097#20123#43230" at line 59, column 9] ----
1<#-- Articoli in evidenza ADT -->
2<#assign portletBackground = "bg-red-white" />
3<#list portletPreferences?keys as key>
4 <#if key=="portletBackground">
5 <#assign portletBackground=portletPreferences[key]?first />
6 </#if>
7</#list>
8
9<#assign assetCategoryPropertyLocalService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") />
10<#assign categoryService = serviceLocator.findService("it.extrared.redweb.commons.service.CategoryService") />
11<#assign assetEntryLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
12<#assign dlFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') />
13<#assign otherArticles = languageUtil.get(locale, "other-articles") />
14<#assign readMore = languageUtil.get(locale, "read-all") />
15
16<#assign redSimilarJournalArticle = serviceLocator.findService("it.extrared.redweb.commons.service.SimilarJournalArticle") />
17<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
18<#assign dlAppServiceUtil = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService")/>
19
20<#assign article = "" />
21<#assign urlTitle = "" />
22
23<#assign dirtyUrlTitle = themeDisplay.getURLCurrent() />
24<#assign curPage = 1 />
25
26<#if dirtyUrlTitle?contains("redirect")>
27 <#assign namespace = "_" + paramUtil.getString(request, "p_p_id") />
28 <#assign currentUrl = "_" + paramUtil.getString(request, namespace + "_redirect") />
29 <#assign urlTitle = currentUrl?split("/")?last />
30 <#assign curPage = paramUtil.getString(request, namespace + "_cur")/>
31<#elseif dirtyUrlTitle?contains("?wkrh___tabs1=properties")>
32 <#assign last = themeDisplay.getURLCurrent()?split("/")?last />
33 <#assign urlTitle = last?substring(0, last?index_of('?wkrh___tabs1=properties')) />
34<#elseif dirtyUrlTitle?contains("?")>
35 <#assign last = themeDisplay.getURLCurrent()?split("/")?last />
36 <#assign urlTitle = last?substring(0, last?index_of('?')) />
37<#else>
38 <#assign urlTitle = themeDisplay.getURLCurrent()?split("/")?last />
39</#if>
40
41
42<#assign logfactory = staticUtil["com.liferay.portal.kernel.log.LogFactoryUtil"] />
43<#assign log = logfactory.getLog("FreemarkerLog") />
44${log.info("urlTitle: " + urlTitle)}
45
46<#attempt>
47 <#assign article = journalArticleLocalService.getArticleByUrlTitle(groupId, urlTitle) />
48<#recover>
49</#attempt>
50
51<#assign entitiesListJson = "" />
52
53<#if article?? && article?has_content>
54 <#assign entitiesListJson = redSimilarJournalArticle.getSimilarJournalArticlesWithConfig(portletPreferences, article.articleId, groupId, false, curPage?number) />
55</#if>
56
57
58<#if entitiesListJson?? && entitiesListJson?has_content>
59 <#assign entities = entitiesListJson?eval />
60</#if>
61
62<#assign noResult = languageUtil.get(locale, "no-result") />
63
64<#if entities?has_content && entities?size gt 0>
65 <section class="container-fluid bg5percent">
66 <div class="swiper container ">
67 <p class="mb-5 text-muted text-uppercase">${otherArticles}</p>
68 <div class="swiper-wrapper align-items-center pt-lg-5 mb-lg-5">
69 <#list entities?keys as k>
70 <#assign entitiesGroup=entities[k] />
71 <#if entitiesGroup?size gt 0>
72 <#list entitiesGroup as array>
73 <div class="swiper-slide">
74 <#assign urlImage = "" />
75 <#assign altImage = "" />
76 <#if array["image"]?? && array["image"]?has_content>
77 <#assign docVal=array["image"]?eval />
78 <#if docVal.url?? && docVal.url?has_content>
79 <#assign urlImage = docVal.url />
80 </#if>
81 <#assign fileEntryId = docVal.fileEntryId />
82 </#if>
83
84 <#if docVal.title?? && docVal.title?has_content>
85 <#assign altImage = docVal.title />
86 </#if>
87
88 <#assign titolo = array["articleTitle"] />
89 <#assign categories = array["categoriesString"] />
90 <#assign displayPage = array["displayPage"] />
91 <#assign assetEntryId = array["assetEntryId"] />
92 <#assign assetEntry = assetEntryLocalService.getEntry(assetEntryId) />
93 <#assign categoriesList = assetEntry.getCategories() />
94
95 <div class="col-lg-9 col-9 col-sm-9 p-0">
96 <@adaptive_media_image["img"] fileVersion=dlAppServiceUtil.getFileEntry(fileEntryId?number).getFileVersion() class="mb-4" width="100%" height="auto" alt="${altImage}"/>
97 <#--
98 <img width="100%" class="mb-4" height="auto" src="${urlImage}" alt="${altImage}" title="${titolo}">
99 -->
100 </div>
101 <div class="card-body pt-2">
102 <#if categoriesList?? && categoriesList?has_content>
103 <div class="card-subtitle text-muted">
104 <#assign categoriesString = "" />
105 <#list categoriesList as c>
106 <#assign hasProperty = categoryService.hasCategoryProperty(c.getCategoryId(), "type") />
107 <#if !hasProperty>
108 <#if !categoriesString?has_content>
109 <#assign categoriesString = c.getTitle(locale)?upper_case />
110 <#else>
111 <#assign categoriesString = categoriesString + ", " + c.getTitle(locale)?upper_case />
112 </#if>
113 </#if>
114 <#--
115 <#attempt>
116 <#assign typeProperty = assetCategoryPropertyLocalService.fetchCategoryProperty(c.categoryId?long, "type") />
117 <#recover>
118 <#if !categoriesString?has_content>
119 <#assign categoriesString = c.getTitle(locale)?upper_case />
120 <#else>
121 <#assign categoriesString = categoriesString + ", " + c.getTitle(locale)?upper_case />
122 </#if>
123 </#attempt>
124 -->
125 </#list>
126
127 ${categoriesString}
128 </div>
129 </#if>
130 <a href="${displayPage}" target="_self" title="${titolo}">
131 <h3 class="m-0">${titolo}</h3>
132 </a>
133 </div>
134 </div>
135 </#list>
136 <#else>
137 <div class="container">
138 <h2 class="m-0">${noResult}</h2>
139 </div>
140 </#if>
141 </#list>
142 </div>
143 <a data-aos="fade-right" class="pt-5 align-middle" style="display: block" href="/blog">
144 <i class="align-middle me-2 material-icons-outlined">explore</i>
145 <span class="align-middle">${readMore?capitalize}</span>
146 </a>
147 </div>
148 </section>
149</#if>