# Modelli architetturali

L'architettura rappresenta l'organizzazione strutturale e logica di un sistema, definendo come interagiscono tra loro le sue componenti per raggiungere determinati obiettivi.

Le principali architetture esistenti:

- `Client-Server`: in questo modello esistono due ruoli ben definiti: il `client`, che richiede un servizio, e il `server`, che lo fornisce. Questa architettura è caratterizzata da una forte centralizzazione, dove il server diventa il punto focale per l'elaborazione delle richieste. Un notevole svantaggio è la limitata scalabilità: all'aumentare del numero di client, cresce il carico sul server
- `Peer-to-Peer` (P2P): non esistono ruoli fissi come client o server. Ogni nodo della rete è in grado sia di richiedere che di fornire servizi, contribuendo così a una distribuzione del carico più equilibrata. La scalabilità è intrinseca al sistema: con l’aggiunta di nuovi nodi, si incrementano sia le risorse disponibili che la capacità di elaborare richieste, garantendo una maggiore resilienza
- `Ibrida`: questa architettura combina gli aspetti più vantaggiosi dei modelli client-server e peer-to-peer. In un sistema ibrido, alcune funzioni possono essere centralizzate mentre altre vengono delegate ai nodi distribuiti
