Introduzione

Sono studente magistrale del CdL in Informatica (LM-18), curriculum Cloud Computing, presso l'Università degli Studi di Salerno.
La mia attività di tesi verterà sull'aggiunta di alcune funzionalità al linguaggio FLY, un DSL sviluppato all'interno di questo laboratorio, partendo dal lavoro effettuato nell'ambito del corso di Architetture Distribuite per il Cloud

Sono stato uno studente del CdL in Informatica (L-31) presso la medesima università.
Dal 6 settembre 2017 al 26 febbraio 2018 ho svolto la mia attività di tirocinio e tesi presso l'ISISLab in ambito cloud computing; in particolare, ho fatto uso della libreria D-MASON per l'esecuzione di simulazioni su sistemi distribuiti. L'obiettivo è stato la scrittura di un modulo che permettesse al simulatore d'interfacciarsi con i servizi di calcolo su cloud offerti da Amazon.

Tesi magistrale

Tavola dei contenuti

Introduzione

Il mio lavoro di tesi magistrale consiste nell'integrare all'interno del linguaggio FLY la gestione dell'ADT grafo; quest'attività si compone di tre obiettivi:

Le prime due fasi sono state svolte nell'ambito del progetto del corso Architetture Distribuite per il Cloud, con l'assistenza del Dott. Matteo D'Auria per la fase di integrazione all'interno del linguaggio.

Seminari

  1. "FLY Graph API", 11 Giugno 2020
    • Presentazione (coming soon!)

Soundtrack

Alcuni brani che mi hanno accompagnato nel mio lavoro di tesi:

Tesi triennale

Tavola dei contenuti

Progressi

1a settimana (06/09 - 13/09)

Nella prima settimana di tirocinio presso l'ISISlab, sotto la supervisione del mio tutor Dott. Carmine Spagnuolo, ho riadattato il front-end del modulo System Management di D-MASON per essere utilizzabile con qualsiasi navigatore web. Il front-end aveva smesso di funzionare correttamente a causa della libreria Polymer la cui precedente iterazione, la versione 1, non rendeva più interagibile il front-end nonostante esso fosse correttamente visibile. È stato necessario aggiornare tutte le dipendenze del front-end, rimuovendo i pacchetti non più supportati e deprecati ed introducendone di nuovi ed equivalenti; in particolare, la libreria webcomponentsjs, fondamentale per il funzionamento di Polymer in quanto implementa le specifiche dello standard Web Components del W3C, è stata aggiornata alla versione 0.7.24 compatibile con la maggior parte dei navigatori web. Quanto sopra costituisce lavoro preliminare al lavoro di tesi effettivo. La prossima settimana studierò la Amazon SDK per Java con l'obiettivo di creare un modulo che avvii istanze di macchine virtuali su AWS senza l'uso della console grafica.

2a settimana (14/09 - 21/09)

In questa settimana ho iniziato lo studio di Amazon SDK for Java, la libreria di sviluppo che permette la creazione e gestione di istanze di macchine virtuali su AWS. Tuttavia, lo studio non è proceduto come avrei voluto: la strada per l'alloro è perigliosa e fino al 28 settembre non avrò modo di studiare proficuamente la libreria Amazon SDK. L'obiettivo della prossima settimana è definire una classe di servizio che permetta di gestire istanze remote e di installarvi DMASON e tutti i programmi necessari al suo funzionamento.

3a settimana (29/09 - 05/10)

Ho iniziato a delineare il nucleo del mio lavoro scrivendo la classe AmazonService per creare istanze EC2 su AWS: grazie al programma AWS Educate posso creare istanze on-demand di tipo t2.micro gratuitamente. AmazonService è una classe statica che prevede l'avvio, l'arresto, il riavvio e la terminazione di nuove istanze EC2 oltre che la loro creazione; prevede inizialmente anche un metodo main(String[]) per il collaudo delle funzionalità. Per la realizzazione di questa classe mi sono ispirato al progetto aws-cluster-toolkit del Dott. Spagnuolo.

4a settimana (06/10 - 12/10)

La scrittura dei comportamenti (già precedentemente delineati) per la classe di servizioAmazonServicecontinua, prevedendo anche diversi metodi ausiliari al fine di aiutare la leggibilità e riutilizzare codice.

5a settimana (13/10 - 19/10)

