Comment déployer un web service ?

How to Deploy a Web Service_
How to Deploy a Web Service_

Cet article abordera webservices, leurs avantages, les options de déploiement de web services et la manière dont ils se comparent aux APIs.

De plus, vous apprendrez comment déployer un web service e-commerce sur le cloud sans écrire la moindre ligne de code personnalisé !

Principaux enseignements

  • Comprendre le rôle des Web Services : Les web services sont un élément clé de l’infrastructure numérique moderne, offrant des avantages considérables tels que l’interopérabilité, l’indépendance vis-à-vis de la plateforme, l’évolutivité et la sécurité.
  • Explorer les options de déploiement : Le déploiement de web services peut être abordé de plusieurs manières, notamment l’hébergement conventionnel, Platform as a Service (PaaS), Containers as a Service (CaaS) et Backend as a Service (BaaS).
  • Conseils pour déployer un Web Service dans le cloud : Cet article fournit un guide complet pour déployer un web service e-commerce en utilisant une plateforme BaaS sans code.

Qu’est-ce qu’un web service ?

Un service web est un logiciel disponible sur l’internet, généralement via le protocole de transfert hypertexte (HTTP). Les données servies par un service web sont dans un format standardisé tel que XML, JSON, SOAP ou YAML.

Les services web sont utilisés pour la communication de machine à machine plutôt que d’être consommés directement par le client final.

Par exemple, votre appareil mobile utilise un service web météorologique pour récupérer les informations météorologiques et les afficher dans un format agréable.

Il existe plusieurs types de services web, tels que le transfert d’état représentationnel (REST), GraphQL et gRPC.

Le cycle de vie typique d’un service web se présente comme suit :

  1. Un service web est à l’écoute d’un serveur sur un port spécifique.
  2. Un client envoie une requête au service web sur ce port.
  3. Le service web exécute la demande et renvoie une réponse. Avant de traiter la réponse, le serveur peut également authentifier et autoriser la demande.
  4. Le client traite la réponse.

Les services web sont connus pour leur indépendance vis-à-vis des plates-formes et des langages, leur réutilisation, leur évolutivité, leur flexibilité et leur faible couplage. Aujourd’hui, ils sont utilisés par presque toutes les entreprises informatiques.

Web Service vs. API

Service web et API sont des termes similaires, mais ils ne doivent pas être utilisés de manière interchangeable.

En termes simples, un service web est une API disponible strictement sur l’internet. Cela signifie que tous les services web sont des API, alors que toutes les API ne sont pas des services web.

Service Web par rapport à l'interface de programmation d'applications (API)

En plus d’être des services web, les API peuvent également remplir d’autres fonctions. Par exemple, les interactions avec le système d’exploitation, la communication avec les applications locales et les intégrations d’applications.

L’API du système de fichiers Python et l’API du DOM JavaScript sont deux exemples d’API qui ne sont pas des services web.

Avantages des web services

Les services web sont un aspect fondamental de l’infrastructure numérique moderne et offrent de nombreux avantages. Parlons-en !

Interopérabilité

L’un des principaux avantages des services web est leur capacité à faciliter l’interopérabilité entre différents systèmes et applications.

En adhérant à des protocoles normalisés tels que HTTP et XML, les services web permettent une communication sans faille entre différents composants logiciels, quelle que soit la pile technologique sous-jacente.

Indépendance de la plate-forme

Un autre avantage des services web est qu’ils sont totalement indépendants de la plate-forme. Ils peuvent être mis en œuvre dans n’importe quel langage de programmation et fonctionner sur n’importe quel système d’exploitation, y compris Windows, Linux et MacOS.

Comme mentionné dans la section précédente, ils peuvent également être consommés sur n’importe quelle plateforme.

Simple et efficace

Les services web sont faciles à comprendre et à mettre en œuvre. La plupart du temps, ils n’ont même pas d’état propre. Ils utilisent plutôt une base de données ou un autre composant logiciel.

Ils offrent une approche directe de l’accès aux fonctionnalités sur un réseau. Cette simplicité favorise la cohérence des interactions, ce qui facilite la compréhension et l’utilisation des services sur différentes plates-formes et technologies.

Évolutivité

