AnnuncioTi presentiamo MongoDB 8.0, il MongoDB più veloce di sempre! Leggi >
AnnuncioVoyage AI si unisce a MongoDB per potenziare applicazioni AI più accurate e affidabili su Atlas. Scopra di più >

Spiegazione dello stack farm

Oltre agli altri stack, come MERN e MEAN, un altro stack sta rapidamente guadagnando popolarità: lo stack FARM.

Lo stack FARM ha una curva di apprendimento simile allo stack MEAN e allo stack MERN grazie all'utilizzo di tecnologie come MongoDB e React. Utilizzando una combinazione di FastAPI, React e MongoDB, migliora notevolmente le prestazioni, la velocità e la facilità di sviluppo delle applicazioni.

Sommario:

Spiegazione dello stack FARM

Lo stack FARM è uno stack tecnologico che riunisce quattro delle tecnologie più popolari:

  • FastAPI: un framework back-end basato su Python
  • React — libreria JavaScript front-end
  • MongoDB — il database NoSQL a schema flessibile

Stack tecnologico

Un stack tecnologico è uno stack di varie tecnologie front-end, back-end e di database che lavorano insieme per creare un'applicazione end-to-end, come un'applicazione web. Uno stack tecnologico può essere predefinito, come gli stack MEAN, MERN e FARM, o personalizzato a seconda dei casi d'uso aziendali specifici.

Lo stack FARM è uno stack tecnologico completo che utilizza il front-end (React), il back-end (Fast API) e il database (MongoDB). Un buon stack tecnologico deve essere scalabile, conveniente e ottimizzato per la velocità e le prestazioni.