Con l'ausilio di JSch, ho scritto il metodo che permette l'installazione di DMASON inviando comandi alle istanze EC2 per mezzo di una connessione SSH, incapsulando tuttavia l'esecuzione dei comandi vera e propria in un apposito metodo e mantenendo le fasi ad un discreto livello di astrazione JSch per l'invio di comandi fa uso di oggetti sessione (istanze di Session) che, insieme ad altri attributi delle istanze remote, sono salvati in un oggetto locale modellato dalla classe LocalInstanceState.

6a settimana (20/10 - 26/10)
Coming soon?

Software e librerie

Back-end
Front-end

Seminari

  1. "DMASON on the cloud: Amazon AWS", 1 dicembre 2017
  2. "DMASON on the cloud: Spot the difference", 19 febbraio 2018

Bibliografia

Lavoro di tesi

Sommario

La simulazione è una branca dell'informatica che permette lo studio di sistemi reali formulando dei modelli che rispecchino meglio la realtà rispetto a modelli probabilistici. I modelli di simulazione ad agenti sono classi di modelli di calcolo per la simulazione di azioni e interazioni tra agenti autonomi che rispondono a regole prefissate. Tra gli strumenti disponibili per l'esecuzione di modelli di simulazione ad agenti vi è MASON, toolkit single-process per le simulazioni multi-agente scritto in Java, sviluppato dalla George Mason University, il quale gode di portabilità e generalità dei modelli con esso sviluppati. I modelli di simulazione sviluppati con MASON possono essere eseguiti su una sola macchina: ciò rende i tempi di esecuzione molto lunghi in caso di simulazioni particolarmente complesse; questo problema può essere risolto prevedendo la distribuzione della simulazione su più macchine. I principii di progettazione di MASON l'hanno reso leggero e soprattutto espandibile: in questo modo, è possibile estenderlo per ottenere simulazioni distribuite; una delle sue estensioni è DMASON, che aggiunge uno strato di distribuzione della simulazione tra più processori logici (worker), i quali sono coordinati da una macchina principale (master) secondo il paradigma master-worker. Il controllo dello stato del master avviene tramite una console di gestione chiamata System Management, dalla quale è possibile gestire e monitorare i worker inattivi e le simulazioni in esecuzione su un sistema distribuito eterogeneo. Avere un framework per la distribuzione di modelli di simulazione non è sufficiente: serve allestire manualmente un cluster di computer per poterle eseguire; oltretutto, una soluzione on premise manca di scalabilità, rischiando di avere risorse di calcolo sature o inutilizzate. In questo contesto si inserisce il cloud computing. Esso è un modello di erogazione dei servizi di calcolo distribuito più avanzato: i provider di tali servizi mettono a disposizione dell'utente finale le proprie risorse con diverse modalità architetturali: Infrastructure as a Service, Platform as a Service, Software as a Service. L'azienda leader nel settore cloud è Amazon, che con Amazon AWS offre un ecosistema di numerosi servizi di cloud computing; in particolare, Amazon EC2 permette la creazione di istanze di calcolo di caratteristiche variabili a seconda della necessità dell'utente e possono essere scalate, se necessario. In questa tesi è presentata la realizzazione di un modulo che consenta l'esecuzione automatica di DMASON su cloud tramite il servizio Amazon EC2; tale architettura permette la gestione dinamica di istanze di calcolo sia on demand (dove il prezzo è determinato in base al tempo di utilizzo delle risorse di calcolo) sia spot (dove il prezzo è determinato in base all'offerta per risorse di calcolo inutilizzate di EC2 messe all'asta). Ciò è stato possibile aggiungendo una classe di servizio principale per l'interazione con Amazon EC2 grazie all'AWS SDK per Java e alcune classi per l'esecuzione di comandi remoti su connessione sicura e la gestione delle installazioni di DMASON sulle istanze create. Il risultato è la semplificazione dell'esperienza utente: piuttosto che dover allestire a mano un cluster di computer, con pochi click si può far partire una simulazione su istanze remote di Amazon EC2 su cui sia automaticamente installato e avviato DMASON.

Indice

