SlideShare ist ein Scribd-Unternehmen logo
Università degli Studi del Sannio
VIRTUAL AGENCY
Guerrera Alessandro - Micco Enrico
Architetture e Sistemi Software Distribuiti
Prof. Eugenio Zimeo
AA. 2012 - 2013
• 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
• 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
FUNZIONALITÀ
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
May 06, 2013
• 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
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
SCOMPOSIZIONE 4-TIER
May 06, 2013
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
CLASS DIAGRAM: VIRTUALAGENCY MODEL
May 06, 2013
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
CLASS DIAGRAM: HOTEL MODEL
May 06, 2013
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
SEQUENCE DIAGRAM:
RICERCADELLE CAMERE DISPONIBILI
May 06, 2013
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
SEQUENCE DIAGRAM:
PRENOTAZIONE DI UNA CAMERA
May 06, 2013
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
ARCHITETTURA DEL SISTEMA: VISTA STRUTTURALE
May 06, 2013
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
ARCHITETTURA DEL SISTEMA: VISTA STRUTTURALE
May 06, 2013
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
ARCHITETTURA DEL SISTEMA: VISTA C&C
May 06, 2013
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
ARCHITETTURA DEL SISTEMA: VISTA C&C
May 06, 2013
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
SCHEMA GENERALE
May 06, 2013
• 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
• 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
• 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
• 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
• 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
• 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
• 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
• 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
• 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
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
LOAD BALANCING DELLE RICERCHE
May 06, 2013
• 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
• 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>
• 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>
• 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
• 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
• 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
• 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
• 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
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
ARCHITETTURE E SISTEMI SOFTWARE
DISTRIBUITI
DIAGRAMMADI DEPLOYMENT
May 06, 2013
Virtual Agency

Weitere ähnliche Inhalte

Ähnlich wie Virtual Agency

Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
Daniele Mondello
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)
Sabino Labarile
 
Microservices architecture & Service Fabric
Microservices architecture & Service FabricMicroservices architecture & Service Fabric
Microservices architecture & Service Fabric
Massimo Bonanni
 
.NET Microservices
.NET Microservices.NET Microservices
.NET Microservices
Luca Congiu
 
Progettazione e sviluppo di un editor per la certificazione di sicurezza dei ...
Progettazione e sviluppo di un editor per la certificazione di sicurezza dei ...Progettazione e sviluppo di un editor per la certificazione di sicurezza dei ...
Progettazione e sviluppo di un editor per la certificazione di sicurezza dei ...
Università degli Studi di Milano - Sede di Crema
 
Modi innovativi per costruire App
Modi innovativi per costruire AppModi innovativi per costruire App
Modi innovativi per costruire App
Commit University
 
Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010
Mauro Servienti
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni Futura
Soluzioni Futura
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni Futura
Valerio Versace
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
Marcello Teodori
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP WayLuca Milan
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
Roberto Messora
 
SVILUPPO DI UNA SOLUZIONE SINGLE SIGN ON PER L’ENTE VENETO LAVORO
SVILUPPO DI UNA SOLUZIONE  SINGLE SIGN ON  PER L’ENTE VENETO LAVOROSVILUPPO DI UNA SOLUZIONE  SINGLE SIGN ON  PER L’ENTE VENETO LAVORO
SVILUPPO DI UNA SOLUZIONE SINGLE SIGN ON PER L’ENTE VENETO LAVORO
Zanatta Davide
 
Cloud Computing Economia Numeri Mercato
Cloud Computing Economia Numeri MercatoCloud Computing Economia Numeri Mercato
Cloud Computing Economia Numeri Mercato
VMEngine
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAXTommaso Torti
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
opencityplatform
 
Cloud Computing: La nuvola intelligente 2015
Cloud Computing: La nuvola intelligente 2015Cloud Computing: La nuvola intelligente 2015
Cloud Computing: La nuvola intelligente 2015
Lorenzo Carnevale
 
E suap - cloud computing (Italian)
E suap - cloud computing (Italian)E suap - cloud computing (Italian)
E suap - cloud computing (Italian)
Sabino Labarile
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi DiscussioneYeser Rema
 
Tesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computingTesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computing
francesco pesare
 