In genere, il front-end (il lato rivolto all'utente/cliente) di un'applicazione è costruito con tecnologie come HTML, CSS e JavaScript. React è una libreria basata su queste tecnologie che offre un'esperienza utente e sviluppatore migliorata.

Il back-end è costituito da un server web e dal linguaggio di programmazione lato server. È qui che risiede la logica di business dell'applicazione. Nello stack FARM, utilizziamo FastAPI, un framework web velocissimo basato sul framework Starlette.

FastAPI sta rapidamente guadagnando terreno grazie alle sue straordinarie funzionalità, come la convalida dei dati integrata e la documentazione API interattiva automatica. Fast API si basa su ASGI (Asynchronous Server Gateway Interface), il che significa che supporta la programmazione asincrona, rendendola incredibilmente veloce.

Il layer inferiore dello stack è il layer del database che funge da hub di archiviazione per tutti i dati. A causa della natura dei dati odierni, che possono provenire da più fonti, essere in formati diversi ed essere di grandi dimensioni, abbiamo bisogno di un database in grado di gestire tali dati non strutturati con flessibilità.

MongoDB, il database NoSQL più popolare, offre la piattaforma perfetta per archiviare, elaborare, analizzare e recuperare i big data che le aziende desiderano acquisire. Il ricco linguaggio di query, le aggregazioni e molte altre funzionalità di MongoDB assicurano che la tua applicazione ottenga esattamente i dati che stai cercando, evitando agli sviluppatori di scrivere codice per manipolazioni e trasformazioni estese sui dati.

Funzionalità che differenziano lo stack FARM

Lo stack FARM ha una combinazione di potenti tecnologie che consentono un rapido sviluppo, possono gestire facilmente più connessioni simultanee tramite coroutine e sono facili da apprendere.

Come funziona lo stack FARM?

Lo stack FARM è semplice da capire con una curva di apprendimento minima. Devi solo avere familiarità con JavaScript, Python e MongoDB e puoi creare facilmente progetti. Queste tecnologie sono utili anche per molti altri stack e aziende, quindi impararle potrebbe rivelarsi essenziale per la tua carriera.

Un utente può eseguire una delle seguenti operazioni sull'applicazione:

Richiesta HTTP

  • POST
  • GET
  • PUT
  • ELIMINA

Operazione CRUD corrispondente

  • C = Crea/Inserisci
  • R = Lettura
  • U = Aggiorna
  • D = Elimina

 

Ogni volta che l'utente inserisce una richiesta HTTP per uno di questi, React costruisce la richiesta con i parametri necessari e la invia al server di back-end. Nel back-end, FastAPI indirizza la richiesta al metodo appropriato e richiama il metodo del database appropriato per eseguire l'operazione. Una volta eseguita correttamente la query a livello di database, la risposta viene ricevuta ed elaborata dal back-end e inviata al front-end React. React visualizza quindi il messaggio di successo/fallimento all'utente.

Front-end di React

La libreria React JS accelera lo sviluppo di applicazioni front-end pronte per la produzione fornendo molte utilità e componenti comuni pronti all'uso che possono essere riutilizzati. Come parte dello stack FARM, React viene utilizzato per inviare richieste HTTP al back-end e visualizzare la risposta del back-end al front-end.

React JS utilizza un DOM virtuale, che aggiorna solo le parti modificate dell'applicazione e non l'intera struttura ad albero. Ciò rende l'applicazione veloce. Un'altra caratteristica degna di nota è la sintassi JSX (JavaScript Extension), attraverso la quale è possibile aggiungere elementi JavaScript all'interno di tag HTML. Pertanto, qualsiasi modifica del valore dell'elemento si riflette immediatamente senza la necessità di un aggiornamento o di un riavvio del server.

Si consideri una semplice richiesta HTTP effettuata da un utente per aggiornare il proprio numero di cellulare. React memorizza i dati inseriti dall'utente utilizzando un semplice hook (useState).

Questi dati verranno inviati al layer dell'applicazione utilizzando la richiesta PUT in formato JSON.

Poiché lo stack FARM supporta la programmazione asincrona, possiamo utilizzare la libreria JS di axios che è basata su promesse e supporta tutti i browser. Utilizzando axios, possiamo astrarre la complessità della creazione e della configurazione delle richieste HTTP.

Sebbene React accetti molti formati di dati, il formato JSON è il preferito in quanto è leggero e utilizza meno larghezza di banda.

FastAPI

FastAPI è un framework web asincrono basato su Python. Nello stack FARM, Fast API funge da middleware che elabora le richieste HTTP ricevute dall'app React e invia la risposta. FastAPI viene eseguito sul server uvicorn, basato sulle specifiche del server ASGI per server web asincroni.

Fast API sfrutta le operazioni di I/O senza blocchi per gestire più carichi simultanei tramite coroutine. Ad esempio, se sono in arrivo più richieste di aggiornamento di un numero di cellulare su un portale online, invece di bloccare le risorse, FastAPI creerà una coroutine, dove può elaborare parallelamente più richieste.

Supponiamo che vi siano cinque richieste simultanee di aggiornamento di un numero di cellulare. Se ognuno di essi dovesse essere elaborato uno per uno, sarebbe una perdita di tempo e CPU. Utilizzando la parola chiave async dalla libreria asyncio di Python, possiamo iniziare a elaborare le richieste in parallelo. Supponiamo che la prima richiesta sia in attesa dei risultati di recupero (ricerca del numero di cellulare da aggiornare). Questo tempo di attesa può essere utilizzato per avviare la seconda richiesta e così via. In questo modo, ogni richiesta è completamente indipendente dalle altre e non vi è alcun blocco o attesa.

Nella suddetta coroutine, main() è il punto di ingresso del programma, dopodiché ogni richiesta viene elaborata in modo asincrono come una coroutine separata.

Il framework web fornito da FastAPI fornisce:

  • Supporto completo per la programmazione asincrona, con prestazioni elevate.
  • Iniezione delle dipendenze, ovvero la dichiarazione delle dipendenze del progetto e l'iniezione durante il runtime.
  • Convalida e serializzazione dei dati utilizzando la libreria pydantic.
  • Programmazione asincrona utilizzando la libreria python asyncio.
  • Documentazione API automatica per gli endpoint API utilizzando Swagger.
  • Digita suggerimenti e annotazioni.

Possiamo usare decoratori Python (@app.get, @app.put e così via) per definire le richieste HTTP e i percorsi di routing.

Successivamente, è possibile accedere ai dati di input utilizzando il percorso o i parametri di query della richiesta. L'utilizzo della libreria pydantic si occuperà della convalida dei dati.

È quindi possibile creare la funzione asincrona che aggiorna il numero di cellulare nella tabella del database MongoDB:

In un caso reale, molto probabilmente vorrai aggiornare il numero di cellulare in base a qualche criterio, come un customer_id. In tal caso, puoi aggiungere un parametro di percorso nell'endpoint FastAPI (URL di routing):

La funzione asincrona per aggiornare il numero di cellulare prenderà customer_id insieme al numero di cellulare da aggiornare, come parametro:

Il "risultato" è un documento BSON, che viene automaticamente convertito in un dizionario Python dal motore del driver asincrono. FastAPI lo converte quindi in una risposta JSON.

Puoi anche creare una risposta personalizzata in base al risultato, nel codice FastAPI.

L'applicazione React utilizza gli hook per impostare uno stato variabile, quindi puoi semplicemente impostare la risposta nella variabile e React la visualizzerà sulla pagina front-end:

FastAPI utilizza le dipendenze per fornire supporto integrato per la gestione delle autorizzazioni e il controllo degli accessi basato sui ruoli, ad esempio per l'autenticazione di un utente o l'autorizzazione dell'accesso a un percorso.

Interfaccia ASGI (Asincrono Server Gateway Interface)

ASGI fornisce le specifiche per creare applicazioni e server asincroni in Python. Ciò consente alle applicazioni di eseguire operazioni di I/O come query di database o richieste di rete senza bloccare altre operazioni. ASGI è progettato per gestire connessioni di lunga durata oltre alle consuete richieste e risposte HTTP. Questa funzionalità li rende utili per le applicazioni in tempo reale, dove è necessaria la comunicazione bidirezionale tra client e server.

Server web Uvicorn

Uvicorn è un server web asincrono basato sulle specifiche ASGI. Fornisce prestazioni elevate ed è particolarmente adatto per gestire in modo efficiente carichi applicativi elevati. Gli sviluppatori Python che utilizzano Fast API possono utilizzare il server uvicorn per distribuire e gestire le proprie applicazioni. Uvicorn supporta anche i socket web. FastAPI è compatibile con pochi altri server, come Hypercorn e Quart, ma uvicorn è preferito per le sue prestazioni e stabilità.

Driver per motori asincroni

motor è un driver asincrono per connettere FastAPI (Python) e MongoDB. È simile al driver pymongo ma per applicazioni asincrone. Il motore funziona bene anche con la versione community o enterprise del server MongoDB. Per ulteriori informazioni sul motore, visita la pagina della documentazione.

Piattaforma dati MongoDB

MongoDB è il layer di dati che archivia e recupera i dati come richiesto dall'applicazione.

MongoDB è un database di documenti che archivia i dati in un formato simile a JSON noto come BSON (Binary JavaScript Object Notation). Grazie al suo modello di documento, MongoDB offre un'elevata flessibilità nell'archiviazione dei dati e si adatta facilmente a qualsiasi modifica dello schema.

I database MongoDB sono disponibili in varie versioni: il database MongoDB enterprise, il database MongoDB community e il database cloud (Atlas). Con MongoDB Atlas, non è necessario installare nulla. Basta creare un account gratuito e puoi avviare un cluster.

MongoDB offre opzioni efficienti di modellazione dei dati per ottimizzare le prestazioni mantenendo intatte la coerenza e la flessibilità dei dati. Ad esempio, per creare modelli di dati per l'applicazione stack FARM, è possibile definire il carico di lavoro e identificare i diversi tipi di relazioni tra le entità principali: una relazione 1:1, 1:molti o molti:molti. In base a ciò, puoi decidere la struttura del tuo documento. MongoDB segue una semplice regola secondo cui i dati a cui si accede insieme devono essere archiviati insieme. Puoi scegliere di incorporare tutti i dettagli rilevanti di un'entità in un singolo documento, o normalizzare i dati e farvi riferimento utilizzando identificatori (come in un relational database).

MongoDB Atlas è una piattaforma di sviluppo dati cloud che fornisce funzionalità complete per gestire applicazioni moderne — ad esempio, alta disponibilità e tolleranza agli errori integrate, backup e ripristino automatizzati, scalabilità verticale e orizzontale, provisioning, configurazione e patching automatizzati dei server.

Il ricco framework di aggregazione di MongoDB, abbinato alle vaste librerie scientifiche di Python, è più adatto per i casi d'uso dell'AI e dell'apprendimento automatico di oggi, come il rilevamento di frodi, l'analisi dei dati in tempo reale, le raccomandazioni mirate dei clienti, l'analisi del comportamento degli utenti e così via. L'utilizzo di MongoDB Atlas ti consente di accedere a funzionalità aggiuntive come Atlas Search, MongoDB Charts, App Services, connettore per strumenti di BI, data federation, stream processing e molto altro ancora.

Per creare una connessione MongoDB dal back-end FastAPI, è sufficiente impostare l'URL e quindi aprire la tabella:

Una volta stabilita la connessione e ottenuto il database, è possibile utilizzarli per eseguire qualsiasi operazione CRUD utilizzando i metodi appropriati, ad esempio il metodo update_one() che abbiamo utilizzato nella sezione FastAPI.

Puoi creare un'applicazione stack FARM completa utilizzando la nostra applicazione TODO per ricevere indicazioni sul codice end-to-end e sulla configurazione necessarie per creare la tua applicazione.

Generatore di app FastAPI full stack per sviluppatori Python

MongoDB fornisce il generatore di app FastAPI full stack per gli sviluppatori Python. In precedenza, gli sviluppatori Python dovevano integrare manualmente componenti come l'autenticazione, i test e l'integrazione nell'applicazione principale. Il generatore di app FastAPI Full Stack di MongoDB fornisce uno scheletro di app ben strutturato, semplificando così la configurazione iniziale del progetto. Alcune delle funzionalità chiave del generatore di app sono:

  • Uno stack di applicazioni web completo che integra componenti front-end e back-end.
  • Un sistema di autenticazione integrato.
  • Strumenti operativi e di monitoraggio.

Stack FARM vs stack MERN

Sia lo stack FARM che quello MERN utilizzano React e MongoDB che offrono flessibilità e prestazioni elevate. La differenza sta nell'uso di Node.js rispetto a FastAPI e la scelta di uno dei due stack dipende dal caso d'uso aziendale o dalle preferenze personali.

  • Lo stack MERN ha una curva di apprendimento più breve in quanto uno sviluppatore deve solo apprendere e scrivere codice JavaScript sia per il back-end che per il front-end, mentre per lo stack FARM, è necessario imparare anche Python. Inoltre, lo stack MERN offre un'esperienza unificata e una migliore leggibilità e manutenibilità del codice.
  • Node.js gode di un maggiore supporto della community e dispone di una vasta documentazione per un gran numero di casi d'uso e domini.

Detto questo, FastAPI ottiene punteggi molto migliori quando si tratta di analisi dei dati e supporto della scienza dei dati:

  • Python ha un vasto ecosistema di librerie avanzate per attività di data science e machine learning, che semplificano l'aggiunta di pipeline di analytics e di elaborazione dati nelle applicazioni web. Sebbene Node.js supporti queste librerie, non sono esaustive come le librerie Python.
  • Il design intuitivo delle API di FastAPI, la generazione automatica della documentazione OpenAPI e il supporto integrato per la convalida dei dati semplificano lo sviluppo delle API e lo rendono accessibile agli sviluppatori di tutti i livelli. Node.js potrebbe essere difficile da imparare per un principiante a causa dei concetti di programmazione basata su callback e della complessità della gestione delle dipendenze.
  • Mentre Python è rigorosamente tipizzato, JavaScript è liberamente tipizzato, il che potrebbe causare errori di runtime.

Casi d'uso per lo stack FARM

Lo stack FARM è adatto a un'ampia gamma di casi d'uso in vari domini e settori, alcuni dei quali sono elencati di seguito:

  • Creazione di siti Web e pagine Web dinamici e interattivi: sul front-end, React offre agli utenti un'esperienza interattiva e in tempo reale, mentre il back-end FastAPI consente di creare robuste REST API per gestire l'autenticazione, l'autorizzazione e le transazioni. MongoDB, grazie al suo schema flessibile, soddisfa facilmente i requisiti delle applicazioni in evoluzione e le diverse strutture dei dati, ad esempio piattaforme di e-commerce e sistemi di gestione dei contenuti.
  • AI e data analytics: utilizzando la potenza del framework di aggregazione MongoDB e delle librerie Python per la scienza dei dati, lo stack FARM fornisce agli sviluppatori una solida base per creare sistemi per l’elaborazione dei dati, l’analisi in tempo reale, l’estrazione di insight e la generazione di report visivi. Il front-end React può essere utilizzato per dashboard interattivi ed esplorazione dei dati.
  • Applicazioni IoT (Internet of Things): utilizzando React, gli sviluppatori possono creare un'interfaccia fluida per il monitoraggio e il controllo remoti. FastAPI gestisce servizi come l'inserimento dei dati, la comunicazione con i dispositivi e il routing. MongoDB può archiviare i sensor data, i metadati e i log e può essere utilizzato per l'analisi e il rilevamento di anomalie.
  • Applicazioni di chat: le funzionalità di rendering in tempo reale di React consentono una comunicazione fluida e in tempo reale tra l'agente di chat e gli utenti. Le funzionalità di routing e il supporto websocket di FastAPI consentono di gestire le richieste HTTP di autenticazione, messaggistica in tempo reale e comunicazione BIdirezionale. L'architettura flessibile e scalabile di MongoDB lo rende particolarmente adatto per la gestione di dati di chat dinamici e in evoluzione.

Sommario

Lo stack FARM è uno stack tecnologico promettente e offre una potenza di funzionalità per creare applicazioni altamente flessibili, scalabili e performanti. Nei prossimi giorni, ci si può aspettare ulteriori innovazioni e progressi nelle tecnologie, con una maggiore attenzione al miglioramento dell'esperienza e della produttività degli sviluppatori, all'automazione e all'integrazione con altre tecnologie per facilitare nuovi casi d'uso e applicazioni. Per iniziare con lo stack FARM, guarda il tutorial di MongoDB.live.

Domande frequenti

Primi passi con MongoDB Atlas

Prova gratuita
Illustrazione del database.