I DMASON su cloud: Amazon EC2
1 Introduzione
1.1 Simulazione
1.1.1 Ambienti di simulazione multi-agente
1.1.2 MASON
1.1.3 DMASON
1.2 Cloud computing
1.2.1 Sviluppo e commercializzazione
1.2.2 Caratteristiche e modalità di servizio
1.2.3 Problemi e critiche
1.2.4 Amazon Web Services ed Elastic Computing Cloud
1.3 Obiettivi
2 DMASON in azione
2.1 Introduzione
2.2 Interfaccia grafica
2.3 Funzionamento
2.3.1 Costruzione
2.3.2 Esecuzione
2.4 Limitazioni
3 Sviluppo frontend
3.1 Tecnologie utilizzate
3.1.1 Polymer
3.1.2 Bower
3.1.3 jQuery
3.1.4 Masonry
3.1.5 jsRender
3.1.6 JavaServer Pages e JSP Standard Tag Library
3.2 Attività preliminare
3.3 Modifiche introdotte
3.3.1 Struttura attuale del progetto
3.3.2 Riuso
3.3.3 Template per i worker
3.3.4 Informazioni worker
3.3.5 Intervallo aggiornamento worker
3.3.6 Gestione impostazioni DMASON
4 Sviluppo backend
4.1 Tecnologie utilizzate
4.1.1 Apache Maven
4.1.2 Servlet
4.1.3 Apache Commons Configuration
4.1.4 JSch
4.2 Sviluppo
4.2.1 Struttura del progetto
4.2.2 Gestione impostazioni
4.2.3 Connessioni remote
4.2.4 Caricamento e scaricamento di file remoti
4.2.5 Gestione remota di DMASON
4.2.6 VersionChooser
5 Amazon EC2 in DMASON
5.1 Schema generale
5.2 Strumenti di sviluppo
5.2.1 AWS SDK for Java
5.2.2 AWS Toolkit for Eclipse
5.3 Amazon EC2
5.3.1 Tipi di istanze
5.3.2 Amazon Machine Images
5.3.3 Console di gestione
5.4 Integrazione EC2 in DMASON
5.4.1 Classe di servizio EC2Service
5.4.2 Modelli
5.4.3 Integrazione front-end
6 Conclusioni
6.1 Lavoro svolto
6.2 Sviluppi futuri

II Appendici
A Listati
A.1 Front-end
A.1.1 Esempio Frammento JSP: header.jsp
A.1.2 Aspetto dei worker
A.1.3 Aggiornamento informazioni worker
A.1.4 Scheda impostazioni General
A.1.5 Gestione impostazioni
A.2 Back-end
A.2.1 Comandi remoti
A.2.2 Gestione richieste istanze EC2 da System Management
A.2.3 Estrazione versione DMASON da modello di progetto di Maven
A.2.4 Classe di servizio EC2Service

Bibliografia

