Architettura Web scalabile

Che cos'è la scalabilità?
La scalabilità è la proprietà desiderabile di un sistema, rete o processo, che indica la sua capacità di reagire e adattarsi senza perdere qualità, o di gestire la crescita continua del lavoro in modo fluido, per essere preparati a crescere senza perdere qualità nei servizi offerti .
Si potrebbe dire qual è la capacità del nostro sistema di supportare un carico di lavoro maggiore con modifiche o estensioni ragionevoli in termini di costi, tempi, tempi e complessità.
Tipi di scalabilità
In generale si può parlare di ridimensionamento verticale e orizzontale o di una combinazione di entrambi.

Ridimensionamento verticale


Consiste sostanzialmente nell'aumentare la capacità di uno o più elementi specifici della nostra architettura, ad esempio espandere la memoria del nostro server centrale, o sostituire le CPU con altre più veloci. In sintesi, aumenta le capacità del server, cosa molto comune quando utilizziamo la virtualizzazione e diciamo che in quel momento il server avrà il 30% di RAM disponibile.

Ridimensionamento orizzontale


È quello che spiegheremo nel dettaglio nel tutorial, si basa sull'aumento del numero di nodi che svolgono lo stesso compito, utilizzando diversi tipi di pianificazione, ad esempio se abbiamo un server web saturo, ne aggiungiamo un altro per bilanciare il carico.
Tipi di architettura web basati su livelli.
Si parlerà di architetture applicabili con sistemi linux, utilizzando strumenti open-source si passerà dalle più basilari ad alcune abbastanza avanzate offrendo scalabilità orizzontale e resistenza ai guasti, tutte queste architetture possono essere applicate in qualsiasi PaaS o con la propria infrastruttura.

1. Architettura a un livello


È il più semplice di tutti dove c'è un solo server con Apache e MySQL a cui è possibile accedere da remoto. È molto comune in pagine con poco margine di visite o ambienti di test, non offre alcun margine di tolleranza al fallimento ed è difficile usarlo per crescere in orizzontale.

2. Architettura a due livelli


Questa volta abbiamo separato il database dal server web offrendo un po' di tolleranza agli errori. In questo modo, se il database fallisce, il web server può offrire contenuti in modo statico che non dipende dal database. E nel caso in cui il server Web non funzioni, possiamo comunque accedere alle informazioni sollevando nuovamente un nuovo server Web. Il design offre diversi difetti in quanto non è un design molto scalabile.

3. Architettura a tre livelli


Questa volta iniziamo a utilizzare un bilanciatore del carico che riceverà tutte le richieste degli utenti. Questa volta offriamo un design più scalabile in modo che se il nostro carico aumenta possiamo aggiungere più server Web e scalare. Possiamo persino applicare la scalabilità automatica in modo che i server Web vengano aggiunti automaticamente a un determinato livello di carico o in un'ora di punta. Il problema con questo design è che possiamo saturare il nostro database.

4. Architettura a quattro livelli


Ora utilizziamo un bilanciatore del carico e un memcached che rendono il sistema più scalabile. Con questo design possiamo aggiungere tutti i database e i server Web necessari oltre a offrire la tolleranza ai guasti. Possiamo dividere il carico tra i database con CASSANDRA offrendo un'implementazione multi-nodo. Questo design è molto più complesso, ma aggiungo una tolleranza ai guasti molto maggiore e la capacità di scalare tutti i suoi livelli.

5. Architettura a cinque livelli


Il contenuto di una pagina web può essere suddiviso in statico e dinamico. Ad esempio dividiamo il livello web in un server Apache e un altro con applicazioni JAVA che eseguono Jetty o JBoss. Apache fornisce il contenuto statico mentre il server delle applicazioni gestisce il contenuto dinamico o al volo. Un esempio di ciò può essere la sezione FAQ di un sito Web di supporto, poiché è semplicemente un contenuto statico, può essere gestito da APACHE / NGINX.

INGRANDIRE

6. Architettura a sei livelli


Possiamo essere un po' più eleganti e aggiungere una rete di distribuzione dei contenuti (CDN), o ciò che in AWS è noto come Amazon CloudFront CDNAd esempio, abbiamo un sito Web di e-learning e i nostri utenti scaricano le guide in PDF o video dal nostro sito Web. Possiamo risparmiare tutta quella banda dedicata ai download, offrendola da un CDN che se ne occupa, il resto del web può girare sulla nostra infrastruttura.

INGRANDIRE

ConclusioniAbbiamo visto architetture multi-tier che possono essere applicate, a seconda del traffico web. È consigliabile creare architetture pensando al futuro, in grado di scalare e mantenere la fault tolerance, evitando collassi sul web per mancanza di risorse o guasto di un nodo indispensabile. Creando alcuni di questi design insieme ad altri consigli come backup e distribuzioni automatiche, possiamo offrire un sito Web con un tempo di attività con tolleranza ai guasti di 99,9.Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave