facebook

Blog

Resta aggiornato

Come eseguire con il minimo sforzo test di carico dei vostri siti web con Azure
Test di carico con Azure
lunedì 07 Gennaio 2019

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:

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:

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”.

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:

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.

Selezionando l’account di archiviazione dal portale Web avrete a 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:

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:

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 (spesso 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:

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:

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:

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