Skip to content

TeodoroBaldazzi/ProgettoASW

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Progetto ASW 2018-2019

Progetto per il corso "Architettura dei Sistemi Software" a.a. 2018-2019.

Versione progetto selezionata: 2D.
Riferimento specifiche e tecnologie adoperate: http://cabibbo.dia.uniroma3.it/asw/progetti/asw-progetto.pdf

Membri:

  • Baldazzi Teodoro;
  • D'Agostino Fabiano;
  • Monti Cristian.

Esecuzione

I seguenti passi sono presentati assumendo che ci si trovi all'interno della cartella ProgettoASW.

Ambiente di esecuzione

L'applicazione è stata ideata per essere eseguita nell'ambiente workstation, usando Vagrant. Vanno però utilizzate più finestre (terminali) diverse. In genere, una per l'applicazione e una per il suo client (ovvero aprire due connessioni ssh con la macchina virtuale ripetendo la procedura di vagrant ssh dalla cartella ./environments/workstation/).

    cd environments/workstation
    vagrant up
    vagrant ssh

Esecuzione applicazione (dopo aver avviato ambiente workstation)

Per semplificare l'esecuzione, è stato costruito lo script build-and-run.sh, che effettua build e avvia l'applicazione con 3 istanze replicate per i servizi A, B e C. Pertanto risulta sufficiente da uno dei due terminali eseguire:

    cd project
    source set-docker-host-ip.sh
    ./build-and-run.sh

Qualora si volessero invece svolgere manualmente tutti i passi per l'esecuzione:

  • Costruzione applicazione:
    cd project
    ./build-projects.sh
  • Clean applicazione (se necessario):
    ./clean-java-projects.sh
  • Esecuzione applicazione:
    source set-docker-host-ip.sh
    ./start-services.sh 	        # singola istanza per ciascun servizio
    ./start-services-replicated.sh      # più istanze per ciascun servizio
  • Verifica applicazione (dall'altro terminale in ssh con la macchina virtuale: workstation) in pratica, l'applicazione può essere verificata usando lo script run-curl-client.sh, che effettua il numero di POST e GET fornito in input o infinite (se si inserisce come input 0, nel quale caso alla fine va arrestato con CTRL-C).

Alcune osservazioni:

  • l' applicazione funziona correttamente anche in presenza di più istanze di ciascun servizio; visto il limitato numero di nomi identificativi a disposizione per ciascuno, potrebbe verificarsi la ripetizione del nome per differenti istanze di uno stesso servizio;
  • in particolare in presenza di un elevato numero di istanze, potrebbe occorrere qualche minuto, a partire dalla prima richiesta del client, affinchè siano tutte registrate correttamente: sino ad allora si verificherà ZuulException: Hystrix Readed time out a seguito di ciascun curl. E' stato inoltre osservato che eseguire un elevato numero di richieste POST nell'intervallo di tempo sopra citato possa causare che, nonostante l'eccezione di timeout, alcune di queste abbiano effettivamente successo, pur con un certo ritardo.

Arresto

Per arrestare l'applicazione, eseguire:

    ./stop-with-compose.sh 

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 43.3%
  • Java 39.7%
  • Ruby 11.2%
  • Dockerfile 5.8%