Come distribuire un web service? Guida passo passo
Questo articolo discuterà webservices, i loro vantaggi, le opzioni di distribuzione di web service e come si confrontano con le API.
Inoltre, imparerai come distribuire un web service di e-commerce sul cloud senza scrivere alcun codice personalizzato!
Contents
- 1 Punti Chiave
- 2 Che cos’è un Web Service?
- 3 Web Service vs. API
- 4 Vantaggi dei Web Service
- 5 Opzioni di Distribuzione dei Web Service
- 6 Come Distribuire un Web Service?
- 7 Conclusione
Punti Chiave
- Comprensione del Ruolo dei Web Services: i web services sono un componente fondamentale dell’infrastruttura digitale moderna, offrendo vantaggi significativi come interoperabilità, indipendenza dalla piattaforma, scalabilità e sicurezza.
- Esplorare le Opzioni di Distribuzione: distribuire web services può essere affrontato in diversi modi, inclusi l’hosting convenzionale, Platform as a Service (PaaS), Containers as a Service (CaaS) e Backend as a Service (BaaS).
- Guida alla Distribuzione di un Web Service nel Cloud: l’articolo fornisce una guida completa su come distribuire un web service di e-commerce utilizzando una piattaforma BaaS senza codice.
Che cos’è un Web Service?
Un web service è un software disponibile su Internet, in genere su Hypertext Transfer Protocol (HTTP). I dati forniti da un web service sono in un formato standardizzato come XML, JSON, SOAP o YAML.
I web services vengono utilizzati per la comunicazione macchina-a-macchina, invece di essere consumati direttamente dall’utente finale.
Ad esempio, il tuo dispositivo mobile utilizza un web service meteo per recuperare le informazioni sulle condizioni meteorologiche e poi le visualizza in un formato piacevole.
Esistono diversi tipi di web services, come Representational State Transfer (REST), GraphQL e gRPC.
Un tipico ciclo di vita di un web service è simile al seguente:
- Un web service è in ascolto su un determinato server a una porta specifica.
- Un client invia una richiesta al web service su quella porta.
- Il web service elabora la richiesta e restituisce una risposta. Prima di elaborare la risposta, il server può anche autenticare e autorizzare la richiesta.
- Il client elabora la risposta.
I web services sono noti per la loro indipendenza dalla piattaforma e dal linguaggio, riusabilità, scalabilità, flessibilità e per il loro basso accoppiamento. Oggigiorno vengono utilizzati da quasi tutte le aziende IT.
Web Service vs. API
Web service e API sono termini simili, ma non dovrebbero essere usati in modo intercambiabile.
In termini semplici, un web service è un’API disponibile esclusivamente su Internet. Ciò significa che tutti i web services sono API, mentre non tutte le API sono web services.
Le API, oltre a essere web services, possono anche svolgere altre funzioni. Ad esempio, interazioni con il sistema operativo, comunicazioni con applicazioni locali e integrazioni tra applicazioni.
Due esempi di API non-web-service sono la Python file system API e la JavaScript DOM API.
Vantaggi dei Web Service
I web services sono un aspetto fondamentale dell’infrastruttura digitale moderna e offrono numerosi vantaggi. Parliamone!
Interoperabilità
Uno dei principali vantaggi dei web services è la loro capacità di facilitare l’interoperabilità tra diversi sistemi e applicazioni.
Aderendo a protocolli standardizzati come HTTP e XML, i web services consentono una comunicazione fluida tra diversi componenti software, indipendentemente dallo stack tecnologico sottostante.
Indipendenza dalla Piattaforma
Un altro grande vantaggio dei web services è che sono completamente indipendenti dalla piattaforma. Possono essere implementati in qualsiasi linguaggio di programmazione ed eseguiti su qualsiasi sistema operativo, inclusi Windows, Linux e MacOS.
Come menzionato nella sezione precedente, possono anche essere consumati su qualsiasi piattaforma.
Semplici ed Efficienti
I web services sono facili da comprendere e implementare. La maggior parte delle volte non hanno nemmeno uno stato proprio. Invece, utilizzano un database o un altro componente software.
Offrono un approccio diretto per accedere a funzionalità tramite una rete. Questa semplicità aiuta a mantenere la coerenza nelle interazioni, rendendo più semplice comprendere e utilizzare i servizi su diverse piattaforme e tecnologie.
Scalabilità
I web services sono altamente scalabili. Possono gestire qualsiasi volume di traffico attraverso lo scaling verticale, ovvero aggiungendo risorse aggiuntive a un nodo server, o lo scaling orizzontale, ovvero avviando nodi server aggiuntivi.
Ciò può aiutarti a ridurre notevolmente i costi, assicurandoti che nessuna risorsa di calcolo venga sprecata.
Riutilizzabilità
La cosa migliore dei web services è che sono altamente riutilizzabili. Invece di integrare lo stesso codice in più applicazioni, tutte possono utilizzare un’unica istanza di un web service.
La riutilizzabilità si traduce in un codebase più piccolo e più facile da mantenere, una migliore centralizzazione e ti consente di risparmiare risorse.
Sicurezza
I web services possono sfruttare autenticazione, autorizzazione, crittografia e altre misure di sicurezza. La maggior parte dei web services è protetta tramite crittografia SSL/TSL.
Tutto ciò garantisce la riservatezza (assicurando che solo il mittente e il destinatario possano leggere il messaggio) e l’integrità (il messaggio non viene modificato durante il transito).
Opzioni di Distribuzione dei Web Service
I web services possono essere ospitati autonomamente oppure distribuiti nel cloud. Le opzioni cloud più popolari per distribuire i web services sono:
- Platform as a Service (PaaS)
- Containers as a Service (CaaS)
- Backend as a Service (BaaS)
Ogni modello cloud ha pro e contro da considerare quando distribuisci il tuo progetto. I fattori più importanti da tenere in considerazione sono facilità d’uso, budget, prestazioni e funzionalità.
Hosting Convenzionale
L’hosting convenzionale è un approccio tradizionale all’hosting di siti web e applicazioni. I server possono essere ospitati autonomamente oppure forniti da società di hosting.
Con l’hosting tradizionale, in genere affitti spazio server su base mensile o annuale.
Le caratteristiche chiave dell’hosting convenzionale includono:
- Spazio Server — vari piani di spazio server in base alle esigenze della tua applicazione
- Strumenti di Gestione del Sito — strumenti intuitivi per la gestione del sito, ad es. cPanel
- Email Hosting — servizi di hosting email che ti consentono di associare un dominio
- Accesso FTP — i file del server possono essere raggiunti tramite FTP o FTP sicuro (SFTP)
Uno dei principali vantaggi dell’hosting convenzionale è la sua convenienza economica, soprattutto per siti web e piccole imprese.
Tuttavia, manca di scalabilità e flessibilità rispetto alle soluzioni basate su cloud. Inoltre, l’hosting convenzionale è più difficile da configurare.
Platform as a Service (PaaS)
Platform as a Service (PaaS) consente ai clienti di creare, gestire e distribuire applicazioni in un ambiente cloud.
Inoltre, le aziende PaaS offrono una varietà di strumenti preconfigurati per la creazione, la personalizzazione e il testing delle applicazioni.
Rispetto a IaaS, PaaS è più semplice da utilizzare e richiede meno esperienza nell’amministrazione di sistemi.
Inoltre, puoi usufruire di load balancer, database gestiti e backup automatici. Rispetto a IaaS, PaaS offre meno libertà e controllo e presenta un rischio maggiore di dipendenza dal fornitore.
Containers as a Service (CaaS)
Containers as a Service (CaaS) è un altro popolare modello di cloud computing. CaaS semplifica lo sviluppo, l’esecuzione, la distribuzione e la manutenzione di software containerizzato. Viene spesso combinato con Docker e Docker Compose.
La maggior parte delle piattaforme CaaS fornisce:
- Docker Engine
- Container registry
- Scaling capabilities
Il principale vantaggio del software containerizzato è che può essere distribuito ovunque. Non esiste un vendor lock-in, il che significa che puoi passare liberamente da un provider cloud a un altro. Ciò è particolarmente utile per i web services.
Backend as a Service (BaaS)
Backend as a Service (BaaS) è un modello di cloud computing che si occupa dell’infrastruttura e automatizza la parte di backend dello sviluppo.
Inoltre, offre funzionalità come database in tempo reale, archiviazione di file, integrazioni con i social media, notifiche email e push, e altro ancora.
Di conseguenza, gli sviluppatori possono concentrarsi sulla creazione del front-end senza preoccuparsi dell’infrastruttura e del backend.
Il front-end viene spesso costruito utilizzando le API e gli SDK proprietari del fornitore BaaS. Utilizzando BaaS, puoi semplificare il codebase e renderlo più gestibile.
BaaS offre tutti i vantaggi di IaaS e PaaS fornendo allo stesso tempo un livello di astrazione per il backend. Utilizzando BaaS, i team riducono il time-to-market e risparmiano su ingegneria e forza lavoro.
Come Distribuire un Web Service?
Questa sezione dell’articolo fornirà una guida passo-passo su come distribuire un web service sulla piattaforma Back4app. Utilizzeremo la soluzione BaaS senza codice di Back4app.
Se sei interessato a soluzioni con codice personalizzato, consulta i seguenti articoli:
- Distribuire un Flask Web Service su Back4app Containers
- Distribuire un Node.js Web Service su Back4app Containers
- Distribuire un PHP Web Service su Back4app Containers
- Distribuire un FastAPI Web Service su Back4app Containers
Che cos’è Back4app?
Back4app è una delle soluzioni di Backend as a Service (BaaS) più popolari.
Utilizzandolo, potrai accelerare notevolmente il tuo processo di sviluppo e concentrarti sugli aspetti fondamentali della tua app, come la logica di business e il front-end, mentre Back4app gestirà il resto.
Back4app fornisce distribuzione sia senza codice che con codice personalizzato. È semplice da utilizzare e praticamente non ha curva di apprendimento. È adatto sia ai principianti sia agli sviluppatori più esperti.
La cosa straordinaria di Back4app è che genera automaticamente API RESTful e GraphQL in base alle tue classi di database.
Inoltre, fornisce SDK per quasi tutti i linguaggi o framework di programmazione più diffusi, come React, Android, iOS e altri!
Funzionalità Principali di Back4app
- Database in stile foglio di calcolo
- Gestione utenti e autenticazione
- Generazione automatica di API
- Funzioni di Cloud Code e pianificazione
- Dati in tempo reale
Per seguire l’articolo, avrai bisogno di un account Back4app gratuito. Se non ne hai uno, puoi crearne uno.
Introduzione al Progetto
Nel corso dell’articolo, costruiremo una semplice web API di e-commerce.
L’API fornirà funzionalità di gestione di prodotti, categorie di prodotti e acquisti. Ci permetterà di eseguire operazioni di creazione, lettura, aggiornamento e cancellazione (CRUD) su ogni classe del database.
Inoltre, utilizzeremo Cloud Code per implementare funzioni personalizzate al fine di calcolare statistiche di e-commerce, come le vendite totali e i prodotti più popolari.
Infine, testeremo l’API utilizzando le console REST e GraphQL integrate di Back4app.
Creare l’App
Per lavorare con Back4app, dovrai prima creare un’app. Per farlo, autenticati utilizzando il tuo account Back4app e fai clic su “Build new app” nella dashboard dell’app.
La piattaforma Back4app ti consente di distribuire due tipi di app:
- Backend as a Service (BaaS)
- Containers as a Service (CaaS)
Entrambi i modelli di cloud computing ti consentono di distribuire web services.
La principale differenza è che BaaS è un backend completo, mentre CaaS ti permette di distribuire web services containerizzati.
In altre parole, BaaS è principalmente una soluzione senza codice, mentre CaaS è una soluzione con codice personalizzato.
Sceglieremo Backend as a Service (BaaS).
Quando crei un’applicazione Back4app, puoi scegliere tra un database NoSQL o SQL. Per il nostro caso d’uso, non fa differenza, quindi useremo NoSQL.
Assegna un nome appropriato alla tua app e fai clic su “Create”.
Attendi che Back4app si occupi di tutto, inclusi il database, il livello applicativo, lo scaling, la configurazione della gestione utenti, ecc. Ci vorranno circa 2 minuti.
Al termine, verrai reindirizzato alla vista del tuo database.
Progettare il Database
Procedendo, occupiamoci del database.
Per impostazione predefinita, un’app Back4app viene fornita con le classi di database _Role
e _User
. Queste due classi vengono utilizzate per la gestione e l’autenticazione degli utenti.
Questi argomenti esulano dallo scopo di questo tutorial, ma puoi consultare i nostri altri articoli per saperne di più.
Per creare la nostra web API di e-commerce, definiremo la seguente struttura di database:
Inizieremo creando la classe ProductCategory
.
Fai clic su “Add Class” nella barra laterale per creare una nuova classe di database. Chiamala “ProductCategory”, abilita “Public Read and Write” e fai clic su “Create class & add columns”.
Aggiungi le seguenti colonne:
+-----------------------------+-------------+---------------+----------+
| Type | Name | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| String | name | <leave blank> | yes |
+-----------------------------+-------------+---------------+----------+
| String | description | <leave blank> | no |
+-----------------------------+-------------+---------------+----------+
Successivamente, esegui gli stessi passaggi per creare la classe Product
:
+-----------------------------+-------------+---------------+----------+
| Type | Name | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| String | name | <leave blank> | yes |
+-----------------------------+-------------+---------------+----------+
| String | description | <leave blank> | no |
+-----------------------------+-------------+---------------+----------+
| Relation -> ProductCategory | categories | true | yes |
+-----------------------------+-------------+---------------+----------+
| Number | price | 0.0 | yes |
+-----------------------------+-------------+---------------+----------+
| Boolean | inStock | true | yes |
+-----------------------------+-------------+---------------+----------+
Infine, occupati della classe Purchase
:
+-----------------------------+-------------+---------------+----------+
| Type | Name | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| Pointer -> Product | product | <leave blank> | yes |
+-----------------------------+-------------+---------------+----------+
| Number | quantity | 1 | yes |
+-----------------------------+-------------+---------------+----------+
Eccellente, hai creato con successo la struttura del database.
Come puoi vedere, il tipo di dato Pointer
gestisce le relazioni 1:n (uno a molti), mentre il tipo di dato Relation
gestisce le relazioni n:m (molti a molti).
L’ultima cosa che devi fare è popolare il database con alcune categorie di prodotti, prodotti e acquisti. Ciò ci consentirà di testare il web service in seguito per assicurarci che tutto funzioni come previsto.
Per popolare il database, puoi:
- Creare da solo alcune categorie di prodotti, prodotti e acquisti
- Importare queste esportazioni di database da GitHub (“More > Import > Class Data”)
Utilizzo del Web Service
Per connetterti al web service, Back4app consente diversi approcci:
- API RESTful generate automaticamente
- API GraphQL generate automaticamente
- Parse SDK
Esaminiamoli uno per uno!
REST API
Representational state transfer (REST) è un protocollo basato su HTTP che sfrutta i metodi HTTP, come OPTIONS
, GET
, POST
, DELETE
e così via.
La maggior parte delle API con cui interagisci oggi sono basate su REST. Supporta più formati di dati, ma JSON è quello più utilizzato.
REST è un protocollo efficace, altamente scalabile e indipendente dalla piattaforma. Può essere utilizzato con qualsiasi linguaggio di programmazione o framework.
I suoi principali svantaggi sono il recupero eccessivo o insufficiente dei dati, l’assenza di sottoscrizioni in tempo reale e l’assenza di un sistema di versionamento delle API.
Per testare la REST API, seleziona “API > Console > REST” ed esegui la seguente query:
Questa query dovrebbe produrre la seguente risposta:
Per saperne di più, consulta How to Build a REST API?
GraphQL API
GraphQL è un runtime lato server e un linguaggio di query utilizzato per creare application programming interfaces (API).
GraphQL consente ai client di richiedere dati specifici all’API invece di fare affidamento sul backend per fornire un insieme di dati predeterminato.
I suoi vantaggi includono flessibilità, manutenibilità ed estensioni di GraphQL. D’altra parte, gli svantaggi sono la complessità, una curva di apprendimento più ripida e la mancanza di standardizzazione.
Per testare la GraphQL API, seleziona “API > Console > GraphQL” ed esegui la seguente query:
Per saperne di più, consulta How to Build a GraphQL API?
Parse SDK
Parse SDK è l’approccio consigliato se il tuo front-end è sviluppato in un linguaggio di programmazione o framework supportato nativamente da Parse SDK.
Tra questi figurano React Native, Flutter, Android, iOS, JavaScript, IONIC e Xamarin.
Il software development kit (SDK) di Parse fornisce classi e funzioni per il recupero e la manipolazione dei dati, l’autenticazione degli utenti, i dati in tempo reale, le funzioni di Cloud Code e altro ancora.
Un esempio di codice per il recupero dei dati in JavaScript appare così:
Documentazione API
Un’altra caratteristica eccezionale di Back4app è che genera automaticamente la documentazione per tutte le tue classi di database.
La documentazione include descrizioni dei modelli, esempi pratici, istruzioni su come gestire gli errori e altro ancora.
Seleziona “API > API Reference” nella barra laterale per visualizzare la documentazione.
Cloud Code
Le API generate automaticamente sono ottime, ma non è possibile fare tutto con esse. Ad esempio, se desideri eseguire query complesse, aggregare dati o eseguire codice personalizzato, devi utilizzare le funzioni di Cloud Code.
Le funzioni di Cloud Code rappresentano l’offerta di Functions as a Service (FaaS) di Back4app. Ti consentono di definire funzioni JavaScript personalizzate, che puoi richiamare tramite l’API o pianificare a intervalli di tempo prefissati.
Creare Funzioni di Cloud Code
Creiamo due funzioni di Cloud Code per calcolare statistiche di e-commerce:
totalRevenue()
calcolerà il ricavo totale aggregando gli acquistitopTenPopularProducts()
restituirà i prodotti più popolari in base agli acquisti
Per prima cosa, vai su “Cloud Code > Functions & Web Hosting” nella barra laterale.
Noterai che lo schermo è diviso in due pannelli. La struttura delle directory è a sinistra; a destra puoi inserire il tuo codice.
Le directory predefinite sono:
- cloud utilizzata per le funzioni di Cloud Code e altro codice
- public directory servita automaticamente da Back4app (asset statici, CSS, HTML)
Vai su main.js.
Quindi, inserisci il seguente codice:
Infine, fai clic su “Deploy” per distribuire le funzioni nel cloud.
Il codice sopra è stato generato utilizzando Back4app Agent — un AutoGPT per sviluppatori. L’agent è strettamente integrato con Back4app e Back4app Containers. Ti consente di creare app, modificare le impostazioni dell’app, generare codice personalizzato e altro ancora.
Testare le Funzioni di Cloud Code
In questa ultima sezione, testeremo le funzioni di Cloud Code appena implementate.
Per prima cosa, seleziona “API > Console > JavaScript” nella barra laterale e poi incolla il seguente codice:
Per eseguirlo, fai clic su “Run” in alto a destra nello schermo.
Dovresti ottenere le seguenti risposte:
// `totalRevenue` output
{
"result": 9385.389999999994
}
Per eseguire l’altra funzione, sostituisci totalRevenue
con topTenPopularProducts
.
// `topTenPopularProducts` output
{
"result": [
{"objectId": "SA5mUfq9Ll", "name": "Science Fiction Novel", "count": 3},
{"objectId": "fV0DFPFlnz", "name": "Yoga Mat", "count": 3},
{"objectId": "gA4zn19Udo", "name": "Smartphone", "count": 2},
{"objectId": "UKeOHJkJ7l", "name": "Winter Jacket", "count": 2},
{"objectId": "8PodlEps2R", "name": "Espresso Machine", "count": 2},
{"objectId": "S15WrDgrpk", "name": "Hair Dryer", "count": 2},
{"objectId": "8O2D1egX51", "name": "4K Television", "count": 1},
{"objectId": "RriSWMDg48", "name": "Face Cream", "count": 1},
{"objectId": "Cq3Hqww69Q", "name": "Blender", "count": 1}
]
}
Conclusione
In conclusione, hai imparato cosa sono i web services, i loro vantaggi, le opzioni di distribuzione e come si confrontano con le API. Dovresti ora essere in grado di distribuire il tuo stesso web service su Back4app BaaS.
Per ulteriori risorse dell’articolo, dai un’occhiata al repository back4app-web-service.