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!

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:

  1. Un web service è in ascolto su un determinato server a una porta specifica.
  2. Un client invia una richiesta al web service su quella porta.
  3. Il web service elabora la richiesta e restituisce una risposta. Prima di elaborare la risposta, il server può anche autenticare e autorizzare la richiesta.
  4. 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.

Web Service versus Application Programming Interface (API)

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à.

Web Service Hosting Pyramid

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:

  1. Distribuire un Flask Web Service su Back4app Containers
  2. Distribuire un Node.js Web Service su Back4app Containers
  3. Distribuire un PHP Web Service su Back4app Containers
  4. 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.

Back4app Create App

La piattaforma Back4app ti consente di distribuire due tipi di app:

  1. Backend as a Service (BaaS)
  2. 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).

Back4app 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”.

Back4app App Configuration

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.

Back4app Database View

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:

E-Commerce Database ER Diagram

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”.

Back4app Create Class

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:

  1. Creare da solo alcune categorie di prodotti, prodotti e acquisti
  2. Importare queste esportazioni di database da GitHub (“More > Import > Class Data”)

Utilizzo del Web Service

Per connetterti al web service, Back4app consente diversi approcci:

  1. API RESTful generate automaticamente
  2. API GraphQL generate automaticamente
  3. 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:

Back4app REST Console

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:

Back4app GraphQL Console

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.

Back4app API Connect

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.

Back4app Automatic Documentation

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:

  1. totalRevenue() calcolerà il ricavo totale aggregando gli acquisti
  2. topTenPopularProducts() 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:

  1. cloud utilizzata per le funzioni di Cloud Code e altro codice
  2. public directory servita automaticamente da Back4app (asset statici, CSS, HTML)

Vai su main.js.

Back4app Cloud Code

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.


Leave a reply

Your email address will not be published.