Les services web sont hautement évolutifs. Ils peuvent s’adapter à n’importe quel trafic en procédant à une extension verticale, c’est-à-dire en ajoutant des ressources supplémentaires à un nœud de serveur, ou à une extension horizontale, c’est-à-dire en créant des nœuds de serveur supplémentaires.

Cela peut vous aider à réduire considérablement les coûts en veillant à ce qu’aucune ressource informatique ne soit gaspillée.

Réutilisation

L’avantage des services web est qu’ils sont hautement réutilisables. Au lieu d’intégrer le même code dans plusieurs applications, celles-ci peuvent toutes utiliser une seule instance d’un service web.

La réutilisation se traduit par une base de code plus petite et plus facile à maintenir, une meilleure centralisation et vous permet d’économiser des ressources.

Sécurité

Les services web peuvent tirer parti de l’authentification, de l’autorisation, du cryptage et d’autres mesures de sécurité. La plupart des services web sont protégés par un cryptage SSL/TSL.

Tout cela garantit la confidentialité (seuls l’expéditeur et le destinataire peuvent lire le message) et l’intégrité (le message n’est pas modifié en cours de route).

Options de déploiement de web service

Les services web peuvent être soit auto-hébergés, soit déployés dans le nuage. Les options en nuage les plus populaires pour le déploiement des services web sont les suivantes :

  • Plate-forme en tant que service (PaaS)
  • Conteneurs en tant que service (CaaS)
  • Backend en tant que service (BaaS)

Chaque modèle d’informatique dématérialisée présente des avantages et des inconvénients qu’il convient de prendre en compte lors du déploiement de votre projet. Les facteurs les plus importants à prendre en compte sont la facilité d’utilisation, le budget, les performances et les fonctionnalités.

Pyramide de l'hébergement de services web

Hébergement conventionnel

L’hébergement conventionnel est une approche traditionnelle de l’hébergement de sites web et d’applications. Les serveurs peuvent être auto-hébergés ou fournis par des sociétés d’hébergement.

Avec l’hébergement traditionnel, vous louez généralement un espace serveur sur une base mensuelle ou annuelle.

Les principales caractéristiques de l’hébergement conventionnel sont les suivantes

  • Espace serveur — différents plans d’espace serveur en fonction des besoins de votre application
  • Outils de gestion de sites web – outils conviviaux pour la gestion de sites web, par exemple cPanel
  • Hébergement d’emails — services d’hébergement d’emails qui vous permettent d’y associer un domaine.
  • Accès FTP – les fichiers du serveur sont accessibles par FTP ou FTP sécurisé (SFTP).

L’un des principaux avantages de l’hébergement conventionnel est son prix abordable, en particulier pour les petits sites web et les entreprises.

Cependant, il manque d’évolutivité et de flexibilité par rapport aux solutions basées sur l’informatique en nuage. L’hébergement conventionnel est également plus difficile à mettre en place.

Plate-forme en tant que service (PaaS)

La plateforme en tant que service (PaaS) permet aux clients de créer, d’administrer et de distribuer des applications dans un environnement en nuage.

En outre, les sociétés PaaS fournissent une variété d’outils préintégrés pour la création, la personnalisation et le test d’applications.

Par rapport à l’IaaS, le PaaS est plus simple à utiliser et nécessite moins d’expérience dans l’administration du système.

En outre, vous pouvez bénéficier de répartiteurs de charge, de bases de données gérées et de sauvegardes automatiques. Par rapport à l’IaaS, le PaaS offre moins de liberté et de contrôle et présente un risque plus élevé de verrouillage du fournisseur.

Conteneurs en tant que service (CaaS)

Les conteneurs en tant que service (CaaS) sont un autre modèle populaire d’informatique en nuage. CaaS simplifie le développement, l’exécution, le déploiement et la maintenance des logiciels conteneurisés. Il est souvent associé à Docker et à Docker Compose.

La plupart des plateformes CaaS fournissent :

  • Moteur Docker
  • Registre des conteneurs
  • Capacités de mise à l’échelle

Le principal avantage des logiciels conteneurisés est qu’ils peuvent être déployés n’importe où. Il n’y a pas de verrouillage du fournisseur, ce qui signifie que vous pouvez librement passer d’un fournisseur de cloud à un autre. C’est particulièrement utile pour les services web.

