blexin

Consulenza
Servizi e
Formazione it


Blog

Evolvi la tua azienda

Come eseguire con il minimo sforzo test di carico dei vostri siti web con Azure

Test di carico con Azure

Qualche giorno fa un nostro cliente ci ha chiesto di effettuare dei test di carico su un’applicazione che abbiamo sviluppato. Dato che eravamo da poco tornati da WPC, dove ho seguito diverse sessioni su Azure e affini, mi sono detto: perchè non mettere il portale su Azure e approfittare degli strumenti che ci mette a disposizione la piattaforma per effettuare i test richiesti? Anche perché con le mie limitate conoscenze sistemistiche mi sarebbe stato complicato mettere in piedi un ambiente che mi permettesse di fare altrettanto.

L’applicazione oggetto di test è un portale Web realizzato con il nostro CMS WebRight, che nell'ultima versione utilizza MongoDB per lo storage dei dati. Dato che WebRight è pensato proprio per sfruttare le soluzioni cloud, la cosa è stata abbastanza semplice.

Per prima cosa va creata una nuova subscription su Azure se non ne avete già una. Ho usato quella gratuita che offre comunque tutti gli strumenti che servono, ma ricordate che serve comunque una carta di credito per procedere. Aggiungiamo poi alla subscription le risorse necessarie, in particolare:

  1. Una Web App
  2. Un Azure Cosmos DB con MongoDB API
  3. Un Account di archiviazione

Nella dashboard di Azure avremo una situazione di questo tipo:

dashbaord azure

Cominciamo quindi a configurare le risorse e la nostra applicazione per il deploy su Azure. Per prima cosa mi sono occupato del trasferimento dei dati da MongoDB a CosmosDB, una volta entrati nella risorsa Azure Cosmos DB le info che vi servono per connettervi alla risorse sono tutte contenute qui:

dashbaord azure

Non resta che trasferire i dati dal nostro MongoDB a Cosmos. Con un semplice mongodump creiamo la copia dei dati, e con un semplice mongorestore portiamo tutte le collection su Cosmos.

mongorestore.exe --host cosmosdb-mongodb-account.documents.azure.com:10255 -u cosmosdb-mongodb-account -p --ssl --sslAllowInvalidCertificates ./dumps/dump-2016-12-07

Onde evitare di perderci la testa, assicuratevi di avere installato una versione di MongoDB con SSL attivo. Nella versione che avevo installato in Windows (la 3.4) non era presente, ho quindi scaricato la nuova versione per OSX da qui e ho risolto il problema. Se usate l’aggregation pipeline di Mongo (come nel nostro caso), per completare la configurazione dovete abilitare dal menu “Preview Features” l’opzione “MongoDB Aggregation Pipeline”.

dashbaord azure

Fatto questo bisogna pubblicare il codice dell’applicazione nella Web App. Per farlo ci serve un profilo di pubblicazione che possiamo scaricare facilmente dal portale:

dashbaord azure

Importiamo il profilo appena scaricato in Visual Studio e pubblichiamo! L'ultimo passo è quello di spostare tutti i file statici degli utenti del portale all’interno di un BLOB storage di Azure, in modo che siano disponibili a tutte le istanze dell'app. Anche questa operazione è semplicissima: basta entrare nella risorsa di archiviazione creata, selezionare BLOB e creare un nuovo container, che praticamente sarà la cartella dove andremo a mettere i file statici.

dashbaord azure

Selezionando l’account di archiviazione dal portale Web avete disposizione un'interfaccia per poter caricare i file all’interno del container uno per volta. Dato che sono pigro e volevo qualcosa che caricasse tutto in una sola volta, ho utilizzato il tool AZCOPY, che mette a disposizione dei comandi che permettono di caricare una cartella e tutte le sue sottocartelle con un semplice comando:

AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer /Dest:C:\myfolder /SourceKey:key /S

Per farlo però avete bisogno delle chiavi di accesso allo storage, che potete trovare qui:

dashbaord azure

Fatto questo siamo pronti per i nostri test! Andiamo nella risorsa Web App e dal menu scegliamo “Test delle prestazioni”, nella schermata che si aprirà selezionamo “New” e avremo questa maschera:

dashbaord azure

Possiamo scegliere il numero di utenti che intendiamo utilizzare per il test, la durata e da quale località far arrivare le richieste. Una volta scelto tutto, clicchiamo su Run Test. A questo punto il sistema fa tutto il resto del lavoro, collezionando le risorse necessarie nell'arco di 15 minuti (spessissimo molto meno) e avviando i test. Tornati nella schermata in cui vengono listati i test fatti, abbiamo la possibilità di vederne lo stato corrente o il dettaglio selezionando il test di nostro interesse:

dashbaord azure

Se i risultati del test non sono soddisfacenti, oltre ad ottimizzazioni da fare sul codice, Azure mette a disposizione la possibilità di aumentare la potenza delle nostre macchine con un semplice click, sempre dalla risorsa Web App:

dashbaord azure

Inoltre ci da la possibilità di aumentare i nodi a nostra disposizione in modo da poter scalare la nostra infrastruttura in base al carico che vogliamo sostenere:

dashbaord azure

Spero di avervi incuriosito sulle possibilità messe a disposizione dalla piattaforma Azure! Alla prossima.

Servizi

Evolvi la tua azienda