Il database è uno dei componenti chiave di ogni applicazione. Le moderne applicazioni cloud devono gestire un ingente traffico e hanno bisogno di database ad alte prestazioni per gestire grandi quantità di dati in un tempo ragionevole. In questo scenario sono emersi database come MongoDB che offrono una vasta gamma di soluzioni, praticamente per ogni settore e caso d’uso.
I dati archiviati sul database spesso devono essere condivisi con diversi servizi e applicazioni. Questa condivisione è generalmente in carico a un servizio dedicato che legge i dati dal database e li espone in diversi modi, ad esempio via API. Questo tipo di servizio è generalmente chiamato CRUD service, e verrà spiegato nel dettaglio più avanti.
In Mia‑Platform ci siamo affidati a MongoDB da diversi anni, perciò abbiamo creato un CRUD Service appositamente studiato per comunicare con MongoDB. Il nostro CRUD Service per MongoDB è stato ben recepito dai nostri clienti, e nel corso del tempo abbiamo continuato a migliorarlo. Adesso, dopo diversi anni di funzionamento in ambienti di produzione in vari settori, abbiamo deciso di rilasciarlo in open‑source in modo che chiunque possa beneficiarne.
In questo articolo forniremo una spiegazione generale di cosa sono i CRUD services, elencheremo le principali funzionalità e i vantaggi del CRUD Service sviluppato da Mia‑Platform, e illustreremo perché la partnership con MongoDB è stata fondamentale per questo progetto.
Mia‑Platform e MongoDB
La sinergia tra Mia‑Platform e MongoDB consente agli utenti di creare rapidamente moderne applicazioni cloud‑native, garantendo al contempo la migliore esperienza possibile. Entrambi sono costruiti da sviluppatori per sviluppatori. Mentre Mia‑Platform Console fornisce tutti gli strumenti necessari per progettare, sviluppare e rilasciare la tua applicazione, MongoDB si occupa dei dati e della loro gestione.
MongoDB offre un database ad alte prestazioni che ci ha permesso di costruire uno strumento utilissimo e potente come Mia‑Platform Fast Data. Per questo siamo soliti consigliare caldamente MongoDB ai nostri clienti: la sua affidabilità e velocità aiuta le aziende di qualunque settore a scalare ed evolversi velocemente.
Cos’è un CRUD Service
Come anticipato, un CRUD service espone i dati di un database, solitamente via API. L’acronimo CRUD è formato dalle parole Create, Read, Update e Delete, che sono le azioni che possono essere eseguite sulle risorse usando, ad esempio, i rispettivi metodi HTTP (POST
, GET
, PUT
, DELETE
). Grazie a un CRUD Service altri servizi all’interno dell’organizzazione possono accedere a uno specifico database senza doverne conoscere le specifiche.
Senza un CRUD service tutti i servizi che avrebbero bisogno di accedere ai dati dovrebbero essere configurati con tutti i dettagli richiesti per connettersi al database (come ad esempio l’URL, la chiave ID, ecc). Questo può introdurre della complessità aggiuntiva, in quanto alcuni servizi potrebbero dover accedere soltanto a un sottoinsieme dei dati e dovrebbero essere configurati di conseguenza. Inoltre, nel caso in cui si decidesse di cambiare il database (ad esempio passando da un’istanza on‑premise di MongoDB a MongoDB Atlas) bisognerebbe aggiornare le informazioni su ogni singolo servizio.
Tramite un CRUD Service il database è disaccoppiato in modo efficace dai servizi e dalle applicazioni. Invece di avere complesse istruzioni per interagire direttamente con il database, i servizi devono soltanto eseguire una semplice chiamata HTTP al CRUD Service, che inoltrerà la richiesta al database e fornirà una risposta. Questo permette anche di utilizzare strumenti come Rönd, che consente di eseguire controlli di sicurezza e di definire le query prima che la richiesta arrivi al CRUD Service. Rönd è un progetto open‑source rilasciato e mantenuto da Mia‑Platform e distribuisce l’applicazione di policy di sicurezza sulle API. Inoltre, permette di filtrare i dati o le proprietà delle risposte: in questo modo è possibile personalizzare facilmente il sottoinsieme di dati a cui ciascun servizio può accedere, semplicemente assegnando ogni servizio a un particolare ruolo o gruppo.
Per ragioni di sicurezza, per esporre dati all’esterno dell’organizzazione è raccomandato l’utilizzo di un API Gateway. Qui sotto forniamo una rappresentazione grafica di un CRUD Service all’interno di un’architettura di esempio.
Le caratteristiche principali del nostro CRUD Service
Adesso che è più chiaro cosa sono i CRUD service, possiamo spiegare meglio le funzionalità particolari del nostro servizio.
Il nostro CRUD Service è progettato appositamente per interagire con MongoDB ed è scritto in JavaScript e TypeScript. Lo scopo è astrarre le collection (cioè un insieme di documenti) di MongoDB e di esporle tramite API RESTful in modo semplice, scalabile e sicuro. Data la sua grande flessibilità il CRUD Service può essere implementato in ogni genere di prodotto.
I vantaggi del nostro CRUD Service
Il CRUD Service garantisce diversi benefici e vantaggi, ed è una delle ragioni principali per la quale abbiamo deciso di rilasciarlo open‑source. Elenchiamo qui sotto alcune delle sue principali funzionalità:
- Su misura per le collection di MongoDB: come menzionato, il nostro CRUD Service è progettato appositamente le collection di MongoDB. Quindi se hai già un’istanza di MongoDB nella tua applicazione, puoi integrare facilmente il nostro CRUD Service.
- Supporto per diverse versioni di MongoDB: il nostro CRUD service è in grado di supportare le ultime tre versioni, ovverosia MongoDB 4.0, MongoDB 5.0 e MongoDB 6.0.
- Puoi aggiungere uno schema alle collection di MongoDB come in un database relazionale, se necessario.
- Puoi sfruttare le pipeline di aggregazione: con il nostro CRUD Service puoi definire delle pipeline di aggregazione per creare delle view di MongoDB, degli oggetti consultabili che non persistono sul disco e che sono il risultato di un’aggregazione di dati da altre sorgenti.
- Crittografia client‑side: il nostro CRUD Service può essere configurato per aumentare la privacy dei tuoi dati, crittografandoli prima di salvarli su MongoDB.
- Sanitizzazione delle query: prima di inviare una query a MongoDB, il CRUD Service verifica che non corromperà il database.
- Supporto per l’audit dei log: il nostro CRUD Service può creare log per ogni singolo documento, assicurando un alto livello di governance.
- Supporto per l’autoscaling: il CRUD Service può essere configurato per scalare automaticamente a seconda delle necessità.
- Paginazione delle query automatica: non c’è bisogno di gestire manualmente la paginazione delle query perché il CRUD Service lo fa in automatico.
- Integrazione semplice con altri strumenti open‑source: il nostro CRUD Service è già integrato con Prometheus per garantire un monitoraggio semplice, e grazie al suo design componibile può essere integrato anche con strumenti come Rönd, per proteggere le API esposte.
- È utilizzabile in produzione e testato da anni di utilizzo in diversi settori industriali.
- Poiché è un componente core di Mia‑Platform Console, è costantemente mantenuto e aggiornato da un team di professionisti.
Conclusione
Se tutto questo ti ha incuriosito, non vediamo l’ora di saperlo! Il nostro CRUD Service è la migliore soluzione che puoi trovare per lavorare con MongoDB, e ora che è open-source puoi provarlo tu stesso.
Dai un’occhiata alla repository GitHub: la documentazione è invece disponibile a questo link. Inoltre, invitiamo caldamente a contribuire attivamente al progetto e a partecipare nella community. Ecco una breve lista di cose che puoi fare per contribuire:
- Controlla le issue aperte: puoi rivolerne una, oppure aprirne una nuova se non trovi quello che stavi cercando.
- Se hai qualche domanda, falla nelle GitHub Discussions: risponderemo quanto prima, e la risposta potrebbe essere utile anche a molti altri utenti.
- Migliora la documentazione: puoi correggere eventuali refusi, espandere gli esempi e riscrivere per maggior chiarezza. Ogni aiuto è apprezzato e benvenuto!
- Infine, se ti piace il progetto dagli una stella su GitHub!
Da questo momento il CRUD Service si aggiunge agli altri progetti open-source mantenuti e supportati da Mia‑Platform. Per scoprire di più a riguardo, dai un’occhiata a questa pagina.
© MIA s.r.l. Tutti i diritti riservati