Backend en tant que service (BaaS)

Backend as a Service (BaaS) est un modèle d’informatique dématérialisée qui prend en charge votre infrastructure et automatise la partie “backend” du développement.

En outre, il offre des fonctionnalités telles qu’une base de données en temps réel, le stockage de fichiers, l’intégration des médias sociaux, les notifications par e-mail et push, et bien plus encore.

Les développeurs peuvent ainsi se concentrer sur la création de l’interface sans se préoccuper de l’infrastructure et de l’arrière-plan.

Le frontend est souvent construit à l’aide des API et SDK propriétaires du fournisseur de BaaS. En utilisant le BaaS, vous pouvez simplifier la base de code et la rendre plus facile à maintenir.

Le BaaS offre tous les avantages de l’IaaS et du PaaS tout en fournissant une couche d’abstraction dorsale. En utilisant le BaaS, les équipes réduisent le temps de mise sur le marché et économisent de l’argent sur l’ingénierie et la main d’œuvre.

Comment déployer un service Web ?

Cette section de l’article fournit un guide étape par étape sur le déploiement d’un service web sur la plateforme Back4app. Nous utiliserons la solution BaaS sans code de Back4app.

Si vous êtes intéressé par des solutions personnalisées, consultez les articles suivants :

  1. Déployer un service Web Flask dans les conteneurs Back4app
  2. Déployer un service Web Node.js dans les conteneurs Back4app
  3. Déployer un service Web PHP dans les conteneurs Back4app
  4. Déployer un service Web FastAPI dans les conteneurs Back4app

Qu’est-ce que Back4app ?

Back4app est l’une des solutions de Backend as a Service (BaaS) les plus populaires.

En l’utilisant, vous pourrez accélérer significativement votre processus de développement et vous concentrer sur les aspects élémentaires de votre application – tels que la logique métier et le frontend, tandis que Back4app s’occupera du reste.

Back4app permet un déploiement sans code et avec un code personnalisé. Il est simple à utiliser et n’a pratiquement pas de courbe d’apprentissage. Il convient aussi bien aux débutants qu’aux développeurs plus expérimentés.

L’avantage de Back4app est qu’il génère automatiquement des API RESTful et GraphQL basées sur vos classes de base de données.

En plus de cela, il fournit des SDK pour presque tous les langages de programmation ou frameworks populaires, tels que React, Android, iOS, et plus encore !

Caractéristiques principales de Back4app

  • Bases de données de type tableur
  • Gestion des utilisateurs et authentification
  • Génération automatique d’API
  • Fonctions et planification du code cloud
  • Données en temps réel

Pour suivre l’article, vous aurez besoin d’un compte Back4app gratuit. Si vous n’en avez pas, vous pouvez en créer un.

Introduction du projet

Tout au long de cet article, nous construirons une API web simple pour le commerce électronique.

L’API fournira des fonctionnalités de gestion des produits, des catégories de produits et des achats. Elle nous permettra d’effectuer des opérations de création, de lecture, de mise à jour et de suppression (CRUD) sur chaque classe de base de données.

En outre, nous utiliserons Cloud Code pour mettre en œuvre des fonctions personnalisées permettant de calculer les statistiques du commerce électronique, telles que les ventes totales et les produits les plus populaires.

Enfin, nous testerons l’API en utilisant la console REST et GraphQL de Back4app.

Créer une application

Pour travailler avec Back4app, vous devez d’abord créer une application. Pour cela, authentifiez-vous avec votre compte Back4app et cliquez sur “Créer une nouvelle application” dans le tableau de bord de l’application.

Back4app Créer une application

La plateforme Back4app permet de déployer deux types d’applications :

  1. Backend en tant que service (BaaS)
  2. Conteneurs en tant que service (CaaS)

Les deux modèles d’informatique en nuage permettent de déployer des services web.

La principale différence est que BaaS est un backend à part entière, tandis que CaaS vous permet de déployer des services web conteneurisés.

En d’autres termes, BaaS est une solution essentiellement sans code, tandis que CaaS est une solution avec code personnalisé.

Nous opterons pour Backend as a Service (BaaS).

Back4app Backend as a Service (BaaS)

