Cloud e Mobile Computing
Domande orale
● Virtualizzazione: pro e contro
● Rapporto tra cloud computing e virtualizzazione
● Modelli di deployment
● Cos’è Docker
● Concetti principali di Docker
● Union File System (File system e strati di Docker)
● Esempi di cloud pubblico e privato
● NDN
● Caratteristiche del Cloud Computing
● Modelli di scalabilità
● Configurare le Virtual Machine (Approcci?)
● Concetti dell’architettura a microservizi
● Vantaggi dell’approccio a microservizi + Monolith First
● Approccio Monolith First
● Aspetti del 5G più interessanti per un ingegnere informatico
● GPS
● Cos’è il Monolith
● Quali sono i 3 service model
● Virtual Storage
● Cos’è una MANET + IP Routing
● StatefulSet
● Auto Scale di Kubernetes
● Context awareness: cosa si intende e quali sono i principali tipi di contesto visti
● Parlare delle diverse tipologie di allocazione delle informazioni: come può essere
classificata l’informazione sulla posizione, problema approccio centralizzato in cui si
invia la posizione geografica, numero di utenti gestibili da bluetooth e GPS
● Cos’è un deployment in Kubernetes e perché è necessario (differenza tra ReplicaSet
e Deployment)
● Cosa si intende per scalabilità orizzontale e verticale?
● Componenti principali di Kubernetes
● Cos’è l’Opportunistic Networking
● Quali sono le data structure dei dati, ossia come è possibile strutturare le
informazioni
● Quali sono le tecniche di posizionamento principali
● Cosa si intende per Infrastructure as Code: caratteristiche, esempi, obiettivi
● Service in Kubernetes
● Perché uso i Pod e non direttamente i container in Kubernetes
● Cos’è il MEC? (Vantaggio rispetto ad OpenFog)
● Service model nel cloud computing
● Service discovery: cosa si intende per il manage binding e se viene persa una risorsa
o servizio come si può gestire la riqualificazione del binding
● 5G: quali sono le 3 modalità di servizio
● AWS e suoi componenti
● Tipi di mobile computing
● Scopo del cloud controller manager in Kubernetes
● 5G: cosa si intende per MEC e come si rapporta la soluzione 5G/MEC rispetto ad un
edge computing tradizionale, dove posizionare dispositivi di edge computing,
soluzioni 5G e edge computing sono contrapposte o complementari
● Legge di Conway quando si parla di microservizi
● Elm e Operator in Kubernetes
● OpenFog e tecnologie simili viste, eventuali modi di gestire le disconnessioni dei
dispositivi, perché c’è la necessità di realizzare il consortium OpenFog e qual è il suo
scopo
● GPS: problemi, come risolvere problema del clock
● Scene analysis
● Differenza tra realizzare un'applicazione con Docker-compose e al di sopra di
Kubernetes
● Cosa sono i Pod, Services e Deployment in Kubernetes
Introduzione al Mobile Computing (1): Storia,
caratteristiche, data center, perché è utile per le
aziende
Con Cloud Computing si indica la possibilità di utilizzare applicazioni e dati che non
risiedono su una macchina locale, ma vengono usufruiti attraverso un utilizzo remoto,
tramite la rete Internet. Un dispositivo serve solo per accedere ai servizi, che sono invece
installati su server remoti.
Storia:
● Mainframe: pochi elaboratori per esigenze di molti utenti, molto costosi, grandi
dimensioni, elevate prestazioni
● PC: elaboratore personale, costi ridotti, dimensioni ridotte
● Cloud: centralizzazione delle risorse di computazione e storage, ma in outsourcing.
Nel Cloud le risorse sono centralizzate in un unico data center, usato da più utenti in
contemporanea: non si ha un unico elaboratore e le risorse cloud non sono di
proprietà dell’azienda o del singolo utente.
Data Center
I Data Center sono una infrastruttura per offrire quantità di risorse per il Cloud Computing,
anche se i principi del Cloud Computing possono essere applicati anche in contesti in scala
più piccola, come un singolo server.
Problemi dei Data Center:
● Consumo di decine di Megawatt
● Problemi di fornitura energetica, di raffreddamento, etc.
● Estremamente costosi (milioni o miliardi di dollari)
Cloud Computing e Data Center: vantaggi del modello in generale
● Economie di scala: i data center riducono drasticamente il costo per server. Inoltre,
l’aggregazione della domanda di molti utenti permette di aumentare moltissimo
l’utilizzo delle risorse
● Costi: in caso di server privato comporta costi iniziali, configurazione del sistema
operativo, rischio d’investimento. Acquistare risorse tramite un cloud provider
permette di avere un costo basso (si affittano le risorse), nessun bisogno di
configurazioni, basso rischio, maggiore flessibilità. Questo concetto è riassunto in
“from CapEx to OpEx”, ossia “from Capital Expense (costo immediato) to Operational
Expense (affittare risorse in base alla necessità)”
● Flessibilità: l’infrastruttura si può estendere facilmente al crescere del business
● Si può accedere da qualunque dispositivo
● Disponibilità: con più server si ha una maggiore fault tollerance
● Integrazione e cooperazione applicativa: i middleware di cloud computing
seguono standard SOA o ReST fornendo API
● Efficienza: la virtualizzazione consente l’overbooking delle risorse fisiche, ossia
sapendo che difficilmente gli utenti useranno il 100% delle risorse che hanno
richiesto, i cloud provider affittano più risorse di quelle che fisicamente hanno a
disposizione.
Cloud Computing e Data Center: svantaggi
● Rete determinante per performance, disponibilità e costi di connessione
● Controllo: non si ha una gestione dell’infrastruttura
● Security: si demanda ad altri la gestione della sicurezza
● Privacy: i dati personali risiedono sul cloud, ci sono diverse normative a riguardo
Dal Cloud Computing all’Utility Computing
L’Utility Computing si basa sulla possibilità di ottenere risorse di computazione secondo
necessità (as needed), con i costi che dipendono dalla quantità di risorse effettivamente
utilizzate.
Caratteristiche:
● Pay-per-use
● Elastic capacity: possibilità di aumentare e diminuire le risorse in base alla
necessità
● Illusione di avere risorse infinite
● Risorse accedute tramite un’interfaccia self-service: è possibile aggiungere risorse
attraverso l’interfaccia del provider
Cloud Computing per le aziende
Alcuni esempi di un utilizzo del cloud computing in ambito enterprise sono i seguenti:
● Cloud ibrido: possibilità di avere un cloud pubblico (come Amazon) affiancato al
proprio data-center all’interno dell’azienda. Il cloud pubblico fornisce flessibilità,
mentre il cloud privato è usato per mantenere i dati dei clienti.
● Load balancing: si usa un cloud privato per soddisfare le richieste dei clienti e in
caso di picco di richieste si usano le risorse del cloud provider
● Piattaforme di test e development: il cloud può essere usato come una piattaforma
di test, tramite virtual machine (VM) per testare nuovi servizi e applicazioni
● Disaster recovery: si fa backup su infrastrutture di terze parti
● Cloud file storage: cloud usato per depositare grandi quantità di dati, come se fosse
un dispositivo esterno
Introduzione al Cloud Computing (2): Attori,
caratteristiche, elementi, modelli, esempi concreti,
evoluzioni
Definizione di Cloud Computing del NIST: è un modello per abilitare un accesso ubiquo
(accessibile a tutti), conveniente, on-demand ad un pool condiviso (permette di accedere a
risorse tramite la rete, di risorse configurabili di computing(con repliche per ogni risorsa) che
possono essere rapidamente provvisti e rilasciati con una gestione minimale tramite
interazione con il provider.
Cloud Computing: attori principali
● Cloud provider: è l’azienda che offre servizi e applicazioni complete, generalmente
con un modello pay-per-use
● Cliente amministratore: seleziona e configura i servizi offerti dal provider, fornendo
tipicamente un valore aggiunto. È l’attore intermedio tra il provider e l’utente finale: è
un cliente del cloud provider ed è un fornitore dal punto di vista dell’utente finale.
Sfrutta le risorse offerte dal provider per andare a realizzare un servizio a valore
aggiunto e fornisce il servizio all’utente finale. Sono solitamente delle aziende che
sfruttano una virtual machine per realizzare un’applicazione e rivende il servizio agli
utenti finali (es. Netflix).
● Utente finale: utilizza i servizi opportunamente configurati e/o sviluppati dal cliente
amministratore.
5 caratteristiche del Cloud Computing
1. Accesso alle risorse tramite broad network: il cloud promuove un accesso alle
risorse remote tramite canali di comunicazione a banda larga e tramite dispositivi
eterogenei. Le risorse sono disponibili attraverso la rete, il deployment dei servizi
avviene lato cloud e i dispositivi da cui si accede ai servizi sono detti “thin”, ossia visti
come terminali per accedere ai servizi remoti ad esempio tramite web browser.
2. Rapida elasticità: capacità di espandere e ridurre molto velocemente le risorse
utilizzate; si può far crescere le risorse se il servizio ha successo oppure ridurre l’uso.
3. Servizi misurabili: le risorse che si utilizzano devono essere monitorate, misurate e
quantificate. Il cloud provider deve capire quanto si stanno utilizzando le risorse: è
facile calcolare lo spazio su disco, è più difficile calcolare i costi da sostenere per
ricavare informazioni ad esempio sulla CPU occupata, perché è una grana troppo
fine. È più semplice realizzare una virtual machine con una certa capacità
computazionale, con il consumo di CPU che viene calcolato in base a quanto tempo
le virtual machine rimangono attive: questa è comunque una misurazione non
perfetta, che stima il consumo di CPU. Quindi si può decidere di non far pagare
l’utente in base alla CPU utilizzata, ma in base a quanto la VM è attiva.
4. Gestione delle risorse in modalità on-demand e self-service: l’utente
amministratore deve essere in grado di richiedere più risorse o rilasciarle in modo
semplice, ad es. tramite interfaccia web per la gestione delle virtual machine.
5. Pooling di risorse: le risorse di computazione sono accedute in concorrenza per
servire gli utenti tramite un modello multi-tenant. Gli utenti sono divisi in
organizzazioni e ciascuna organizzazione (tenant) accede alle proprie VM come se
quelle fossero le uniche risorse disponibili in quel data center, senza avere la
sensazione che tanti utenti stanno utilizzando le stesse risorse nello stesso tempo.
C’è un grado di indipendenza di locazione: fino ad un certo livello non si è in grado di
percepire dove si trovano le risorse o la virtual machine, ossia due VM con latenze
simili anche se risiedono in stati diversi. Si ha indipendenza fino ad un certo punto:
se si chiede che i dati rimangano dentro l’area europea allora devono risiedere in
data center in Europa.
1.
3 Cloud Service Models
Si hanno diversi modelli di servizio, che cambiano in base a quale livello di astrazione ci si
trova.
1. Infrastructure-as-a-Service (IaaS): il servizio offerto è un sistema di elaborazione
completo, disponibile via internet e realizzato tramite una macchina virtuale (es.
Amazon EC2). È l’utente che aggiorna il sistema operativo, gli ambienti di sviluppo, i
database, etc. La parte dell’infrastruttura rimane gestita dal provider.
2. Platform-as-a-Service (PaaS): fornisce ad un ambiente di sviluppo o di deployment
(es. Google App Engine, Salesforce.com, Elastic BeanStalk). Ad esempio, si può
ricevere un ambiente PHP e un database preinstallato a cui ci si collega per
effettuare il deployment dell’applicazione.
3. Software-as-a-Service(SaaS): il servizio offerto è un’applicazione finale accessibile
tramite la rete (Es. Google Docs). L’utente accede al servizio, senza essere a
conoscenza delle strategie di backup, configurazione e load balancing
dell’applicazione.
Esempio di PaaS: Serverless Computing
È una funzionalità fornita agli sviluppatori per eseguire applicazioni senza gestire server: il
provisioning, la scalabilità e la manutenzione sono garantite dal cloud provider.
Le funzioni serverless non costano nulla quando non vengono utilizzate: gli sviluppatori
effettuano il deployment dell’applicazione e si demanda al service provider qualsiasi aspetto
legato alla disponibilità e scalabilità dell’applicazione, ossia è il cloud provider che
automaticamente aggiunge server per gestire la scalabilità.
Il problema di questo aspetto è che ci si potrebbe non accorgersi che l’applicazione è usata
più del previsto, pagando quindi più di quanto previsto.
4 Modelli di Cloud Deployment
1. Cloud pubblico: la disponibilità di risorse di computazione e di storage sono offerte
da un provider che utilizza i propri data center per fornire questi servizi agli utenti. Le
risorse sono di proprietà di un’organizzazione che le vende ad altre organizzazione.
Problemi/limiti: connessione di rete, controllo infrastruttura, privacy dei dati.
2. Cloud privato: il cloud computing viene applicato ad un ambiente privato. Permette
di mettere a fattor comune tutte le risorse di computazione e memorizzazione per
creare un cloud privato all’interno dell’azienda che permetta un deployment dei
servizi in modo semplice (Es. OpenStack). Problemi/limiti: costi, manutenzione,
scalabilità tutte a carico dell’azienda.
3. Community Cloud: è un cloud con un mix delle caratteristiche del cloud privato e
del cloud pubblico. È poco usato.
4. Cloud ibrido: è dato dall’unione di più cloud (privato, pubblico o community) che
rimangono comunque entità uniche. Un’azienda può utilizzare un cloud privato al suo
interno in modo congiunto ad un public cloud: privato per dati sensibili e pubblico per
dati di grandi dimensioni, privato per fornire servizi ai clienti e pubblico per
demandare picchi di richieste, privato per deployment applicazioni finali e pubblico
per test.
Il cloud pubblico e privato è attrattivo per business piccoli.
Cloud Computing: principali provider (livello IaaS)
● AWS
● Microsoft Azure
● Google Cloud
● Salesforce
AWS (Amazon Web Services)
AWS è la soluzione IaaS di Amazon.
Servizi offerti:
● EC2 (Elastic Compute Cloud): permette di noleggiare, in modello pay-per-use,
server privati virtuali, con la possibilità di attivarli e disattivarli a piacimento
● S3 (Simple Storage Service): fornisce uno storage di dati, accessibile tramite Web
● SimpleDB: permette agli sviluppatori di effettuare query su dati strutturati e si integra
con EC2 e S3 per fornire le funzioni di base di un database.
● CloudFront: è un Content Delivery Network (CDN) per la distribuzione di oggetti
salvati in S3 in server geograficamente vicini al richiedente
AWS Lambda (Serverless Computing)
Permette di non gestire alcun server: si fornisce ad Amazon il codice che deve essere
eseguito ogni volta che è necessario (ad es. ad ogni richiesta di un utente bisogna fare
un’autenticazione), gestendo la scalabilità dell’esecuzione di questo codice.
Con AWS Lambda si hanno tutti i vantaggi del Serverless Computing: si esegue il codice
senza dover effettuare il provisioning e senza gestire i server.
Microsoft Azure
E’ la soluzione cloud computing di Microsoft.
Per il computing fornisce:
● Virtual machines (IaaS con Windows o Linux)
● App services (PaaS per sviluppare siti web)
Per lo storage fornisce:
● SQL (database relazionali in modalità Saas)
● Table (testo strutturato mantenuto in collezioni partizionate)
● Blob (testo non strutturato e dati binary)
OpenStack
E’ un collezione di servizi (framework) che insieme forniscono la capacità di creare delle
soluzioni di IaaS.
Permette di gestire grandi insiemi di risorse fisiche e realizzare pool di virtual machine.
Vedi blocco di slide su OpenStack per approfondimenti.
Evoluzioni del modello Cloud Computing
Il cloud computing sta evolvendo verso Edge Computing e Fog Computing: si basano su
spostare la capacità computazionale più vicino agli utilizzatori, riducendo la latenza e l’uso di
banda, migliorando le performance e la velocità.
Edge Computing
Si trasferisce l’analisi dei dati il più vicino possibile alla sorgente, senza la necessità di
doverli trasferire in cloud per il processamento.
Si implementa installando elevate capacità di computazione e di storage vicino all’utente
finale.
Se la distanza tra gli utenti finali e il Cloud Data-Center è elevata si può avere una latenza di
decine o centinaia di millisecondi.
Ecosistema Edge-Cloud (layers)
1. Utenti e sensori (compresi i client finali)
2. Dispositivi gateway/edge
3. Infrastruttura perimetrale: offre un punto medio tra rete locale e Cloud
a. rispetto a Edge: capacità di elaborazione e archiviazione dei dati molto
maggiore
b. rispetto a Cloud: latenza estremamente bassa
4. Cloud centralizzato: luogo principale per l’archiviazione, analisi e elaborazione dei
dati su larga scala.
Vantaggi dell’Edge Computing
● Tempo di risposta e analisi real-time più veloci: riduzione della latenza per
l’accesso ai servizi
● Operazioni affidabili con connessione intermittente
● Sicurezza
● Vantaggio economico: si effettua pre-processing sull’edge, quindi si trasferisce una
quantità di dati molt
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Cloud Computing
-
Appunti lezioni Cloud Computing
-
Programmazione Distribuita - Cloud Computing
-
Appunti Architetture dei Calcolatori e Cloud Computing