Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Informatica – Mod. Basi di Dati
Cloud Computing e Web
Giuseppe Psaila
Università di Bergamo
Stack dei protocolli di rete:Modello ISO/OSI
• Livello Applicazione
• Livello Presentazione
• Livello Sessione
• Livello Trasporto
• Livello Rete
• Livello Collegamento Dati
• Livello Fisico
I sistemi Web
• Si basano su alcuni protocolli aperti
• che consentono di realizzare un’infrastruttura di comunicazione aperta.
• Chiunque può entrare in rete, pubblicare un servizio Web, accedere ad un servizio web
Modello ISO/OSI e Web
• Livello Applicazione HTML
• Livello Presentazione UNICODE/UTF-8
• Livello Sessione HTTP/HTTPS
• Livello Trasporto TCP
• Livello Rete IP
• Livello Collegamento Dati CSMA/CD, 802.11, LTE, …
• Livello Fisico
OK, ma le risorse computazionali?
Per realizzare un Sistema web serve:
• Storage (un file system)
• Un DBMS e i database
• Un server sul quale gira un Web Server (o HTTP Server, software che gestisce le chiamate HTTP)
Dove li mettiamo?
• Su una o più macchine (server) collegate ad Internet
Problemi dei Server in casa?
• Rischio rottura
• Rischio furto (ambienti protetti/blindati)
• Surriscaldamento (quindi, ambienti condizionati)
• Costi energetici elevati
• Risorse umane dedicate
• Obsolescenza delle macchine
• Collegamento ad Internet costoso
• Scarsa scalabilità
In principio, l’hosting
• Un Provider fornisce risorse computazionali sulle sue machine
• fa Hosting del sito
• fornisce un collegamento ad Internet veloce
• si accolla i costi di obsolescenza e aggiornamento del software di base
Macchine Virtuali
• Macchina Virtualevi sono programmi che consentono di creare una macchina virtuale, cioè un sistema di elaborazione completo ma virtuale
• Sulla stessa macchina fisica possono essere emulate molteplici macchine virtuali
• Vantaggio: la macchina reale viene sfruttata di più, riducendo i tempi di inutilizzo
Ripartizione sulle Macchine Virtuali
• Soluzione tradizionale:la ripartizione delle risorse è fissa (per es., numero di processori, tempo di CPU, storage)
Hosting con Macchine Virtuali
Macchina Reale
Macchina Virtuale
Macchina Virtuale
Macchina Virtuale
Macchina Virtuale
Macchina Virtuale
Macchina Reale
Macchina Virtuale
Macchina Virtuale
Macchina Virtuale
Macchina Virtuale
Macchina Virtuale
Ripartizione sulle Macchine Virtuali
• Soluzione del mondo cloud: viene riconfigurata dinamicamente, in base alle necessità
• Modello Pay per Use: paghi per quanto usi (o impegni)
Quindi, perché Cloud?
• Perché si passa da una soluzione di hosting, dove le macchine virtuali sono ospitate sempre sulla stessa macchina fisica
• Ad una soluzione dove l’infrastruttura di elaborazione ridistribuisce le macchine virtuali sulla «Nuvola di Server»
• «Nuvola di Server» = «Cloud Computing»
Cloud Computing
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Risorsa
Un altro stack: software
Un’applicazione si appoggia su molti strati
di software sottostanti
• Storage
•Networking
•Sistema operative
•Middleware
•Servizi tra S.O. e Applicazione (es., DBMS)
Un altro stack: software
Quindi, lo stack software potrebbe essere suddiviso in layer:
• Infrastruttura
• Piattaforma
• Software Applicativo
Infrastruttura
• Si intende il sistema di elaborazione vero e proprio, virtualizzato
• Il sistema cloud fornisce quindi l’infrastruttura di elaborazione, che il cliente poi gestisce
• IaaS: Infrastructure as a Service
Piattaforma
• Si intende la piattaforma sulal quale si sviluppano e si eseguono i programmi e i sistemi informativi
• Comprende gli strumenti di sviluppo,di testing e di deploye tutti gli strumenti di integrazione
• PaaS: Platform as a Service
Software
• Si intende il softtware applicativousato dagli utenti, che si avvale degli strati sottostanti
• SaaS: Software as a Service
Ma perché «as a service»
IaaS: Infrastructure as a Service
• Il cliente non possiede più l’infrastruttura
•L’infrastruttura è posseduta dal Provider
•Per il cliente, l’infrastruttura è un servizio fornito dal Provider
Ma perché «as a service»
PaaS: Platform as a Service
• Il cliente non possiede né l’infrastruttura né la piattaforma di sviluppo e esecuzione
•L’infrastruttura e la piattaforma sono possedute dal Provider
•Per il cliente, la piattaforma (e al di sotto, l’infrastruttura) è un servizio fornito dal Provider
Ma perché «as a service»
SaaS: Software as a Service
• Il cliente non possiede né l’infrastruttura, né la piattaforma, né il sfotware
• Il software è posseduto dal Provider
•Per il cliente, il software (e al di sotto, l’infrastruttura e la piattaforma) è un servizio fornito dal Provider
• Il cliente non deve installare il sfotware
Approccio «as a service»
Che cosa serve all’utente finale,
•Possedere il sofotware?
• Il servizio svolto dal software?
All’utente finale interessa il servizio
Approccio «as a service»
Vantaggi
•Non deve comprare i server (la ferraglia)
•Non deve comprare il software di base/applicativo
•Non deve occuparsi di installare gli aggiornamenti
Approccio «as a service»
Chi è l’utente finale
•Se parliamo di un sistema informativo aziendale, potrebbe essere
•Un dipendente dell’azienda
•Un cliente dell’azienda
•Un potenziale cliente che visita il sito e cerca informazioni
Esempi Famosi
•PaaS• Microsoft Azure
• Google Cloud Platform
• Amazon Web Service
• IBM
• Heroku
• Force.com (la piattaforma di Salesforce.com)
Storage as a Service
• Il servizio è lo storage• Dropbox
• Google Drive
• Apple iCloud
• Microsoft OneDrive
Salesforce.com
•Si tratta di un prodotto totalmente a se
•È il primo sistema informativo aziendale erogato da sempre in modalità cloud (dal 1998)
•Di base, fornisce un CRM (CustomerRelationship Management) molto completo e altamente personalizzabile ed estendibile
Force.com
•È la piattaforma di Salesforce.com• Database
• Linguaggio di programmazione Apex (derivato da Java), tradotto in Byte-code
• Ambiente integrato per creare interfacce Web
Architettura Multi-tenant
•Salesforce.com ripartisce le risorse in modo dinamico
•Una server farm gestisce i sistemi informativi di molti clienti (detti ORG)
• I programmi possono essere eseguite su un qualsiasi server
•Si perde completamente il concetto di macchina
L’Infrastruttura?
•L’infrastruttura ovviamente c’è, ma non si vede
•È completamente mascherata al di sotto della piattaforma
Siti Web Statici
• Insieme di pagine HTML, il cui contenuto è staticamente fissato dal Web Master
• Utili per realizzare i “Siti Vetrina”
• Inadatti per realizzare Servizi per l’utente
Siti Web Dinamici
• Insieme di pagine HTML, il cui contenuto è generato dinamicamente da programmi che operano sul Web Server
• La pagina viene interamente rigenerata ad ogni richiesta di elaborazione
• Hanno consentito la realizzazione delle prime “Applicazioni Web”
Architetture
Le architetture per realizzare siti web sono evolute di pari passo: attraverso le tre proposte seguenti
• 1-tier Architecture
• 2-tier Architecture
• 3-tier Architecture
1-tier Architecture
• La più semplice
• Adatta per i siti statici
Pagina
Richiesta
Web
Server
Browser
(Netscape o
Explorer)
Pagina
Richiesta
Che cosa è un tier?
•Traduzione di tier: «annodatore»
• In pratica, la connessione tra due strati software
•Nella 1-tier architecture, il tier è il protocollo HTTP
1-tier Architecture
• Il browser invia una richiesta HTTP
•Nella quale richiede una risosta (pagina, immagine, altro,…)
• Il server riceve la richiesta
•Se la risorsa è presente sul disco,
•La invia al client, impacchettandola nella Risposta HTTP
2-tier Architecture
• Adatta per i siti dinamici
• Dove i contenuti devonoessere generatida programmi chelavorano sul server
Applicativo
CGI
Web
Server
Browser
(Netscape o
Explorer)
Pagina
RispostaRichiesta
Richiesta
2-tier Architecture
• Il primo tier è il protocollo HTTP
• Il secondo tier è il protocollo CGI (Common GatewayInterface)tra il web server è l’applicativo CGI
Applicativo
CGI
Web
Server
Browser
(Netscape o
Explorer)
Pagina
RispostaRichiesta
Richiesta
2-tier Architecture
• Il browser invia una richiesta HTTP al server
• Il server riceve la richiesta HTTP, vede che è per un programma
•Attiva il programma (Applicativo CGI) e gli passa il contenuto della richiesta
2-tier Architecture
•L’applicativo CGI genera la pagina HTML (o altro contenuto)
• Il server impacchetta l’output dell’applicativo CGI nella Risposta HTTP
•La Risposta HTTP viene inviata al browser sul client
La Richiesta HTTP
• I dati delle form in HTML vengono inviati con due metodi distinti, pur usando sempre la richiesta HTTP
•Metodo GET
•Metodo POST
Esempio di Form (methodo GET)
<form method="GET" action="…">
<input type="text" name="email"/>
<input type="text" name="nome"/>
<input type="submit" value="Invia"/>
</form>
Richiesta
• Con il metodo GET, il corpo della richiesta è vuoto
• Nella head, il campo URL contiene l’indirizzo della risorsa con l’aggiunta dei campi della form
• Dopo il ?, triplette campo=valore separate da &
http://[email protected]&nome=Pippo
Il Metodo GET
• Per fare un parallelo «cartaceo», è come se
• Prepariamo una busta;
• Sul fronte mettiamo tutti i dati, il destinatario e altre informazioni accessorie
• Ma la busta la lasciamo vuota
• Infatti, il destinatario prende le informazioni dalla busta stessa
Metodo POST
•Se non si vuole che i dati siano visibili nella barra degli indirizzi
•Oppure perché il valore può essere troppo grosso (per esempio aree di testo oppure file)
•Si ricorre al metodo POST
Richiesta HTTP
• Il corpo della richiesta non è più vuoto, ma contiene i campi della [email protected]&nome=Pippo
• L’URL del destinatario non viene modificato
Protocollo CGI
• Il protocollo CGI è stato il primo protocollo per far comunicare il web server con le applicazioni lato server
•All’epoca (1995) erano scritte in C
• Il programma C comunicava attraverso standard input e standard output
Protocollo CGI
• Metodo GET: i valori dei campi erano ricevuti come variabili d’ambiente
• Metodo POST: il contenuto del corpo della richiesta era ricevuto come standard input
• L’output del programma era inviato sullo standard output
Ora che si fa?
• Negli anni sono stati sviluppati i «server-side script»
• Idea: annegare il codice procedurale in uno scheletro HTML
• Esempi:
• PHP
• JSP (basate su Java), tradotte nelle Servlet Java
• VBA o C# (Microsoft)
Ora che si fa?
• Tuttavia, per capire il ruolo,
• Continuiamo a parlare di Applicativo CGI,
• Anche se il protocollo CGI, di fatto, non lo usiamo più (ma i web server lo supportano ancora)
3-tier Architecture
• Interazione con il DBMS
• Da parte dello Applicativo CGI
DBMSApplicativo
CGI
Web
Server
Browser
(Netscape o
Explorer)
Pagina
Query
Risposta
RispostaRichiesta
Richiesta
3-tier Architecture
• Il terzo tier è la connessione con il DB
•La connessione con il DB avviene in vari modo: il protocollo più generico si chiamaODBCOpen DataBase Connectivity
3-tier Architecture
• Il browser invia una richiesta HTTP al server
• Il server riceve la richiesta HTTP, vede che è per un programma
•Attiva il programma (Applicativo CGI) e gli passa il contenuto della richiesta
3-tier Architecture
•L’applicativo CGI apre la connessione con il DB
• Invia le query e riceve le tabelle
•Genera l’output e lo invia al web server
•Che a sua volta lo impacchetta nella Risposta HTTP e lo invia al browser
PHP
•PHP (acronimo per Personal Home Page) è ancora molto usato per realizzare server-side script
• Il codice procedurale è all’interno del codice HTML
Esempio
•Sul database, esiste la tabella TRENO
•TRENO(NUMERO, TIPO)
•Vogliamo pubblicare la lista completa dei treni
•Ma se aggiungiamo all’URL il parametro TIPO, specifichiamo il tipo desiderato
Codice 1/6
<html>
<body>
<?php
$servername = "localhost";
$username = "";
$password = "";
$dbname = "my_psaila";
Codice 2/6
// Si crea la connessione
$conn = mysqli_connect($servername,
$username, $password, $dbname);
// verifica che sia riuscita
if (!$conn) {
die("Connection failed: " .
mysqli_connect_error());
}
Codice 3/6
$sql = "SELECT NUMERO, TIPO FROM TRENO";
$tipo = $_GET["TIPO"];
if ( $tipo != "")
$sql = $sql . " WHERE TIPO='" . $tipo .
"'";
Codice 4/6
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
?>
<table cols="2" border="1">
<tr><td>Numero</td><td>Tipo</td></tr>
Codice 5/6
<?php
while($row = mysqli_fetch_assoc($result))
{ ?>
<tr><td><?php echo $row["NUMERO"]; ?>
</td><td><?php echo $row["TIPO"]; ?>
</td></tr>
<?php
} ?>
</table>
Risultato: Solo i Diretti
• In grassetto, il codice PHP
• Normale, HTML
• Il codice deve:
• Connettersi alla base dati
• Preparare la query SQL
• Inviare la query
• Scandire la tabella (nel ciclo while)
Spiegazione
Frammento 1/6
• Dopo i primi marcatori di HTML (<html> e <body>)
• Si apre un pezzo di codice PHP, con <?php
• Alcune variabili (inPHP sono precedute da $) vengono predisposte
Spiegazione
Frammento 2/6
• Si cerca di aprire la connessione
• Se non riesce, si termina il programma
Spiegazione
Frammento 3/6
• Alla variabile $sql, si assegna la stringa con la queryda inviare
• Alla variabile $sql, si assegna il valore del parametro TIPO, preso dall’URL
• Se non è la stringa vuota, si estende la query con la clausola WHERE
Spiegazione
Frammento 4/6
• Si prova a inviare la query
• Se la query riesce e contiene delle righe, il codice PHP viene interrotto (da ?>
• Perché occorre predisporre dei marcatori HTML
• Per preparare una tabella
Spiegazione
Frammento 5/6
• Si apre un nuovo frammento di codice PHP
• Il ciclo while scandisce la tabella prodotta dalla query, una per volta
• Nel ciclo si inframmezza HTML e codice PHP
•<?php echo $row["NUMERO"]; ?>
prende il valore dell’attributo e la manda in output