Lors de la création d’une application Back4app, vous pouvez choisir entre une base de données NoSQL ou SQL. Pour notre cas d’utilisation, cela n’a pas d’importance, nous nous en tiendrons donc à NoSQL.

Donnez un nom à votre application et cliquez sur “Créer”.

Configuration de l'application Back4app

Attendez que Back4app s’occupe de tout, y compris la base de données, la couche d’application, la mise à l’échelle, la configuration de la gestion des utilisateurs, etc. Cela prendra environ 2 minutes.

Une fois cela fait, vous serez redirigé vers la vue de votre base de données.

Vue de la base de données de Back4app

Conception de la base de données

Continuons à nous occuper de la base de données.

Par défaut, une application Back4app est livrée avec une classe de base de données _Role et _User. Ces deux classes sont utilisées pour la gestion des utilisateurs et l’authentification.

Ces sujets sortent du cadre de ce tutoriel, mais vous pouvez consulter nos autres articles pour en savoir plus.

Pour créer notre API web de commerce électronique, nous allons créer la structure de base de données suivante :

Diagramme ER de la base de données du commerce électronique

Nous commencerons par créer la classe ProductCategory.

Cliquez sur “Ajouter une classe” dans la barre latérale pour créer une nouvelle classe de base de données. Nommez-la “ProductCategory”, activez “Public Read and Write”, et cliquez sur “Create class & add columns”.

Back4app Créer une classe

Ajoutez-y les colonnes suivantes :

+-----------------------------+-------------+---------------+----------+
| Type                        | Name        | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| String                      | name        | <leave blank> | yes      |
+-----------------------------+-------------+---------------+----------+
| String                      | description | <leave blank> | no       |
+-----------------------------+-------------+---------------+----------+

Procédez ensuite de la même manière pour créer une classe Produit :

+-----------------------------+-------------+---------------+----------+
| 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      |
+-----------------------------+-------------+---------------+----------+

Enfin, il faut s’occuper de la classe d’achat:

+-----------------------------+-------------+---------------+----------+
| Type                        | Name        | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| Pointer -> Product          | product     | <leave blank> | yes      |
+-----------------------------+-------------+---------------+----------+
| Number                      | quantity    | 1             | yes      |
+-----------------------------+-------------+---------------+----------+

Vous avez réussi à créer la structure de la base de données.

Comme vous pouvez le constater, le type de données Pointer gère les relations 1:n (un à plusieurs) et le type de données Relation gère les relations n:m (plusieurs à plusieurs).

La dernière chose à faire est d’alimenter la base de données avec quelques catégories de produits, produits et achats. Cela nous permettra de tester le service web ultérieurement pour nous assurer que tout fonctionne comme prévu.

Pour alimenter la base de données, vous pouvez soit

  1. Créez vous-même quelques catégories de produits, produits et achats.
  2. Importez ces exportations de base de données depuis GitHub (“More > Import > Class Data”).

Utilisation des services web

Pour se connecter au service web, Back4app propose plusieurs approches :

  1. API RESTful générée automatiquement
  2. API GraphQL générée automatiquement
  3. Parse SDK

Examinons chacun d’entre eux !

API REST

Le transfert d’état représentationnel (REST) est un protocole basé sur HTTP qui exploite les méthodes HTTP, telles que OPTIONS, GET, POST, DELETE, etc.

La plupart des API avec lesquelles vous interagissez aujourd’hui sont basées sur REST. Elles prennent en charge de nombreux formats de données, mais JSON est le plus couramment utilisé.

REST est un protocole efficace, hautement évolutif et indépendant de la plateforme. Il peut être utilisé avec n’importe quel langage de programmation ou cadre de travail.

Ses principaux inconvénients sont l’extraction excessive ou insuffisante des données, l’absence d’abonnements en temps réel et l’absence de système de versionnement de l’API.

Pour tester l’API REST, sélectionnez “API > Console > REST” et effectuez la requête suivante :

Console REST de Back4app

Cette requête devrait donner la réponse suivante :

Pour en savoir plus, consultez la page Comment créer une API REST ?

API GraphQL

GraphQL est un langage d’exécution et d’interrogation côté serveur utilisé pour créer des interfaces de programmation d’applications (API).