Ähnlich wie Virtual Agency (20)

Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)
 
Microservices architecture & Service Fabric
Microservices architecture & Service FabricMicroservices architecture & Service Fabric
Microservices architecture & Service Fabric
 
.NET Microservices
.NET Microservices.NET Microservices
.NET Microservices
 
Progettazione e sviluppo di un editor per la certificazione di sicurezza dei ...
Progettazione e sviluppo di un editor per la certificazione di sicurezza dei ...Progettazione e sviluppo di un editor per la certificazione di sicurezza dei ...
Progettazione e sviluppo di un editor per la certificazione di sicurezza dei ...
 
Modi innovativi per costruire App
Modi innovativi per costruire AppModi innovativi per costruire App
Modi innovativi per costruire App
 
Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni Futura
 
I Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni FuturaI Love Cloud by Soluzioni Futura
I Love Cloud by Soluzioni Futura
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP Way
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
 
SVILUPPO DI UNA SOLUZIONE SINGLE SIGN ON PER L’ENTE VENETO LAVORO
SVILUPPO DI UNA SOLUZIONE  SINGLE SIGN ON  PER L’ENTE VENETO LAVOROSVILUPPO DI UNA SOLUZIONE  SINGLE SIGN ON  PER L’ENTE VENETO LAVORO
SVILUPPO DI UNA SOLUZIONE SINGLE SIGN ON PER L’ENTE VENETO LAVORO
 
Cloud Computing Economia Numeri Mercato
Cloud Computing Economia Numeri MercatoCloud Computing Economia Numeri Mercato
Cloud Computing Economia Numeri Mercato
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAX
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
 
Cloud Computing: La nuvola intelligente 2015
Cloud Computing: La nuvola intelligente 2015Cloud Computing: La nuvola intelligente 2015
Cloud Computing: La nuvola intelligente 2015
 
E suap - cloud computing (Italian)
E suap - cloud computing (Italian)E suap - cloud computing (Italian)
E suap - cloud computing (Italian)
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
 
Tesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computingTesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computing
 

Virtual Agency

  • 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
  • 4. FUNZIONALITÀ ARCHITETTURE E SISTEMI SOFTWARE DISTRIBUITI 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
  • 6. ARCHITETTURE E SISTEMI SOFTWARE DISTRIBUITI SCOMPOSIZIONE 4-TIER May 06, 2013
  • 7. ARCHITETTURE E SISTEMI SOFTWARE DISTRIBUITI CLASS DIAGRAM: VIRTUALAGENCY MODEL May 06, 2013
  • 8. ARCHITETTURE E SISTEMI SOFTWARE DISTRIBUITI CLASS DIAGRAM: HOTEL MODEL May 06, 2013
  • 9. ARCHITETTURE E SISTEMI SOFTWARE DISTRIBUITI SEQUENCE DIAGRAM: RICERCADELLE CAMERE DISPONIBILI May 06, 2013
  • 10. ARCHITETTURE E SISTEMI SOFTWARE DISTRIBUITI SEQUENCE DIAGRAM: PRENOTAZIONE DI UNA CAMERA May 06, 2013
  • 11. ARCHITETTURE E SISTEMI SOFTWARE DISTRIBUITI ARCHITETTURA DEL SISTEMA: VISTA STRUTTURALE May 06, 2013
  • 12. ARCHITETTURE E SISTEMI SOFTWARE DISTRIBUITI ARCHITETTURA DEL SISTEMA: VISTA STRUTTURALE May 06, 2013
  • 13. ARCHITETTURE E SISTEMI SOFTWARE DISTRIBUITI ARCHITETTURA DEL SISTEMA: VISTA C&C May 06, 2013
  • 14. ARCHITETTURE E SISTEMI SOFTWARE DISTRIBUITI ARCHITETTURA DEL SISTEMA: VISTA C&C May 06, 2013
  • 15. ARCHITETTURE E SISTEMI SOFTWARE DISTRIBUITI SCHEMA GENERALE 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
  • 25. 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
  • 35. ARCHITETTURE E SISTEMI SOFTWARE DISTRIBUITI DIAGRAMMADI DEPLOYMENT May 06, 2013