Passa al contenuto principale

Architettura

Architettura e Scelte Progettuali

Abbiamo optato per l'utilizzo della libreria paho.mqtt.client per gestire la comunicazione con il broker MQTT, una scelta guidata dalla necessità di avere un sistema di messaggistica leggero e adatto a scenari in cui la larghezza di banda e l'efficienza sono critiche. Il broker MQTT, identificato dall'indirizzo pissir.colnet.rocks e operante sulla porta 1883, funge da ponte per la gestione e la distribuzione dei messaggi tra i vari componenti del sistema.

Le operazioni sul database sono state implementate in modo tale da garantire transazioni sicure e atomiche. In caso di errori o eccezioni, il sistema annulla automaticamente la transazione per mantenere l'integrità dei dati.

Abbiamo optato per un'architettura basata su Python e utilizzando il framework FastAPI per la realizzazione del server. FastAPI offre un meccanismo asincrono e una gestione nativa delle richieste HTTP, oltre alla generazione automatica della documentazione OpenAPI.

Il database scelto è relazionale e abbiamo utilizzato un sistema di connessioni stateful, accedendo direttamente al database attraverso l'oggetto cnx che fa parte dello stato della richiesta (request.state.db_connection).

L'implementazione gestisce gli errori attraverso il meccanismo delle eccezioni HTTP. In caso di errore durante una query, viene sollevata un'eccezione HTTPException con un codice di stato HTTP 500.