GraphQL permet aux clients de demander des données spécifiques à l’API au lieu de compter sur le backend pour fournir un ensemble de données prédéterminé.

Ses avantages sont la flexibilité, la facilité de maintenance et les extensions GraphQL. En revanche, ses inconvénients sont la complexité, une courbe d’apprentissage plus prononcée et un manque de normalisation.

Pour tester l’API GraphQL, sélectionnez “API > Console > GraphQL” et effectuez la requête suivante :

Console GraphQL de Back4app

Pour en savoir plus, consultez la page Comment construire une API GraphQL ?

Parse SDK

Parse SDK est l’approche recommandée si votre frontend est construit dans un langage de programmation ou un framework que Parse SDK supporte nativement.

Il s’agit notamment de React Native, Flutter, Android, iOS, JavaScript, IONIC et Xamarin.

Back4app API Connect

Le kit de développement logiciel (SDK) de Parse fournit des classes et des fonctions pour l’extraction et la manipulation des données, l’authentification des utilisateurs, les données en temps réel, les fonctions Cloud Code, etc.

Voici un exemple de code de récupération de données en JavaScript :

Documentation de l’API

Un autre avantage de Back4app est qu’il génère automatiquement de la documentation pour toutes les classes de base de données.

La documentation comprend des descriptions de modèles, des exemples pratiques, des instructions sur la manière de traiter les erreurs, etc.

Sélectionnez “API > API Reference” dans la barre latérale pour consulter la documentation.

Back4app Documentation automatique

Code du nuage

Les API générées automatiquement sont excellentes, mais elles ne permettent pas de tout faire. Par exemple, si vous souhaitez effectuer des requêtes complexes, agréger des données ou exécuter du code personnalisé, vous devez utiliser les fonctions de Cloud Code.

Les fonctions Cloud Code sont l’offre de fonctions en tant que service (FaaS) de Back4app. Elles vous permettent de définir des fonctions JavaScript personnalisées, que vous pouvez déclencher via l’API ou planifier à heure fixe.

Créer des fonctions de code cloud

Créons deux fonctions Cloud Code pour calculer les statistiques du commerce électronique :

  1. totalRevenue() calculera le revenu total en agrégeant les achats
  2. topTenPopularProducts() renvoie les produits les plus populaires en fonction des achats.

Tout d’abord, naviguez vers “Cloud Code > Functions & Web Hosting” sur la barre latérale.

Vous remarquerez que l’écran est divisé en deux panneaux. La structure du répertoire se trouve à gauche ; vous pouvez saisir votre code à droite.

Les répertoires par défaut sont les suivants

  1. cloud utilisé pour les fonctions du code cloud et d’autres codes
  2. répertoirepublic servi automatiquement par Back4app (actifs statiques, CSS, HTML)

Naviguez jusqu’au fichier main.js.

Back4app Cloud Code

Ensuite, mettez le code suivant à l’intérieur :

Enfin, cliquez sur “Déployer” pour déployer les fonctions dans le nuage.

Le code ci-dessus a été généré en utilisant Back4app Agent — un AutoGPT pour les développeurs. L’agent est étroitement intégré avec Back4app et Back4app Containers. Il vous permet de créer des applications, de modifier les paramètres des applications, de générer du code personnalisé, et plus encore.

Tester les fonctions du code cloud

Dans cette dernière section, nous allons tester les fonctions du code cloud qui viennent d’être mises en œuvre.

Tout d’abord, sélectionnez “API > Console > JavaScript” dans la barre latérale, puis collez le code suivant :

Pour l’exécuter, cliquez sur “Exécuter” en haut à droite de l’écran.

Vous devriez obtenir les réponses suivantes :

// `totalRevenue` output

{
  "result": 9385.389999999994
}

Pour exécuter l’autre fonction, remplacez totalRevenue par 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}
  ]
}

Conclusion

En conclusion, vous avez appris à connaître les services web, leurs avantages, les options de déploiement, et comment ils se comparent aux API. Vous devriez maintenant être en mesure de déployer votre propre service web sur Back4app BaaS.

Pour des ressources supplémentaires, consultez le site back4app-web-service repo.


Leave a reply

Your email address will not be published.