+ All Categories
Home > Documents > Informatica Mod. Basi di Dati Cloud Computing e Web · 2020-05-15 · Cloud Computing e Web...

Informatica Mod. Basi di Dati Cloud Computing e Web · 2020-05-15 · Cloud Computing e Web...

Date post: 23-May-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
79
Informatica – Mod. Basi di Dati Cloud Computing e Web Giuseppe Psaila Università di Bergamo [email protected]
Transcript

Informatica – Mod. Basi di Dati

Cloud Computing e Web

Giuseppe Psaila

Università di Bergamo

[email protected]

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

I Layer del Cloud Computing

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

Visione di Insieme

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

Layer e Utenti

Esempi Famosi

•SaaS• La suite Google

• Microsoft Office 365

• Salesforce.com

Esempi Famosi

•PaaS• Microsoft Azure

• Google Cloud Platform

• Amazon Web Service

• IBM

• Heroku

• Force.com (la piattaforma di Salesforce.com)

Esempi Famosi

• IaaS• HP

• IBM

• IBM AS400 in Cloud

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

Il World Wide Web

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

Un Esempio: PHP

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>

Codice 6/6

<?php

} else {

echo "0 results";

}

mysqli_close($conn);

?>

</body>

</html>

Risultato: Tutti i Treni

• URL:http://.../ListaTreni.php

Risultato: Solo i Diretti

• URL:http://.../ListaTreni.php?TIPO=DIRETTO

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

Spiegazione

Frammento 6/6

• Infine, si chiude la connessione e si chiudono i primi marcatori HTML

ATTENZIONE

• Non imparate a memoria il codice

• Il suo scopo è farvi capire come si fa, non insegnarvi a farlo

• Per darvi un esempio di server-side script

• Non vi sarà chiesto all’esame


Recommended