Category Archives: Pagine personali

User:simbis

GitHub https://github.com/bissim

Introduzione

Sono uno studente del CdL in Informatica (L-31).

A partire dal 6 settembre 2017 svolgo la mia attività di tirocinio presso l’ISISLab in ambito cloud computing; in particolare, farò uso della libreria D-MASON per l’esecuzione di simulazioni su sistemi distribuiti. L’obiettivo è la scrittura di un modulo che permetta al simulatore d’interfacciarsi con i servizi di calcolo su cloud offerti da Amazon.

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

Bibliografia

  • MASON: A Multi-Agent Simulation Environment
    • Sean Luke, Claudio Cioffi-Revilla, Liviu Panait, Keith Sullivan, and Gabriel Balan
      Department of Computer Science and Center for Social Complexity – George Mason University
  • Toward the new version of D-MASON: Efficiency, Effectiveness and Correctness in Parallel and Distributed Agent-based Simulations
    • Gennaro Cordasco
      Dipartimento di Psicologia, Seconda Università degli Studi di Napoli, Italy
    • Carmine Spagnuolo and Vittorio Scarano
      ISISLab – Dipartimento di Informatica, Università degli Studi di Salerno, Italy
  • D-Mason on the Cloud: an Experience with Amazon Web Services
    • Michele Carillo, Flavio Serrapica, Carmine Spagnuolo, and Luca Vicidomini
      ISISLab – Dipartimento di Informatica, Università degli Studi di Salerno, Italy
    • Gennaro Cordasco
      Dipartimento di Psicologia, Seconda Università degli Studi di Napoli, Italy
    • Przemysaw Szufel
      Warsaw School of Economics (WSE – SGH), Poland

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

John von Neumann, Various Techniques Used in Connection with Random Digits, 1951, National Bureau of Standards Applied Math Series, #12, pp. 36-38

Tucker Balch, TeamBots simulation and real robot execution environment, 1997, https://www.cs.cmu.edu/~trb/TeamBots/

Nelson Minar, Roger Burkhart, Christopher Langton and Manar Askenazi, The swarm simulation system, 1996,http://www.swarm.org

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/

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

AT&T, What Is The Cloud?, 1993, https://youtu.be/_a7hK6kWttE

Jeff Bar, Amazon Simple Queue Service Released, 2004, http://aws.typepad.com/aws/2004/11/amazon_simple_q.html

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/

Paul McDonald, Introducing Google App Engine + our new blog, 2008, http://googleappengine.blogspot.nl/2008/04/introducing-google-app-engine-our-new.html

Windows Azure General Availability, 2010, http://blogs.technet.com/b/microsoft_blog/archive/2010/02/01/windows-azure-general-availability.aspx

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

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

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

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/

Jim Curry, Introducing OpenStack, 2010,https://www.openstack.org/blog/2010/07/introducing-openstack/

National Science Foundation, Diagram of CSNET, 1981

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

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

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

Amazon Web Services Launches, 2006, http://phx.corporate-ir.net/phoenix.zhtml?c=176060\&p=irol-newsArticle\&ID=830816

SDK AWS for Java, https://aws.amazon.com/it/sdk-for-java/

AWS account, https://portal.aws.amazon.com/billing/signup?redirect_url=https\%3A\%2F\%2Faws.amazon.com\%2Fregistration-confirmation\&language=it_it#/start

ISISlab, DMASON wiki, https://github.com/isislab-unisa/dmason/wiki

Apache Foundation, Maven, https://maven.apache.org/

Material Design, https://material.io/

Polymer Project, https://www.polymer-project.org

W3C, Latest HTML specification, https://www.w3.org/standards/techs/html

W3C, Elements semantics, https://www.w3.org/TR/2017/REC-html52-20171214/dom.html#elements-semantics

W3C, 2016, Web Animations, https://www.w3.org/TR/web-animations-1/

Web Components, https://www.webcomponents.org

Bower, https://bower.io

jQuery, https://jquery.com/

Masonry, https://masonry.desandro.com/

jsRender, https://www.jsviews.com

JavaServer Pages, https://docs.oracle.com/javaee/5/tutorial/doc/bnagx.html

JSP Standard Tag Library, https://docs.oracle.com/javaee/5/tutorial/doc/bnakc.html

Amazon Ec2 Spot Instances, https://aws.amazon.com/ec2/spot/

Node.js, https://nodejs.org/en/

The NPM Package Manager, https://www.npmjs.com/

Java Servlet, https://docs.oracle.com/javaee/7/tutorial/servlets.htm#BNAFD

Apache Commons Configuration, https://commons.apache.org/proper/commons-configuration/

JSch, http://www.jcraft.com/jsch/

AWS Toolkit for Eclipse, https://aws.amazon.com/eclipse/

Amazon EC2, https://aws.amazon.com/ec2/details/

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.