• Passa alla navigazione primaria
  • Passa al contenuto principale
  • Passa alla barra laterale primaria
  • Passa al piè di pagina
Glue Labs

Glue Labs

Trasformiamo le tue idee in prodotti digitali di successo!

  • HOME
  • SOLUZIONI
  • NEWS
  • PRODOTTI
  • CONTATTI
  • CASE STUDY

Come scalare Stateful System: una possibile architettura basata sul consenso

Writer, Reader, Proxy e Raft per la realizzazione di autoscaling in Stateful System

L’attuale tendenza alla segregazione delle componenti ed alla scalabilità si traduce nell’introduzione della difficoltà di mantenere operativi “stateful system“, vale a dire sistemi che hanno consapevolezza dello stato ed hanno tutte le informazioni per gestirlo e mantenerlo. Nella pratica uno “stateful system” ha spesso database condivisi, sempre più complessi a causa della necessità di scalabilità e di archiviazione di qualsiasi informazione al fine di conoscere lo stato.

Mantenendo alcune componenti, di fatto, monolotiche per poterne condividere lo stato ci si espone a diversi rischi:

  • quasi certi maggiori costi perchè sono necessarie enormi risorse per mantenere l’operatività;
  • esposizione a possibili attacchi di tipo Denial of Service(DoS);
  • scarsa flessibilità dell’architettura.

Contattaci subito e senza impegno per superare questi rischi.

Autoscaling Stateful System: i problemi da affrontare

Quando si affronta l’implementazione della scalabilità negli statetul system occorre rispondere a domande come: dove applico la scalabilità? Come effettuo la scalabilità? Come muovo i dati tra i servizi scalati? Come i vari nodi possono raggiungere il consenso e quindi la parifica dei dati?

In pratica, se vuoi realizzare l’autoscaling negli stateful system, devi affrontare i seguenti problemi:

  • consenso: qualsiasi sistema distribuito che archivia uno stato deve essere d’accordo con quale sia il nuovo stato valido. E’ un problema noto e sono nati algoritmi come Ark, Raft e BDR che sono rispettivamente le tecnologie di costruzione del consenso di MongoDB, Redis e PostgreSQL.
  • autoscaling: seppur numerosi provider offrano l’autoscaling con un click, nel caso degli stateful system non ti è possibile mantenere completamente uno statetul system perchè l’autoscaling è legato alle risorse computazionali e non ai dati;
  • tempi per la data migration: un modo comune di scalare è quello di aggiungere un nuovo nodo, per es. in Kubernetes, ma quando si parla di stateful system è necessario considerare i tempi indispensabili affinchè i dati si sincronizzino e cosa accade quando la quantità di dati è enorme.
  • gestione della domanda: la scalabilità si attiva in base al numero di richieste che potrebbero essere costanti e graduale ma anche repentine ed enorme sia per un picco sia per un attacco DoS così potendo eventualmente generare indisponibilità del servizio.
  • cloud solution: buttarsi capo e piedi in un particolare cloud provider pensando che sia la soluzione si traduce, di fatto, in un lock-in che nello scenario strategico attuale non è mai una soluzione ideale.

Contattaci subito e senza impegno per costruire uno stateful system.

Una possibile soluzione all’autoscaling degli Stateful System

Partendo dal concetto base che la scalabilità vada costruita sia in maniera verticale(aumentare le risorse per es. maggiore potenza della CPU) sia orizzontale( aggiungere risorse per es. aggiungere un nuovo nodo) da pochi fino a migliaia di nodi in un cluster, è possibile costruire una soluzione agnostica, cioè indipendente dal tipo di dati da usare( JSON, serialized data, stream, blobs, ecc…) attraverso la creazione di:

  • Writer: un nodo che ha il compito di scrivere i nuovi stati ed è responsabile della replica dei dati. Il Writer è il leader del consenso e costruisci il concetto di sharding, cioè mantiene segmenti che insieme fanno il “tutto”;
  • Reader: un nodo che ha il compito leggere i dati e fornirli, crea connessioni multiple con il Writer leader ;
  • Proxy: un nodo che fornisce servizi anche per compiti non legati a scrivere e leggere dati. Di fatto è un nodo che funziona da gateway e load balancer che invia le richieste al Writer ed al Reader aggregando le risposte e fornendole al cliente. Viene replicato in caso di esigenze ;
  • Trigger non legato alle risorse ma alle risposte in modo garantire la risposta e non la risorsa(un concetto complesso in quanto una CPU che lavora al 99% potrebbe avere risposte in linea con la Customer Experience(CX) perchè magari fa un ottimo uso di cache e servizi avanzati).
  • Algoritmo di consenso come Raft in modo che il leader sia sempre unico e poter avere più leader che costruiscono il consenso su chi debba scrivere i dati.

E’ un Design dell’architettura complesso che però ti permette di costruire un sistema stateful resiliente e non ha alcun lock-in con i provider quindi avendo la possibilità di essere completamente integrato nel tuo scenario e trasferito dove reputi opportuno anche On-Premise.

Contattaci subito e senza impegno per realizzare un Proof of Concept(PoC).

Glue Labs e le Architetture IT

