Skip to content
Leanbit
  • prodotti
    • PLOT products
    • contact center
    • IoT
    • agile planner
  • PLOT AI
  • prezzi
  • azienda
  • newsroom
  • italiano
    • italiano
    • english
Contact us

Benvenuto!

Su leanbit.eu utilizziamo solo Google reCAPTCHA v3 per proteggere i moduli da spam e abusi.
Non utilizziamo altri cookie o strumenti di tracciamento, nemmeno tecnici.
Google reCAPTCHA è necessario per la sicurezza del sito e dei form, quindi è sempre attivo. Google potrebbe raccogliere dati sul dispositivo e sull’uso della pagina (es. IP, user-agent, interazioni) e impostare cookie.
Se non desideri interagire con Google reCAPTCHA, non inviare i moduli e contattaci tramite canali alternativi: email o telefono.

News

Portare l’applicazione in cloud: Scaling orizzontale

21/07/2021 Leanbit Team Commenti disabilitati su Portare l’applicazione in cloud: Scaling orizzontale

Proponiamo un ciclo di articoli dedicato a sviluppatori che vogliono approfondire l’uso della tecnologia cloud e il concetto di scalabilità orizzontale: vediamo come passare da un’applicazione tradizionale ad un’applicazione cloud-oriented. 

Clicca qui per leggere l’introduzione!

Nell’ultimo articolo abbiamo introdotto il concetto di Object Storage. 

In questo articolo analizziamo lo step, successivo all’introduzione dell’Object Storage, necessario a portare un’applicazione tradizionale in cloud. Nello specifico, parliamo di come rendere l’applicazione scalabile orizzontalmente. 

Scaling Verticale e Scaling Orizzontale 

Qualora abbia necessità di aggiungere risorse alla mia applicazione, posso eseguire uno Scaling Verticale e aumentare le risorse del server su cui l’applicazione è installata. Si tratta della modalità di scaling più diffusa: raddoppiando le risorse del server raddoppiano quelle a disposizione dell’applicazione. 

L’adozione delle tecnologie di virtualizzazione e, in seguito, delle tecnologie cloud ha aperto un’altra possibilità: lo Scaling Orizzontale. In poche parole, si tratta di “duplicare” il server applicativo e distribuire il carico di lavoro bilanciando tra i due server. 

Analogamente a quanto posso fare con uno scaling verticale, lo scaling orizzontale raddoppia le risorse a disposizione della mia applicazione, ma introduce al contempo importanti benefici. 

Ad esempio: 

  • Permette di eseguire l’operazione a caldo, aggiungendo o togliendo risorse senza interrompere il servizio.
  • Il balancing deve seguire regole ben precise ma non dove essere per forza bilanciato a metà: è quindi possibile dedicare più risorse a richieste specifiche.
  • Oltre a far scalare l’applicazione, introduce un High Availability secondo una configurazione storicamente chiamata Active-Active: se uno dei due server fallisce, la disponibilità dell’applicativo è garantita dall’altro server.

Le complessità dello Scaling Orizzontale 

Lo scaling orizzontale introduce però alcune complessità dovute alla moltiplicazione dei server, tra cui:

  • La gestione dei file 
  • Il deploy dell’applicazione

La gestione dei file è facilitata dall’introduzione dell’Object Storage nel nostro applicativo (vedi articolo precedente): quando il server B deve gestire la richiesta di un file precedentemente caricato tramite il server A, la richiesta va comunque a buon fine, perchè il file in questione viene richiesto all’Object Storage.

Agli albori dello scaling orizzontale, il problema principale legato ai file era la gestione della sessione utenti. La sessione utenti veniva salvata nel file system e nemmeno l’object storage sopperiva a questo problema: dato che tipicamente una sessione utente è presente in ogni richiesta applicativa, i tempi necessari a reperire la sessione mediante l’Object Storage erano troppo alti.  Oggi è difficile imbattersi in questo problema, perché la maggior parte dei framework che usano il concetto di sessione la salvano in un cookie lato client o nel database.

Come gestire il deploy dell’applicazione

Il deploy richiede un’installazione simultanea sui due o più server – funzione ormai inclusa in qualsiasi sistema di deploy. Infatti, la complessità del deploy è un’altra: è sempre possibile avere due versioni del mio applicativo che girano in contemporanea (la nuova versione e la precedente). Si tratta di un dettaglio importante di cui si deve tenere conto in fase di sviluppo, che ci permetterà di evitare breaking changes fra versioni successive.

Proviamo spiegarlo con un esempio classico:

Se devo rinominare una colonna di una tabella, devo farlo in 2 versioni, non in una. La versione 0 ha la colonna X, la versione 1 deve smettere di usare la colonna x e usare la colonna y, la versione 2 deve eliminare la colonna X. 
In questo modo la versione 0 e 1 possono lavorare in contemporanea senza che una generi errori e lo stesso vale per le versioni 1 e 2.

Bilanciare le richieste tramite load balancer

Come abbiamo detto, le richieste devono essere bilanciate fra i server. 

Per fare questo, le richieste devono prima passare attraverso un load balancer. In Amazon Web Services il load balancer si chiama ELB (Elastic Load Balancer) ed è un servizio concettualmente semplice: le richieste arrivano dai client (siano questi applicazioni mobile, browser web o altro) e vengono inoltrate ai server di backend in base alle impostazioni del balancer. 

È necessario andare su cloud per impostare il nostro applicativo in questo modo? Assolutamente no: possiamo predisporre un server tramite un servizio di proxypass come Nginx (se parliamo di HTTP) o come l’intramontabile HAProxy ( se abbiamo bisogno di scendere a livello di TCP/UDP). 

La differenza sostanziale è che il nostro proxy in ambiente on-premise sarà probabilmente un server, e quindi un SPOF (Single Point Of Failure), mentre ELB è un servizio bilanciato e ridondante a sua volta. 

Cosa ricordare a livello applicativo

L’applicativo deve essere stateless: tutte le informazioni di cui necessito devono arrivare dal client o persistere all’esterno (Object Storage, Database, ecc.). Di conseguenza, non posso usare la RAM del mio server per persistere informazioni fra richieste, devo invece inserirle in un database (nel senso ampio del termine). 

Infine, ricordiamo di prestare attenzione a chi lancia le migrazioni sul database: deve essere solo uno dei due server applicativi. 

  • Tech
Leanbit Team

Navigazione articoli

Previous
Next

Ricerca

Categorie

  • Casi di Successo (5)
  • ChangeLog (13)
  • Eventi (3)
  • News (122)

Post recenti

  • Tutto in PLOT: centralizza i canali e rendi visibile il tuo processo
  • L’ultima notizia è che con PLOT finisce l’era dei “cercatori di email”
  • Perché scegliere un software “chiavi in mano” come PLOT di Leanbit?

Tags

Agile Automazione Back Office Contact Center Customer Service Digital Transformation Efficienza Glossario IoT Leanbit Organizzazione People First PLOT Processi Digitali Riduzione Costi Tech Tecnologia Utile

Related posts

News

Tutto in PLOT: centralizza i canali e rendi visibile il tuo processo

13/10/2025 Leanbit Team Commenti disabilitati su Tutto in PLOT: centralizza i canali e rendi visibile il tuo processo

Leanbit PLOT centralizza canali e workflow in un’unica piattaforma intuitiva: tutto sotto controllo, sempre aggiornato, sempre condiviso.

News

L’ultima notizia è che con PLOT finisce l’era dei “cercatori di email”

06/10/2025 Leanbit Team Commenti disabilitati su L’ultima notizia è che con PLOT finisce l’era dei “cercatori di email”

Da “cercatori di email” a professionisti organizzati: con PLOT di Leanbit tutto è tracciato, visibile e sotto controllo. Scopri come semplificare il lavoro.

News

Perché scegliere un software “chiavi in mano” come PLOT di Leanbit?

29/09/2025 Leanbit Team Commenti disabilitati su Perché scegliere un software “chiavi in mano” come PLOT di Leanbit?

PLOT di Leanbit è il software chiavi in mano per commerciali e customer service: in cloud, rapido da attivare e senza IT. Semplifica, organizza, fa crescere.

PLOT, il software che accelera e ottimizza ogni azione commerciale, con qualsiasi strumento tu usi.

prodotti
  • PLOT prodotti
  • contact center
  • IoT
  • agile planner
resources
  • newsroom
  • condizioni generali NOSCO
company
  • this is us
stay connected to PLOT


    © Leanbit Srl P.IVA IT04876240286 | all rights reserved

    • Cookie Policy
    • Privacy Policy