Bibliografia
  1. John von Neumann, Various Techniques Used in Connection with Random Digits, 1951, National Bureau of Standards Applied Math Series, #12, pp. 36-38
  2. Tucker Balch, TeamBots simulation and real robot execution environment, 1997, https://www.cs.cmu.edu/~trb/TeamBots/
  3. Nelson Minar, Roger Burkhart, Christopher Langton and Manar Askenazi, The swarm simulation system, 1996,http://www.swarm.org
  4. Sean Luke, Gabriel Catalin Balan, Liviu Panait, Claudio Cioffi-Revilla and Sean Paus, MASON: A Java Multi-Agent Simulation Environment, Proceedings of the Agent 2003 Conference, 2003, https://cs.gmu.edu/~eclab/projects/mason/
  5. Gennaro Cordasco, Rosario De Chiara, Ada Mancuso, Dario Mazzeo, Vittorio Scarano and Carmine Spagnuolo, A Framework for Distributing Agent-Based Simulations, Euro-Par Workshops (1)'11, 2011, pp. 460-470
  6. AT&T, What Is The Cloud?, 1993, https://youtu.be/_a7hK6kWttE
  7. Jeff Bar, Amazon Simple Queue Service Released, 2004, http://aws.typepad.com/aws/2004/11/amazon_simple_q.html
  8. Announcing Amazon Elastic Compute Cloud (Amazon EC2) - beta, 2006, https://aws.amazon.com/about-aws/whats-new/2006/08/24/announcing-amazon-elastic-compute-cloud-amazon-ec2---beta/
  9. Paul McDonald, Introducing Google App Engine + our new blog, 2008, http://googleappengine.blogspot.nl/2008/04/introducing-google-app-engine-our-new.html
  10. Windows Azure General Availability, 2010, http://blogs.technet.com/b/microsoft_blog/archive/2010/02/01/windows-azure-general-availability.aspx
  11. Launch of IBM Smarter Computing, 2011, https://web.archive.org/web/20130420162543/https://www-304.ibm.com/connections/blogs/IBMSmarterSystems/date/201102?lang=en_us
  12. Kara Swisher, D: All Things Digital (with Larry Ellison as guest), 2012, http://allthingsd.com/20120530/oracle-ceo-larry-ellison-live-at-d10/?refcat=d10
  13. Ari Balogh, Google Compute Engine is now Generally Available with expanded OS support, transparent maintenance, and lower prices, 2012, https://developers.googleblog.com/2013/12/google-compute-engine-is-now-generally.html
  14. B. Rochwerger, D. Breitgand, E. Levy, A. Galis, K. Nagin, I. M. Llorente, R. Montero, Y. Wolfsthal, E. Elmroth, J. Caceres, M. Ben-Yehuda, W. Emmerich and F. Galan, The Reservoir model and architecture for open federated cloud computing, IBM Journal of Research and Development, 2009, vol. 53, #4, pp. 4:1--4:11, jul, DOI: 10.1147/jrd.2009.5429058}, IBM, https://opennebula.org/
  15. Jim Curry, Introducing OpenStack, 2010,https://www.openstack.org/blog/2010/07/introducing-openstack/
  16. National Science Foundation, Diagram of CSNET, 1981
  17. P. M. Mell and T. Grance, The NIST definition of cloud computing, 2011, DOI: 10.6028/nist.sp.800-145, National Institute of Standards and Technology
  18. Bobbie Johnson, Cloud computing is a trap, warns GNU founder Richard Stallman, Article on theguardian.com, 2008, https://www.theguardian.com/technology/2008/sep/29/cloud.computing.richard.stallman
  19. Lydia Leong, Gregor Petri, Bob Gill and Mike Dorosh, Quadrante magico per un'infrastruttura cloud come servizio, Versione internazionale, 2016, https://www.gartner.com/technology/media-products/reprints/amazon/1-3IFUTGE-ITA.html
  20. Amazon Web Services Launches, 2006, http://phx.corporate-ir.net/phoenix.zhtml?c=176060\&p=irol-newsArticle\&ID=830816
  21. SDK AWS for Java, https://aws.amazon.com/it/sdk-for-java/
  22. AWS account, https://portal.aws.amazon.com/billing/signup?redirect_url=https\%3A\%2F\%2Faws.amazon.com\%2Fregistration-confirmation\&language=it_it#/start
  23. ISISlab, DMASON wiki, https://github.com/isislab-unisa/dmason/wiki
  24. Apache Foundation, Maven, https://maven.apache.org/
  25. Material Design, https://material.io/
  26. Polymer Project, https://www.polymer-project.org
  27. W3C, Latest HTML specification, https://www.w3.org/standards/techs/html
  28. W3C, Elements semantics, https://www.w3.org/TR/2017/REC-html52-20171214/dom.html#elements-semantics
  29. W3C, 2016, Web Animations, https://www.w3.org/TR/web-animations-1/
  30. Web Components, https://www.webcomponents.org
  31. Bower, https://bower.io
  32. jQuery, https://jquery.com/
  33. Masonry, https://masonry.desandro.com/
  34. jsRender, https://www.jsviews.com
  35. JavaServer Pages, https://docs.oracle.com/javaee/5/tutorial/doc/bnagx.html
  36. JSP Standard Tag Library, https://docs.oracle.com/javaee/5/tutorial/doc/bnakc.html
  37. Amazon Ec2 Spot Instances, https://aws.amazon.com/ec2/spot/
  38. Node.js, https://nodejs.org/en/
  39. The NPM Package Manager, https://www.npmjs.com/
  40. Java Servlet, https://docs.oracle.com/javaee/7/tutorial/servlets.htm#BNAFD
  41. Apache Commons Configuration, https://commons.apache.org/proper/commons-configuration/
  42. JSch, http://www.jcraft.com/jsch/
  43. AWS Toolkit for Eclipse, https://aws.amazon.com/eclipse/
  44. Amazon EC2, https://aws.amazon.com/ec2/details/
  45. Bob Evans, Why Microsoft Is Ruling The Cloud, IBM Is Matching Amazon, And Google Is $15 Billion Behind, feb. 2018, https://www.forbes.com/sites/bobevans1/2018/02/05/why-microsoft-is-ruling-the-cloud-ibm-is-matching-amazon-and-google-is-15-billion-behind/

Tesi

La tesi è consultabile qui.