Con l'avvento su scala globale di HTML5 le tecnologie web si sono evolute cercando di offrire all'utente una migliore esperienza applicativa sempre più simile a quella desktop. Sul piano tecnico questo viene realizzato spostando la logica di presentazione sul browser client facendo leva su Javascript e CSS3. In questa sessione vedremo come KnockoutJS, un presentation framework Javascript basato sul pattern Model-View-ViewModel, permette di sviluppare Rich Internet Application (RIA) analizzando le sue caratteristiche implementative e mostrando esempi di casi reali anche in ambito mobile.
OVERVIEW: Java secondo Microsoft
STRUMENTI:Java nel cloud
MODALITA’: Il Development life cycle secondo Microsoft
APPROCCIO: Stack cloud native basato su JAVA ed Azure
CAMBIAMENTO: Know how necessario per lo sviluppo su AZURE con Java
OPPORTUNITA: Use case di implementazione «first approach»
Con l'avvento su scala globale di HTML5 le tecnologie web si sono evolute cercando di offrire all'utente una migliore esperienza applicativa sempre più simile a quella desktop. Sul piano tecnico questo viene realizzato spostando la logica di presentazione sul browser client facendo leva su Javascript e CSS3. In questa sessione vedremo come KnockoutJS, un presentation framework Javascript basato sul pattern Model-View-ViewModel, permette di sviluppare Rich Internet Application (RIA) analizzando le sue caratteristiche implementative e mostrando esempi di casi reali anche in ambito mobile.
OVERVIEW: Java secondo Microsoft
STRUMENTI:Java nel cloud
MODALITA’: Il Development life cycle secondo Microsoft
APPROCCIO: Stack cloud native basato su JAVA ed Azure
CAMBIAMENTO: Know how necessario per lo sviluppo su AZURE con Java
OPPORTUNITA: Use case di implementazione «first approach»
Presentazione alla Google Dev Fest Mediterranean 2016 di Catania con presentazione sulle metodologie di utilizzo di microservices e sui sistemi per monitorare le infrastrutture
Progettazione e sviluppo di un editor per la certificazione di sicurezza dei servizi cloud
Tesi di Laurea di Roberto Amelio
Relatore: Dott. Claudio Ardagna
Correlatore: Dott. Marco Anisetti
Antonio Russo, Federico Oldrini e Jacopo Giola di Makeitapp hanno presentato il workshop di CommitUniversity, dedicato al Backend as a Service, mostrandoci come costruire con esso un applicazione.
Cos'è il Cloud Computing, perché esiste, chi lo utilizza, quanto è utilizzato in Italia, quali sono i principali casi d'uso e chi sono i principali vendor
Cos'è il Cloud Computing, perché esiste, chi lo utilizza, quanto è utilizzato in Italia, quali sono i principali casi d'uso e chi sono i principali vendor
Lo Spring Framework viene ancora una volta incontro agli sviluppatori Java semplificandone la vita, questa volta vedremo come implementare facilmente uno strato servizi stateless da rendere disponibile remotamente nei diversi formati fruibili dalle diverse tecnologie client RIA, introducendo i concetti di Exporter e Proxy di Spring Remoting. Tutto questo tramite pura configurazione, via XML o annotation a seconda dei gusti, e con un esempio specifico in Flex con Spring BlazeDS Integration.
HTML5 Single Page Application è il nuovo hype tecnologico: tutti ne parlano, il web ne è pervaso, da GMail a Facebook e Twitter, dal desktop al mobile, dagli Appennini alle Ande.
In questa sessione ci occuperemo di tutti quegli aspetti di organizzazione di una solution in termini di codebase, unit testing e processo di build, presentando alcuni strumenti che stanno emergendo fra quelli disponibili.
Demo: http://www.communitydays.it/events/2014-Roma/web02/
Il primo incontro dell'AWS Users Group Naples, le slide della definizione e dello studio storico ed economico del cloud computing.
Link all'evento:
http://blog.vmengine.net/2009/12/23/aws-user-group-naples-una-sfida-per-il-sud/
Introduction to Cloud Computing seminar.
Diritto dell'Informatica at Informatica, Dipartimento di Scienze matematiche e informatiche, scienze fisiche e scienze della terra, Università degli Studi di Messina.
By Lorenzo Carnevale.
Presentazione alla Google Dev Fest Mediterranean 2016 di Catania con presentazione sulle metodologie di utilizzo di microservices e sui sistemi per monitorare le infrastrutture
Progettazione e sviluppo di un editor per la certificazione di sicurezza dei servizi cloud
Tesi di Laurea di Roberto Amelio
Relatore: Dott. Claudio Ardagna
Correlatore: Dott. Marco Anisetti
Antonio Russo, Federico Oldrini e Jacopo Giola di Makeitapp hanno presentato il workshop di CommitUniversity, dedicato al Backend as a Service, mostrandoci come costruire con esso un applicazione.
Cos'è il Cloud Computing, perché esiste, chi lo utilizza, quanto è utilizzato in Italia, quali sono i principali casi d'uso e chi sono i principali vendor
Cos'è il Cloud Computing, perché esiste, chi lo utilizza, quanto è utilizzato in Italia, quali sono i principali casi d'uso e chi sono i principali vendor
Lo Spring Framework viene ancora una volta incontro agli sviluppatori Java semplificandone la vita, questa volta vedremo come implementare facilmente uno strato servizi stateless da rendere disponibile remotamente nei diversi formati fruibili dalle diverse tecnologie client RIA, introducendo i concetti di Exporter e Proxy di Spring Remoting. Tutto questo tramite pura configurazione, via XML o annotation a seconda dei gusti, e con un esempio specifico in Flex con Spring BlazeDS Integration.
HTML5 Single Page Application è il nuovo hype tecnologico: tutti ne parlano, il web ne è pervaso, da GMail a Facebook e Twitter, dal desktop al mobile, dagli Appennini alle Ande.
In questa sessione ci occuperemo di tutti quegli aspetti di organizzazione di una solution in termini di codebase, unit testing e processo di build, presentando alcuni strumenti che stanno emergendo fra quelli disponibili.
Demo: http://www.communitydays.it/events/2014-Roma/web02/
Il primo incontro dell'AWS Users Group Naples, le slide della definizione e dello studio storico ed economico del cloud computing.
Link all'evento:
http://blog.vmengine.net/2009/12/23/aws-user-group-naples-una-sfida-per-il-sud/
Introduction to Cloud Computing seminar.
Diritto dell'Informatica at Informatica, Dipartimento di Scienze matematiche e informatiche, scienze fisiche e scienze della terra, Università degli Studi di Messina.
By Lorenzo Carnevale.
1. Università degli Studi del Sannio
VIRTUAL AGENCY
Guerrera Alessandro - Micco Enrico
Architetture e Sistemi Software Distribuiti
Prof. Eugenio Zimeo
AA. 2012 - 2013
2. • Sistema software che permette la gestione di una catena di alberghi
• VirtualAgency è un sistema globale elettronico di prenotazioni alberghiere rivolto ad
aziende e viaggiatori privati.
• L’implementazione del sistema prevede una realizzazione distribuita delle sue
componenti.
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
May 06, 2013
OBIETTIVO
3. • Due tipi di utenti:
Clienti
Albergatori
• Clienti
Verifica (ricerca) della disponibilità di stanze del tipo desiderato (qualità e costo)
in uno specifico intervallo temporale;
Accesso ai dettagli sui servizi;
Prenotazione di una stanza;
Cancellazione di una prenotazione.
• Albergatori
Gestione della registrazione dell’albergo
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
DESCRIZIONE GENERALE
May 06, 2013
5. • Virtual Agency vista come applicazione interattiva:
funzionalità di interfaccia utente (presentazione)
funzionalità di elaborazione (logica applicativa)
funzionalità di gestione dei dati
• Pattern MVC
gli attori del sistema comunicano solo attraverso controller e viste
separazione del controller dai dati
• Pattern Repository (già incluso in MVC)
memorizzazione degli hotel registrati e delle prenotazioni effettuate
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
SCOMPOSIZIONE DEL SISTEMA
May 06, 2013
16. • Configurazione Spring layer
L’uso di Spring permette una semplice e rapida applicazione del protocollo https ad
una data comunicazione
Configurare Tomcat (server.xml) al fine di prevedere l’uso di un connettore adatto
alla gestione di un certificato SSL
<Connector SSLEnabled="true" acceptCount="100" ciphers="${bio-ssl.cipher.list}"
connectionTimeout="20000" executor="tomcatThreadPool"
keyAlias="${bio-ssl.ssl.key.alias}" keyPass="${bio-ssl.ssl.key.password}"
keystoreFile="${catalina.base}/${bio-ssl.ssl.keystore.location}"
keystorePass="${bio-ssl.ssl.keystore.password}" maxKeepAliveRequests="15" port="${bio-
ssl.https.port}" protocol="org.apache.coyote.http11.Http11Protocol" redirectPort="${bio-
ssl.https.port}" scheme="https" secure="true"/>
I valori associati ai vari parametri non risultano visibili esplicitamente poiché si è
sfruttato il middleware vFabric di VMware, appositamente concepito ed ottimizzato
per l’interazione con Spring
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
GESTIONE DELLA SICUREZZA: VFABRIC
May 06, 2013
17. • Forzare l’uso del protocollo https nella comunicazione client - server.
Configurare il file “app-security-context.xml”, aggiungendo la seguente riga:
<intercept-url pattern="/**" requires-channel="https" />
• Il tag in esame identifica un “intercept-url”, ovvero un elemento che intercetta tutti gli url, e
forza l’uso di un canale https (requires-channel)
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
GESTIONE DELLA SICUREZZA: VFABRIC
May 06, 2013
18. • Autenticazione
Specificare gli url per i quali è richiesta l’autenticazione dell’utente
(app-security-context.xml)
<intercept-url pattern=”/**" access="isAuthenticated()"/>
La action del form di login dovrà essere definita come “j_spring_security_check”
Istruire il filtro di Spring Security per puntare alla pagina di login desiderata,
mediante l’aggiunta, tra i tag <http> e </http> in applicationContext-security.xm,l
il seguente codice :
<form-login login-page="/login.do" default-target-url="/index.jsp” authentication-failure-url="/
loginfailed.do" />
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
GESTIONE DELLA SICUREZZA: VFABRIC
May 06, 2013
19. • Controllo dei ruoli
E’ necessario verificare il tipo di utente che ha effettuato l’accesso alla specifica
jsp e permettere, quindi, di assumere il giusto comportamento.
Tale funzionalità è implementata grazie all’uso dello “Spring Security Jsp Tag
Library“ ( taglib prefix="sec" uri=http://www.springframework.org/security/tags), che
permette la definizione del seguente taglib:
<sec:authorize access="hasRole('ROLE_USER')" >
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
GESTIONE DELLA SICUREZZA: VFABRIC
May 06, 2013
20. • Avendo impiegato un front-end tra il client e le istanze su cui è presente l’applicazione
web, la realizzazione di un canale sicuro verso il client è stata affidata al front-end stesso
• Utilizzo del modulo mod_ssl, includendo nella configurazione del server un Virtual Host in
ascolto sulla porta HTTPS (443)
• Uso dei due file file di configurazione, “httpd.conf” e “httpd-ssl.conf”:
HTTPD.CONF: configurazione del virtual host raggiungibile sulla porta 6666, ossia
sfruttando il protocollo http
<VirtualHost localhost:6666>
HTTPD-SSL.CONF: configurazione del virtual host raggiungibile sulla porta 443,
sfruttando il protocollo https
<VirtualHost localhost:443>
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
GESTIONE DELLA SICUREZZA: FRONT-END
May 06, 2013
21. • Utilizzo della crittografia:
• Generazioen di una chiave privata
• Generazione di un certificato self signed
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
GESTIONE DELLA SICUREZZA: FRONT-END
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56: RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "/opt/jboss/httpd/httpd/conf/server.crt"
SSLCertificateKeyFile "/opt/jboss/httpd/httpd/conf/server.key"
May 06, 2013
22. • Insieme di task che devono essere processati come se costituissero una singola unità di
elaborazione
• Uso di Java Transaction API (JTA): API che espone le funzioni del transaction manager
• Adozione del metodo CMT e della configurazione di default (REQUIRED)
• Tale vincolo può essere rilassato in presenza di metodi in cui non è necessario avere
un comportamento transazionale obbligato
• Uso dell’attributo “SUPPORTS” sui metodi responsabili di accessi in lettura al
database con la seguente annotazione:
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
TRANSAZIONI
May 06, 2013
23. • Applicazione del pattern di load balancing al sistema informativo dei vari hotel
• Message Oriented Middleware (MOM): uso delle API di Java Message Service (JMS),
sfruttando le funzionalità messe a disposizione dal Message Oriented Middleware (MOM)
ActiveMQ (middleware open source che supporta le specifiche JMS)
Asincronismo della comunicazione: disaccoppiamento spaziale e temporale fra i
comunicanti
• Modello Point-To-Point: il produttore invia messaggi a una particolare coda (Queue) e un
consumatore legge i messaggi da questa coda
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
LOAD BALANCING DELLE RICERCHE
May 06, 2013
24. • Si è scelti di mantenere la stessa interfaccia del DAO, e includere la logica JMS all’interno dei
metodi di ricerca delle camere.
• Uso di due strutture per incapsulare i parametri ed i valori di ritorno dei metodi:
RequestContaier
ResponseContainer
• Queste strutture vengono inserite all’interno di messaggi JMS ed inviati su rete.
• Logica di ricezione:
• Richiesta di ricerca: creazione di un RequestContainer, che viene inserito in un messaggio ed inviato
(secondo un modello di interazione request/reply) ad una coda di richiesta messa a disposizione da
un Message Broker (ActiveMQ);
• Messaggio prelevato dalla coda, ne viene estratto il RequestContainer e le informazioni contenute
vengono utilizzate per effettuare la ricerca;
• I risultati della ricerca vengono utilizzati per creare un ResponseContainer, che viene inserito in una
coda di risposta temporanea;
• il messaggio di risposta viene infine prelevato dalla coda di risposta, ne viene estratto il
ResponseContaiener e le informazioni contenute vengono inviate al sistema VirtualAgency che
provvederà a fornirle al cliente che ha effettuato la richiesta
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
LOAD BALANCING DELLE RICERCHE
May 06, 2013
26. • Diverse istanze di application server servono la stessa applicazione
• Vantaggi:
Elevata disponibilità
Scalabilità
Load balancing
• Il servizio di clustering è nativamente previsto da JBoss, e si presenta come un insieme di
nodi in cui ognuno di essi è definito come un’istanza del server JBoss
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
REPLICAZIONE DELL’ APPLICATION SERVER:
JBOSS CLUSTERING
May 06, 2013
27. • Clustering di un EJB 3.0 stateless:
annotazione @Clustered per aggiungere AgencyFacade al cluster
• Servizio HA-JNDI:
mantiene in memoria un albero di nodi
Configurazione di Jboss (cluster-service.xml):
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
REPLICAZIONE DELL’ APPLICATION SERVER:
CLUSTERED EJB E HA-JNDI
May 06, 2013
<mbean code="org.jboss.ha.jndi.HANamingService«
name="jboss:service=HAJNDI">
<depends>jboss:service=DefaultPartition</depends>
</mbean>
28. • Servizio HA-JNDI:
Configurazione del client (applicazione web su vFabric tc Server):
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
REPLICAZIONE DELL’ APPLICATION SERVER:
CLUSTERED EJB E HA-JNDI
May 06, 2013
<!-- JNDI Properties -->
<util:properties id="jndiProps">
<beans:prop key="java.naming.factory.initial">org.jboss.naming.NamingContextFactory</beans:prop>
<beans:prop key="java.naming.factory.url">org.jboss.naming:org.jnp.interfaces</beans:prop>
<beans:prop key="java.naming.provider.url">localhost:1199,localhost:1299</beans:prop>
</util:properties>
29. • Diverse istanze di Apache web server realizzano il livello presentazione
• Il servizio di clustering è stato implementato sfruttando i vantaggi offerti da vFabric, il
quale permette di creare un’istanza come “Cluster Node”.
• Le istanze sono state configurate con i seguenti moduli:
base
bio
bio-ssl
ajp
cluster-node
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
REPLICAZIONE DEL SERVLET ENGINE:
VFABRIC CLUSTERING
May 06, 2013
30. • Molteplicità vista come unica istanza singolarmente raggiungibile e gestibile.
• Uso di un web server Apache ( httpd 2.2.13) come front-end delle varie istanze di vFabric
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
VFABRIC CLUSTERING: FRONT-END
May 06, 2013
31. • Mod_cluster: implementazione che permette la creazione di un canale di feedback
addizionale per la gestione intelligente del carico che avviene in maniera del tutto
dinamica
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
VFABRIC CLUSTERING: LOAD BALANCING
May 06, 2013
32. • Apache – vFabric routing: AJP
Il connettore AJP permette di instradare le richieste da Apache a vFabric per mezzo
del protocollo AJP ( Apache Jserv Protocol ).
Quando Apache riceve una richiesta indirizzata al livello presentazione (vFabric),
questa viene inoltrata sulla porta AJP dell’istanza selezionata dalla politica di
balancing.
ProxyPass / balancer://mycluster/
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
VFABRIC CLUSTERING: ROUTING
May 06, 2013
33. • Durante l’esecuzione di una data richiesta da parte di un nodo, se questi va incontro ad
una failure le successive richieste vengono automaticamente redirezionate ad uno dei
nodi disponibili del cluster
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
VFABRIC CLUSTERING: FAILOVER
May 06, 2013
34. Macchina 1 Apple MacBook Pro
Intel Core i7-3615qm@ 2.30 GHz x8, RAM 8GB, SSD
OS X 10.8.3 64 bit
Macchina 2 ASUS K52J
Intel Core i5 460m @ 2.53 GHz x4, RAM 4G, HDD
Windows 7 Ultimate 64 bit
Macchina 3 Lenovo G550
Intel Core2 Duo T4200 @ 2.00 GHz x2, RAM 4GB, HDD
Windows 7 Home Premium 32 bit
Macchina 4 ASUS K53S
Intel Core i7 2670qm@ 2.20 GHz x8, RAM 6GB, SSD
Windows 7 Home Premium 64 bit
CONFIGURAZIONE DI TEST
May 06, 2013