Siamo partner di Google Cloud e Vonage, abbiamo progettato ed implementato architetture complesse ed integrate grazie a Cloud Engineer e Solution Architect in ambiente Offline, On-Premise e Cloud. Grazie alle competenze specialistiche maturate in tantissimi settori e con numerosi Clienti ti forniamo assistenza e supporto, eroghiamo formazione avanzata e realizziamo architetture che ti permettono di gestire i tuoi dati in maniera stateful con garanzia 12 mesi da qualsiasi bug. Contattaci subito e senza impegno per maggiori informazioni.

Continua la lettura

  1. Integrazione di PagoPA con Magento, Prestashop e WooCommerce e qualsiasi EMS e CMS
  2. Un’architettura per piattaforme di videoconferenza per migliaia di partecipanti
  3. L’alternativa per Jenkins: come è possibile fare meglio nel CI/CD

Categoria: Articoli Tags: Architecture Design, BDR, Cloud Architecture, kubernetes, MongoDB, PostgreSQL, Progettazione Architetture IT, raft, redis, stateful, stateless

Barra laterale primaria

Cosa facciamo

  • Content Strategy
  • E-Commerce
  • Formazione avanzata Web, Mobile & Cloud
  • IoT – Sviluppo e Integrazione
  • Micro Live Learning(MLL) Web, Mobile & Cloud
  • Project Management Prince2
  • PushAPE
  • Sicurezza ICT
  • Software Aziendali
  • Sviluppo Mobile App
  • Sviluppo, Supporto, Assistenza Tecnica e Hosting Google Cloud
  • System Integration
  • Web Application
  • Web Design

Contatti

Scrivici dal form di contatto

Tel +39 06 56549766
Fax +39 06 21122581
Mail: info@glue-labs.com
Pec: gluelabs@legalmail.it

Dove siamo

Roma: Piazza Don Sturzo 15
Milano: Via Lazzaretto 19
Torino: Via San Domenico 28
Altamura: Via Maggio 1648 24

"*" indica i campi obbligatori

Nome*
Questo sito è protetto da reCAPTCHA e si applicano le Normative sulla Privacy e i Termini di Servizio di Google.
Inviando i tuoi dati accetti le condizioni sulla Privacy. Li useremo per rispondere alle tue domande e richieste.
Consenso*
Questo campo serve per la convalida e dovrebbe essere lasciato inalterato.

Siamo parte di

La nostra Agenzia di Marketing

Footer

Partnership



Rimaniamo in contatto

Iscriviti alla nostra newsletter

Nome
Questo campo serve per la convalida e dovrebbe essere lasciato inalterato.

Soluzioni

  • Corso Intelligenza Artificiale per lo sviluppo di software
  • Piani Enterprise di Consulenza Tecnica in ambito Web, Mobile e Cloud
  • Corso Rust Base e Avanzato
  • Integrazione di Passkey di Google nelle Web e Mobile Application
  • Consulenza, assistenza e supporto di Cloud Engineer
  • Sportello virtuale con il sistema Jitsi
  • Time & Material – Web Designer
  • Corso Angular 16
  • Time & Material personale IT
  • Assistenza, Supporto e Sviluppo NestJS e Node.js

Articoli

  • Da Cloud Hosted a Cloud Native Application: le funzionalità da aggiungere
  • Gadget NFC: come gestire il cliente(App e Pagamenti) con braccialetti e ciondoli
  • Come gestire Java Full-Stack Application: Hilla
  • Una possibile architettura software per implementare “by Default” il GDPR nelle applicazioni
  • Come ridurre la latenza del 60%: l’esperienza di Linkedin
  • Cosa sono ed a cosa servono Technology Radar, Standard Tecnologici interni ed Architectural Decision Record(ADR)
  • KEDA: un AutoScaler Event-Driven per Kubernetes
  • Le novità di NestJS 10
  • Cos’è e come funziona la nuova metrica Interaction to Next Paint(INP) delle Core Web Vitals
  • Come creare e mostrare video aerei 3D: Aerial View API

Le nostre sedi

  • Roma, Piazza Don Sturzo 15
  • Milano, Via Lazzaretto 19
  • Torino, Via San Domenico 28
  • Altamura, Via Maggio 1648 24

Contatti

  • Tel. +39 06 87811067
  • Fax +39 06 99335373
  • glue-labs@legalmail.it
  • info@glue-labs.com
  • Facebook
  • LinkedIn
  • Twitter

Scarica app da App StoreScarica app da Play Store


Glue Labs © 2011–2023 | Copyright | Privacy Policy | Codice Etico | Company Info | Cookie Policy

Gestisci Consenso Cookie
Usiamo cookie per ottimizzare il nostro sito web ed i nostri servizi.
Funzionale Sempre attivo
La conservazione tecnica o l'accesso sono strettamente necessari al fine legittimo di consentire la fruizione di uno specifico servizio esplicitamente richiesto dall'abbonato o dall'utente, o al solo fine di effettuare la trasmissione di una comunicazione su una rete di comunicazione elettronica.
Preferenze
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistiche
L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente a fini statistici anonimi. Senza un mandato di comparizione, il rispetto volontario da parte del tuo provider di servizi Internet o registrazioni aggiuntive da parte di terzi, le informazioni archiviate o recuperate solo per questo scopo non possono essere generalmente utilizzate per identificarti. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
L'archiviazione tecnica o l'accesso è necessario per creare profili utente per inviare pubblicità o per tracciare l'utente su un sito Web o su più siti Web per scopi di marketing simili.
Gestisci opzioni Gestisci servizi Gestisci {vendor_count} fornitori Per saperne di più su questi scopi
Gestisci preferenze
{title} {title} {title}