Richiedi Informazioni

Infrastruttura scalabile in breve tempo? Ecco come fare

Più di una volta in questo blog mi sono soffermato a descriverti il mio modus operandi riguardo le attività connesse alla realizzazione e alla successiva scalabilità – in orizzontale o verticale che sia – della tua infrastruttura.

Ma cosa succede, e come bisogna muoversi se hai necessità di intervenire in breve tempo?

Poniamo il caso: la tua startup ha messo il piede sull’acceleratore, e hai bisogno di estendere la tua infrastruttura in modo da poter reggere il numero sempre crescente di connessioni, richieste, sign up da parte di nuovi utenti. Non è molto difficile immaginarlo, soprattutto se stai sviluppando un’app per il mercato del mobile o un portale da centinaia di visitatori quotidiani – che sia a tema sportivo, di gossip, o una testata giornalistica.

Capisci bene che, in un quello che può essere il punto di svolta per la tua attività, fare bella figura con gli utenti finali ed evitare quanti più downtime o rallentamenti possibili diventa la tua priorità.

Non lasciatevi prendere dal panico.
Ma piuttosto cerchiamo di capire quali siano i reali colli di bottiglia, e intervenire dove necessario.

infrastruttura scalabile

Il primo, come da copione, resta il database. È una parte importante della tua infrastruttura, soprattutto perché dovrà gestire i dati di registrazione, contenuti, e tanto altro ancora. Una configurazione in master/slave per metterti al sicuro da eventuali failover non basta. Piuttosto, è buona norma e regola inserire degli indici all’interno delle tabelle, ottimizzarle periodicamente, usare un engine che rispetti le più volte citate regole ACID.

In secondo luogo, linguaggi come Python, Ruby e soci usati in maniera standalone per operazioni specifiche. Nonostante possano fare meraviglie – vedi i framework Django, Rails, Sinatra – delegarvi troppi task, anche se di minore entità – vedi la verifica e la conferma via mail dell’avvenuta registrazione – rischia di rallentare, o addirittura cedere, qualora un servizio decidesse più o meno inaspettatamente di schiantarsi senza troppi complimenti.

In questo caso, sfruttare Javascript (vedi ad esempio node.js) può essere una buona alternativa: in primis perché viene ospitato sulla porzione di server Web che ci si aspetta essere sufficientemente ridondata e non richiede troppe risorse aggiuntive.

I contenuti.
Un’altra cosa che spesso viene sottostimata è la gestione intelligente dei contenuti. E mi riferisco in particolare alle immagini: oltre che aumentare i tempi di caricamento della pagina, se non ridimensionate o compresse correttamente, rischiano di far impennare il traffico di banda in uscita, con conseguenze imprevedibili e poco piacevoli, specialmente se il tuo attuale provider di hosting si rivela troppo “pignolo” sulla quantità consumata.

Così come è importante evitare il caricamento di contenuti da siti “terzi”, in modo da ridurre il numero di connessioni verso l’esterno e i tempi di caricamento.

High Availability.
Ti parlavo poco fa di ridondanza: bilanciare il carico tra due o più frontend è una scelta saggia, che ti garantisce la raggiungibilità da un bacino di utenti sempre più ampio. Ti dà anche la possibilità di estendere il pool di macchine bilanciate in momenti successivi, senza per questo dover mettere in standby – seppur per pochi minuti – la tua attività.

Allora, cosa posso fare?
Quella che ti ho descritto è la punta dell’iceberg: sono tanti gli aspetti che vanno considerati, ed è importanti analizzarli insieme. Noi in Level iP sappiamo ascoltarti, e aiutarti anche in momenti delicati come questo. Contattaci con fiducia, sapremo venirti incontro.