• Non ci sono risultati.

Tecnologie utilizzate

Nel documento Università Politecnica delle Marche (pagine 67-70)

Implementazione del sistema

4.1 Implementazione del sistema sul cloud

4.1.1 Tecnologie utilizzate

Nel corso della presente tesi sono state introdotte alcune delle tecnologie che sono state utilizzate per realizzare il sistema Ąnale. Oltre ad alcune gi‘a ampiamente spiegate (come, ad esempio, Amazon AWS, Open Data Cube, Python, Jupyter, etc.), di seguito verranno introdotte ed illustrate le motivazioni che ci hanno portato ad utilizzarne altre di cui non ‘e stato ancora approfondito il discorso. Esse sono:

• Anaconda;

• Virtual Box;

• PostgreSQL.

Anaconda

Anaconda (Figura 4.1) ‘e una distribuzione dei linguaggi di programmazione Python e R per il calcolo scientiĄco, che mira a sempliĄcare la gestione e lŠimplementazio-ne delle librerie. Esso, infatti, fornisce pi‘u di 1500 pacchetti e funge da gestore di

ambienti virtuali. Durante lo sviluppo della tesi ‘e stata utilizzata tale distribuzione con la quale ‘e stato creato un ambiente virtuale, installandovi i pacchetti necessari allŠesecuzione del sistema (ed, in particolare, il pacchetto Datacube, Versione 1.8.6).

In particolare, abbiamo sfruttato Anaconda con il Ąne di creare un nuovo ambien-te virtuale Python e poambien-ter permetambien-tere di deĄnire nuove conĄgurazioni, installare librerie, etc., senza interferire sulle altre installazioni.

Figura 4.1.Anaconda

Virtual Box

Virtualbox (Figura 4.2) ‘e considerato tra i pi‘u famosi software per la creazione di macchine virtuali, come lo sono, ad esempio, Microsoft Virtual Server o VMware.

Tuttavia, a differenza di quelli appena citati, pur essendo di propriet‘a della Oracle, Virtualbox dispone di una licenza open source (con una versione ridotta distribuita secondo i termini della GNU). Virtualbox ‘e un VMM (Virtual Machine Monitor) che permette lŠinstallazione di un sistema operativo completo su una macchina Ąsica avente gi‘a un proprio sistema operativo, facendo s‘ı che il software localizzato nella macchina virtuale non si renda minimamente conto di non risiedere direttamente sullŠhardware.

Figura 4.2.Virtualbox

Per quanto concerne il nostro progetto, Virtualbox ci ‘e stato utile per lŠimple-mentazione del sistema in locale e per la successiva migrazione su AWS sfruttando la propriet‘a di portabilit‘a intrinseca del software. Essendo Virtualbox un software di virtualizzazione con ŞhostedŤ hypervisor, esso non gira direttamente sullŠhardware ospitante ma su di un altro sistema operativo e, inoltre, non richiedendo alcuna collaborazione al sistema operativo guest, realizza perfettamente la tecnica di full

virtualization. ‘E importante sottolineare che il software di virtualizzazione che viene installato sulle diverse piattaforme ospitanti ‘e pressoch´e identico nelle sue caratte-ristiche e ci‘o permette agevolmente di realizzare una ŞmigrazioneŤ delle macchine virtuali tra host diversi. Come vedremo pi‘u avanti, ‘e stato sfruttato Virtualbox per creare una VM per lo sviluppo del sistema in locale; su di essa sono stati installati i pacchetti necessari al funzionamento del sistema ODC (ed, in particolare, della UI). In seguito, ‘e stato possibile effettuare la migrazione su AWS della suddetta macchina virtuale grazie alla propriet‘a di portabilit‘a di Virtualbox.

PostgreSQL

Nel mondo dei DBMS open source troviamo un progetto che ‘e riuscito a crescere Ą-no a competere attivamente nel mondo del mercato enterprise, ovvero PostgreSQL.

PostgreSQL (Figura 4.3) ‘e un Object-Relational Database Management System (ORDBMS), sviluppato a partire dal codice del progetto denominato ŞBerkeley POSTGRESŤ e rilasciato sotto licenza open source. PostgreSQL, a livello archi-tetturale, utilizza un modello client/server in cui una tipica sessione di lavoro ‘e il risultato della cooperazione di diversi processi. Tra questi, possiamo identiĄcare sempre:

• Un processo server, che gestisce la base di dati e processa tutte le richieste di accesso/modiĄca che arrivano dagli utilizzatori del database.

• Un processo client, che richiede al server lŠaccesso/modiĄca dei dati in esso contenuti. Un client pu‘o essere unŠapplicazione graĄca, una console di testo, un server web; in generale, chiunque usi il server diventa un client dello stesso.

Il processo server, che si occupa di rispondere alle richieste, pu‘o mantenere connessioni multiple e concorrenti da pi‘u client; per ogni utente, viene effettuato un fork dellŠapplicazione che si occupa soltanto del suo client, senza intervento del processo originale, il cui compito ‘e di restare in ascolto di eventuali nuove connessioni (tipicamente effettuate tramite il protocollo TCP/IP). Questa soluzione permette la continuit‘a del servizio in quanto un possibile malfunzionamento di un processo non inĆuisce n´e sulla capacit‘a di accettare nuove connessioni, n´e sulle altre transazioni in corso.

Figura 4.3.PostgreSQL

PostgreSQL, rispetto ad altri DBMS, utilizza come default un approccio diverso per la gestione degli accessi concorrenti ai dati tramite sincronizzazione dei processi;

esso, infatti, invece del tradizionale lock, utilizza un modello MVCC (MultiVersion Concurrency Control). Grazie a questo modello, ogni transazione vede uno snapshot del database che rappresenta i dati allŠinizio della connessione.

Parlando di stored procedure, PostgreSQL d‘a pieno supporto ad esse grazie al proprio linguaggio nativo denominato ŞPL/pgSQLŤ che permette di implementare sottoprogrammi direttamente nel database. CŠ‘e da notare, inoltre, che sono suppor-tati anche altri linguaggi direttamente nel core del programma, come: ŞPL/PerlŤ, ŞPL/TCLŤ e ŞPL/PythonŤ; questo DBMS, inoltre, consente anche di aggiungere altri linguaggi tramite varie estensioni.

Nel presente progetto, il motivo che ci ha spinti ad utilizzare il DBMS Post-greSQL, ed in particolare la sua estensione denominata PostGIS, risiede nel fatto che questŠultimo riesce a gestire dati geospaziali. Inoltre, la piattaforma IT scelta (ODC) si interfaccia nativamente con esso. InĄne, lŠutilizzo congiunto di PostgreSQL e Django offre svariati vantaggi:

• Django fornisce una serie di tipi di dati speciĄci per PostgreSQL.

• Django ha django.contrib.postgres per eseguire operazioni di database su PostgreSQL.

• PostgreSQL ha il pi‘u ricco set di funzionalit‘a supportate da Django.

• Vi sono, inoltre, alcune funzionalit‘a speciĄche di PostgreSQL per Django: vin-coli di database speciĄci di PostgreSQL, funzioni di aggregazione speciĄche di PostgreSQL, campi modulo e widget speciĄci di PostgreSQL, indici di modello speciĄci di PostgreSQL, funzioni di database speciĄche per PostgreSQL, ricerche speciĄche per PostgreSQL, validatori, ricerca full-text e operazioni di migrazione del database.

Nel documento Università Politecnica delle Marche (pagine 67-70)