0% ont trouvé ce document utile (0 vote)
52 vues76 pages

Cours Cacn Part2

Le document présente un module de formation sur la création d'applications Cloud native, comprenant des concepts de cloud, la création d'APIs REST, le développement d'applications microservices et le déploiement sur Azure. Il définit le cloud computing, ses avantages, et les différences entre cloud public, privé et hybride, ainsi que les modèles de services IaaS, PaaS et SaaS. L'approche Cloud Native est expliquée à travers ses piliers, ses avantages en termes de flexibilité et d'évolutivité, et l'importance de l'automatisation dans le développement et le déploiement des applications.

Transféré par

redaaitlahsen5
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
52 vues76 pages

Cours Cacn Part2

Le document présente un module de formation sur la création d'applications Cloud native, comprenant des concepts de cloud, la création d'APIs REST, le développement d'applications microservices et le déploiement sur Azure. Il définit le cloud computing, ses avantages, et les différences entre cloud public, privé et hybride, ainsi que les modèles de services IaaS, PaaS et SaaS. L'approche Cloud Native est expliquée à travers ses piliers, ses avantages en termes de flexibilité et d'évolutivité, et l'importance de l'automatisation dans le développement et le déploiement des applications.

Transféré par

redaaitlahsen5
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Création d’une application Cloud native

Formatrice: Mme. Hasna BOUISSKRANE


Email: [email protected]

Année de formation: 2024/2025


PLAN DE MODULE

1. Introduction de cloud native.


2. Création des APIs REST simples en Node JS et Express Js.
3. Création d’une application microservices.
4. Manipulation des conteneurs.
5. Déploiement d’une application cloud native en Azure Cloud.

1
Partie 1: Introduction de cloud native

 Définir le cloud
 Définir l’approche cloud native

2
Chapitre 1: Définir le cloud
1. Concept du cloud et ses avantages

• Le terme « cloud » désigne les serveurs accessibles sur Internet, ainsi que les logiciels et bases de données
qui fonctionnent sur ces serveurs.

• Les serveurs situés dans le cloud sont hébergés au sein de datacenters répartis dans le monde entier.

• Grâce au cloud computing(informatique cloud) , utilisateurs et entreprises n'ont plus besoin de gérer eux-
mêmes des serveurs physiques ou d'installer des applications sur leurs propres équipements.

3
• Le cloud permet aux utilisateurs d'accéder aux mêmes fichiers et aux mêmes applications à partir de
presque n'importe quel appareil, car les processus informatiques et le stockage ont lieu sur des serveurs
dans un datacenter et non localement sur la machine utilisateur.

• C'est pourquoi vous pouvez vous connecter votre compte Instagram à partir de n’importe quel appareil,
avec toutes vos photos, vidéos et l'historique de vos conversations. Il en va de même avec les
fournisseurs de messagerie cloud comme Gmail ou Microsoft Office 365 et les fournisseurs de stockage
cloud comme Dropbox ou Google Drive.

• Pour les entreprises, le passage au cloud computing supprime certains coûts et frais informatiques : par
exemple, les sociétés n'ont plus besoin de mettre à jour et d'entretenir leurs propres serveurs, c'est le
fournisseur de cloud qui s'en charge.

4
Serveur informatique vs cloud : quelle solution de stockage de données choisir pour une entreprise ?

Le choix du stockage des données est crucial pour les entreprises face à l'augmentation continue des volumes
d'informations. Une gestion efficace des documents et des données est essentielle pour rester compétitif.

Un serveur est un ordinateur puissant installé dans vos locaux, conçu pour gérer et stocker les données de
votre entreprise. Il connecte les postes des employés (ordinateurs clients) et leur fournit différents services :

– L’accès à Internet,
– Le partage de fichiers,
– Le partage d’imprimantes,
– Le stockage en base de données ,
– La mise à disposition d’applications, etc.

5
Les limites du serveur informatique:

 Accès et partage de documents

• Le client se connecte au réseau interne de l’entreprise pour accéder à ses documents.


• Le partage de documents est possible entre les membres d’une équipe, mais uniquement sur les
postes installés en interne.

 Sécurité des données


L’utilisation d’un serveur expose les entreprises à des risques comme :
• Pannes matérielles : Rendant les systèmes de gestion inaccessibles.
• Infestation des données : Introduction de malwares ou virus dans le système informatique.
• Piratage : Vol ou altération des données sensibles.

 Capacité de stockage limitée


• Les serveurs ont une capacité de stockage fixe, ce qui peut devenir insuffisant si le volume de
données augmente rapidement.

 Coûts élevés
• Achat initial du serveur et des équipements réseau.
• Coûts de maintenance régulière et mise à jour des systèmes.
• Besoin d’une équipe spécialisée pour gérer le serveur.

6
Le cloud computing doit posséder 4 caractéristiques essentielles :

• Le service doit être en libre-service à la demande : Cela signifie que les utilisateurs ont la possibilité
d'accéder au service quand ils en ont besoin, sans nécessiter l'intervention humaine d'un fournisseur de
service.
Exemple: Un étudiant utilise Google Drive pour enregistrer ses fichiers. Il peut créer un dossier ou
ajouter un nouveau document à tout moment, simplement en se connectant à son compte, sans avoir
besoin de demander de l’aide à un technicien ou à Google.

• Le service doit être mesurable (mesure et affichage de paramètres de consommation) : Il s'agit de la


capacité à mesurer et à surveiller les ressources utilisées par le service, ainsi que les performances du
service lui-même.

Exemple : Sur Google Cloud, une entreprise peut suivre combien d’espace de stockage ou de temps
de calcul elle a utilisé pour son projet. Elle reçoit une facture détaillée chaque mois basée sur ces
paramètres mesurés.

• Il doit y avoir une mutualisation des ressources : Cela signifie que les ressources (comme les
serveurs, les réseaux, ou les bases de données) sont partagées entre plusieurs utilisateurs ou applications,
permettant une utilisation efficace et économique.

• Il doit être rapidement élastique (adaptation rapide à une variation du besoin) :Le service peut
augmenter ou réduire ses ressources rapidement pour répondre à la demande ou des besoins des
utilisateurs.

7
• Les avantages du Cloud

8
2. Exemple des fournisseurs cloud

Les 10 premiers fournisseurs mondiaux de cloud en termes de revenus totaux pour le trimestre fiscal se
terminant le 31 mars 2021 (en milliards de dollars américains).

9
3. Différence entre cloud privé, public et hybride

Cloud public

• Les clouds publics sont généralement des environnements cloud créés à partir d'une infrastructure
informatique qui n'appartient pas à l'utilisateur final.

• Alibaba Cloud, Microsoft Azure, Google Cloud, Amazon Web Services (AWS) et IBM Cloud sont les
principaux fournisseurs de cloud public.

• Les clouds publics étaient habituellement exécutés hors site, où les ressources comme les serveurs et
le stockage sont gérés par des fournisseurs externes(c‘est comme louer de l'espace sur Internet pour
faire fonctionner vos logiciels et stocker vos fichiers, sans avoir à gérer vous-même les infrastructures
physiques.)

10
Cloud privé

• Les clouds privés sont généralement définis comme des environnements cloud spécifiques à un
utilisateur final ou à un groupe, et sont habituellement exécutés derrière le pare-feu de l'utilisateur ou
du groupe, ce qui signifie que l'accès aux ressources du cloud privé est limité et sécurisé.

• Tous les clouds deviennent des clouds privés lorsque l'infrastructure informatique sous-jacente est
spécifique à un client unique, avec un accès entièrement isolé.

11
Caractéristiques clés du Cloud Privé :

• Les ressources (serveurs, stockage) ne sont pas partagées avec d'autres utilisateurs.
• L'infrastructure est généralement protégée par un pare-feu pour empêcher tout accès non autorisé.
Et les utilisateurs autorisés (par exemple, les employés d'une entreprise) peuvent accéder à ces
ressources via des connexions sécurisées.

Exemple
Une entreprise ayant des données sensibles (par exemple, des informations financières) peut choisir
d'utiliser un cloud privé pour héberger ces données.
L'entreprise peut utiliser des serveurs spécifiquement pour elle. Ces serveurs sont protégés par des
systèmes de sécurité avancés, et seul le personnel autorisé peut y accéder via des connexions
sécurisées..

12
Cloud hybride

Le cloud hybride est une combinaison de cloud public et de cloud privé, où une organisation utilise à la fois
des ressources dans le cloud public et dans le cloud privé, tout en permettant la communication et le partage
de données entre les deux environnements.

En d'autres termes, une entreprise peut garder certaines données ou applications dans un cloud privé pour des
raisons de sécurité et de contrôle, tout en utilisant un cloud public pour d'autres besoins moins sensibles,
comme le stockage de fichiers non confidentiels ou l'hébergement d'applications.

13
4. Services du cloud (IAAS, PAAS, SAAS)

As-a-Service : définition

Le concept "As-a-Service" désigne les services cloud fournis à la demande, souvent facturés selon une
utilisation réelle. Ce modèle permet de déléguer la gestion de l’infrastructure, afin que les entreprises
puissent se concentrer sur leurs activités principales, telles que :

• Développement de produits (comme du code ou des applications).


• Relations avec les clients et stratégie commerciale

Il existe trois principaux types de cloud computing


« as-a-Service », chacun offrant un certain degré de gestion :

- IaaS (Infrastructure-as-a-Service)
- PaaS (Platform-as-a-Service)
- SaaS (Software-as-a-Service).

14
IaaS : Infrastructure as a Service

• Dans le modèle Infrastructure as a Service (IaaS), le fournisseur de


solution met à disposition des ressources matérielles comme les
serveurs, les réseaux, les systèmes de stockage et les technologies de
virtualisation. Ces ressources sont accessibles en fonction des
besoins de l’utilisateur, qui n’a pas à se préoccuper de la
maintenance ou des mises à jour des infrastructures physiques sous-
jacentes.
• Le fournisseur est responsable de la gestion et de l’entretien de ces
composants matériels. Cependant, l’utilisateur conserve le contrôle
sur le système d’exploitation, les données, les applications, les
solutions middleware et les environnements d’exécution qu’il doit
installer, configurer et gérer.

Exemple
Hébergement d’applications : Une entreprise de développement de
logiciels utilise Amazon Web Services (AWS) pour héberger ses
applications, plutôt que d'acheter des serveurs physiques.
Stockage et sauvegarde : Une entreprise sauvegarde ses données
critiques sur Microsoft Azure pour éviter les risques liés aux pannes
matérielles.

15
• Test et développement :Les développeurs utilisent des machines virtuelles sur Google Cloud Platform
pour tester de nouvelles applications sans investir dans des équipements coûteux.

L'IaaS est le modèle Cloud « as a Service » le plus flexible et libre, il apporte aux utilisateurs tous les
avantages des ressources informatiques sur site, sans les actions et frais de gestion de l’infrastructure

En effet, il facilite la mise à l'échelle, la mise à niveau et permet d'ajouter des ressources, par exemple le
stockage dans le Cloud

Exemples de fournisseurs IaaS :

• Amazon Web Services (AWS)


• Microsoft Azure
• Google Cloud Platform (GCP)
• IBM Cloud
• Oracle Cloud Infrastructure

16
PaaS : Platform as a Service

• Le modèle de service Platform as a Service (PaaS) est similaire à


l'IaaS, mais avec une différence majeure : le fournisseur de services
cloud prend également en charge le système d'exploitation et les
environnements d'exécution nécessaires.

• Cela signifie que l'utilisateur n'a pas à se soucier de la gestion ou de


la maintenance de l'infrastructure sous-jacente, comme les serveurs,
les réseaux, les systèmes d'exploitation ou le stockage.

• Toutefois, l'utilisateur conserve le contrôle sur le déploiement et la


configuration des applications. Ces applications peuvent être
développées à l'aide de langages de programmation, de
bibliothèques, de services et d'outils que le fournisseur met à
disposition.
• Ce modèle est idéal pour les développeurs souhaitant se concentrer
sur la création d'applications sans se préoccuper de l'administration
des systèmes ou des mises à jour de l'infrastructure.

Exemple :
• Développer une application en utilisant Google App Engine ou
Heroku, où le développeur se concentre uniquement sur le code.

17
• Idéalement destiné aux développeurs et aux programmeurs, le PaaS fournit une plateforme simple et
évolutive permettant aux utilisateurs d’exécuter et gérer leurs propres applications, sans avoir à créer ni
entretenir l'infrastructure ou la plateforme généralement associée au processus
 Environnement de développement simplifié.
 Gestion automatique de l'infrastructure.
 Réduction des tâches d'administration.

Exemples de fournisseurs PaaS :

18
SaaS : Software as a Service

• Le SaaS (ou services d'applications Cloud, est le type le plus complet


qui utilise le plus des services sur le marché du Cloud

• Pour ce type de service le fournisseur fournit et gère une application


complète accessible par les utilisateurs via un navigateur Web ou un
client lourd

• Ainsi, l’utilisateur ne contrôle pas la plateforme Cloud sous jacente et


il n'a pas à s'inquiéter des mises à jour logicielles ou l'application des
correctifs et les autres tâches de maintenance logicielle

Exemple :
• Google Workspace: Fournit des applications comme Gmail, Google
Drive, Google Docs, et Google Meet, accessibles via un navigateur.
• Microsoft 365 : Offre des outils comme Word, Excel, et Teams,
accessibles depuis le cloud

19
SaaS : Software as a Service

Le SaaS constitue une option intéressante pour les PME qui n'ont pas les ressources humaines pour gérer
l'installation et le suivi de l’installation des mises à jour de sécurité et logiciels.

Par ailleurs, il est à noter que le modèle SaaS réduit le niveau de contrôle et peut nuire à la sécurité et
aux performances
=> Il convient donc de choisir soigneusement votre fournisseur Cloud

Exemples de fournisseurs SaaS :

20
Chapitre 2: Définir l’approche cloud native

1. Définition

Cloud Native : le Cloud Native décrit une approche de développement


logiciel dans laquelle les applications sont dès le début conçues pour une
utilisation sur le Cloud.

Il en résulte des applications Cloud Native (NCA) capables de


pleinement exploiter les atouts de l’architecture du Cloud Computing.

Les applications cloud natives sont construites pour fonctionner de


manière optimale dans un environnement cloud, en utilisant des
architectures modernes telles que les microservices et les conteneurs.

21
Fonctionnement

L’approche Cloud Native repose sur quatre piliers qui sont liés.

• Microservices: Les applications sont découpées en petites unités indépendantes appelées


microservices, chaque service ayant une responsabilité spécifique. Ces services communiquent entre
eux via des API légères (par exemple REST).

• Les conteneurs : (comme Docker) permettent d’emballer une application avec toutes ses dépendances
dans un format portable. Ils garantissent que l'application fonctionne de manière cohérente dans tous
les environnements (développement, test, production).

• DevOps: La culture DevOps intègre les équipes de développement et d’exploitation pour accélérer les
livraisons et améliorer la qualité des logiciels.

• Continuous Delivery (CD) : Les processus de Continuous Delivery permettent l’automatisation des
étapes de build, test, et déploiement. Cela garantit une livraison fréquente et rapide des nouvelles
fonctionnalités sans interruption de service.

22
2. Avantages

Flexibilité: Chaque service fonctionne indépendamment des autres et de l'environnement.


Les développeurs peuvent modifier ou mettre à jour une partie du code sans impacter le
reste de l'application.

Évolutivité: Les applications peuvent facilement s'adapter à une augmentation de la


demande sans nécessiter des mises à niveau coûteuses du matériel.

Réduction des erreurs grâce à l’automatisation: L'automatisation consiste à utiliser des


outils et des processus pour exécuter automatiquement des tâches répétitives ou complexes,
sans intervention humaine

23
• Netflix, Uber et WeChat exposent des systèmes natifs Cloud qui se composent de nombreux services
indépendants. Ce style architectural leur permet de répondre rapidement aux conditions du marché.
Elles mettent instantanément à jour de petites zones d’une application complexe en service, sans
redéploiement complet. Elles mettent à l’échelle individuellement les services en fonction des besoins.

24
3. Vue générale sur les caractéristiques du cloud natif

L'approche Cloud Native repose sur une combinaison de microservices, conteneurs et livraison continue .
Cela permet de créer des applications flexibles, scalables et résilientes tout en facilitant leur déploiement et
gestion à travers la culture DevOps. Ces pratiques assurent une réactivité et une efficacité accrues dans un
environnement cloud dynamique

25
Automatisation des processus du développement et de déploiement:

• Comme l’approche DevOps, le Cloud Native cherche à rassembler les équipes Dev et Ops autour d’un
objectif commun long terme : celui de la création de valeur business par les applications.

• L’approche DevOps permet de converger vers une approche Cloud Native avec l’automatisation des
processus et des technologies entre les équipes, de façon à intégrer plus rapidement les innovations
dans les cycles de développement et de déploiement d’une application Cloud Native.

• En parallèle du Cloud Native, l’adoption des méthodes Agiles va permettre d’intégrer les équipes
métier dans cette collaboration avec les équipes techniques et de développement. L’idée est de
collaborer pour délivrer une itération en améliorant le produit à chaque livraison de façon continue.

26
Les microservices

• Les microservices désignent à la fois une architecture et une approche de développement logiciel qui
consiste à décomposer les applications en éléments les plus simples, indépendants les uns des autres.
Contrairement à une approche monolithique classique, selon laquelle tous les composants forment une
entité indissociable, les microservices fonctionnent en synergie pour accomplir les mêmes tâches, tout
en étant séparés.

• Pour communiquer entre eux, les microservices d'une application utilisent le modèle de
communication requête-réponse. L'implémentation typique utilise des appels API REST basés sur le
protocole HTTP. Les procédures internes (appels de fonctions) facilitent la communication entre les
composants de l'application.

27
Les Conteneurs

• Tout comme le secteur du transport utilise des conteneurs pour


isoler les différentes marchandises à transporter à bord des
navires, des trains, des camions et des avions, le développement
logiciel a de plus en plus recours au concept de
conteneurisation.

• Un package logiciel unique, appelé « conteneur », regroupe le


code d’une application avec les fichiers de configuration, les
bibliothèques et les dépendances requises pour que l’application
puisse s’exécuter. Ceci permet aux développeurs et aux
professionnels de l’informatique de déployer les applications de
façon transparente dans tous les environnements.

28
Partie 2: Création des APIs REST simple en
node js et express js

 Introduire Express et Node js


 Créer des APIs REST
 Authentifier et autoriser une API REST avec JWT

29
Chapitre 1:Introduire Express et Node js

1. Rappel du concept des APIs REST

Une API (Interface de Programmation d'Application) est un outil qui permet à deux systèmes
informatiques différents de communiquer automatiquement, sans intervention humaine.

Elle agit comme un pont, facilitant l'échange d'informations entre un fournisseur (qui donne les
données) et un utilisateur (qui les utilise). On peut la voir comme un contrat précisant ce que
l'utilisateur demande (appel) et ce que le fournisseur répond (réponse).

30
Avantages des APIs

 Simplicité d'interaction : Les APIs permettent d'interagir avec un système sans avoir à
comprendre sa complexité ou son fonctionnement interne. Par exemple, tu peux afficher une
carte Google Maps sur ton site web sans savoir comment Google construit ses cartes.

 Spécialisation et simplicité d'utilisation : Chaque API est souvent conçue pour un cas d'usage
précis, ce qui la rend facile à comprendre, à utiliser et à sécuriser. Par exemple, une API météo
te permet d'afficher uniquement la température et les prévisions pour une ville donnée.

 Partage de données : Les APIs facilitent le partage sécurisé de vos données avec vos clients et
d'autres utilisateurs externes. Par exemple, une banque utilise une API pour permettre à ses
clients de consulter leur solde via une application mobile ou un site tiers, tout en garantissant la
sécurité des données partagées.

31
l'API REST ?

• Roy Fielding a créé REST (Representational State Transfer), un style architectural très utilisé pour
développer des services web.

• API REST permet à différents systèmes informatiques de communiquer entre eux via le protocole
HTTP de manière simple et efficace.

• API REST expose un ensemble d'URLs (endpoints) représentant différentes ressources, ainsi que
des méthodes HTTP standard comme GET, POST, PUT, DELETE pour effectuer des opérations sur
ces ressources. Par exemple, en utilisant une API REST, vous pouvez envoyer une requête HTTP
GET à une URL spécifique pour récupérer des données, ou une requête POST pour créer de
nouvelles données sur le serveur.

• Les données renvoyées peuvent être en JSON, XML, ou HTML.

• Exemple: Une requête GET sur https://api.exemple.com/utilisateurs pourrait renvoyer la liste des
utilisateurs au format JSON.

32
Comment fonctionne une API REST?

• REST détermine comment organiser et structurer les URLs (endpoints) pour représenter des
ressources.

• Chaque URL est connue sous le nom de demande (request), tandis que les données renvoyées sont
appelées réponse (response).

• Une API REST exploite les méthodes HTTP pour effectuer différentes actions sur les ressources

33
2. Rappel des méthodes du protocole http

HTTP (Hypertext Transfer Protocol) est créé pour fournir la communication entre les clients et le
serveur. Il fonctionne en tant qu’une requête et une réponse. Il existe deux méthodes HTTP
principalement utilisées: GET et POST

La méthode GET

La méthode GET de HTTP demande des données d’une source spécifiée. Les demandes GET peuvent
être mises en cache et rester dans l'historique du navigateur. Il ne doit jamais être utilisé lorsque vous
travaillez sur des données sensibles.
La méthode POST

La méthode POST envoie les données à traiter à une source spécifiée. Contrairement à la méthode
GET, les requêtes POST ne sont jamais paramétrées, elles ne restent pas dans l'historique du navigateur
et il est plus sécurisé pour des données sensibles.

34
Comparaison des méthodes GET et POST

GET POST
But principal Récupérer des données. Envoyer des données pour traitement.
Les paramètres sont visibles dans Les paramètres sont dans le corps de la
Visibilité dans l'URL
l'URL. requête.
Reste dans l’historique de Ne reste pas dans l’historique de
Historique
navigateur. navigateur.

Cacheable Oui, peut être mis en cache. Non, n'est pas mis en cache.

Le POST est un peu plus sûr que GET car


Il est moins sécurisé que le POST
il ne reste pas dans l’historique du
Sécurité car les données envoyées font partie
navigateur ni dans les journaux du serveur
de l'URL.
Web.

35
Outre les méthodes GET et POST, il existe d'autres méthodes.

Méthodes Descriptions
PUT Remplacer ou modifier une ressource existante

DELETE Supprimer une ressource spécifique.

PATCH Modifier partiellement une ressource existante.

Similaire à GET, mais elle ne récupère que les en-têtes HTTP de la


HEAD
réponse, sans le corps.

Permet de demander au serveur quelles sont les méthodes HTTP autorisées


OPTIONS
pour une ressource spécifiée.

36
3. Définition de l’écosystème Node JS

 Au cours de ses 20 premières années, JavaScript a été utilisé principalement pour les scripts côté client.
Étant donné que JavaScript ne pouvait être utilisé qu’à l’intérieur de la balise <script>, les développeurs
devaient travailler dans plusieurs langages et frameworks entre les composants frontend et backend. Plus
tard est apparu Node.js, qui est un environnement d’exécution comprenant tout ce qui est nécessaire pour
exécuter un programme écrit en JavaScript.

 Node.js est un environnement pour développer et déployer des applications web à base du Javascript.

 Node.js est un environnement d’exécution single-thread, open-source et multi-plateforme permettant de


créer des applications rapides et évolutives côté serveur.

 Il fonctionne avec le moteur d’exécution JavaScript V8 et utilise une architecture d’E / S non bloquante et
pilotée par les événements, ce qui le rend efficace et adapté aux applications en temps réel.

37
• Environnement d'exécution single-thread :

Lorsque l'on dit que Node.js est single-thread, cela signifie qu'il utilise un seul thread (fil d'exécution)
pour traiter les requêtes et exécuter le code. Contrairement à certains environnements d'exécution,
comme les serveurs traditionnels qui utilisent un modèle multi-thread pour gérer les connexions,
Node.js utilise un seul thread pour gérer toutes les opérations.

• Open-source et multi-plateforme :

Node.js est open-source, ce qui signifie que son code source est disponible publiquement et que toute
personne peut contribuer à son développement et l'améliorer.
Il est également multi-plateforme, ce qui signifie qu'il peut fonctionner sur différentes plates-formes
matérielles et logicielles, telles que Windows, macOS et Linux.

• Applications rapides et évolutives côté serveur:

Node.js est utilisé pour développer des applications côté serveur, ce qui signifie qu'il gère les requêtes
provenant des clients (comme les navigateurs web) et fournit des réponses appropriées..

38
• Moteur d'exécution JavaScript V8 :

V8 est le moteur d'exécution JavaScript développé par Google et utilisé par Node.js pour exécuter du code
JavaScript. Il convertit le code JavaScript en code machine exécutable par l'ordinateur.

• Architecture d'E/S non bloquante et pilotée par les événements :

L'E/S (Entrée/Sortie) se réfère aux opérations de lecture et d'écriture de données depuis ou vers un
périphérique, tel qu'un disque dur ou un réseau. Dans Node.js, ces opérations sont gérées de manière non
bloquante, ce qui signifie que le thread principal peut continuer à exécuter d'autres tâches pendant que les
opérations d'E/S sont en cours.
De plus, Node.js utilise une architecture pilotée par les événements, où les opérations sont déclenchées par
des événements, tels que les requêtes HTTP entrantes. Cette approche permet à Node.js de réagir
rapidement aux événements et de traiter de multiples requêtes simultanément sans bloquer le thread
principal.

39
• Node.js utilise l’architecture « Single Threaded Event Loop » pour gérer plusieurs clients
en même temps.( c-a-d dans ce modèle, il y a un seul thread (le thread principal) qui gère
toutes les requêtes entrantes et les événements, et le serveur utilise une boucle
d'événements (Event Loop) pour traiter les requêtes de manière asynchrone et non
bloquante.

40
Caractéristiques de Node.js

Node.js a connu une croissance rapide au cours des dernières années. Cela est dû à la vaste liste de
fonctionnalités qu’il offre :

 Facile : Node.js est assez facile à prendre en main.


 Évolutif : Il offre une grande évolutivité aux applications. Node.js, étant single-thread, est capable
de gérer un grand nombre de connexions simultanées avec un débit élevé
 Vitesse : L’exécution non bloquante des threads rend Node.js encore plus rapide et plus efficace.
 Paquets : Un vaste ensemble de paquets Node.js open source est disponible et peut simplifier votre
travail. Aujourd’hui, il y a plus d’un million de paquets dans l’écosystème NPM.
 Backend solide : Node.js est écrit en C et C++, ce qui le rend rapide.
 Multi-plateforme : La prise en charge multi-plateforme vous permet de créer des sites web SaaS,
des applications de bureau et même des applications mobiles, le tout en utilisant Node.js.
 Maintenable – Node.js est un choix facile pour les développeurs, car le frontend et le backend
peuvent être gérés avec JavaScript comme un seul langage

41
Quelques entreprises des plus populaires qui utilisent Node.js aujourd’hui :
 Twitter, Spotify , eBay, LinkedIn

Applications de Node.js

Node.js est utilisé pour une grande variété d’applications. Explorons quelques cas d’utilisation
populaires où Node.js est un bon choix :

 Applications Web en Temps Réel


Exemples : Chat en direct, collaborations en ligne, jeux multijoueurs.

 Applications de Streaming
Exemples : Services de streaming vidéo ou audio (comme Netflix ou Spotify).

 Plateformes de Commerce Électronique


Exemples : Sites de vente en ligne, systèmes de paiement.

 Applications de Big Data


Exemples : Analyse de données en temps réel.

42
Qu’est-ce qu’Express.js ?

Express.js, parfois aussi appelé « Express », est un framework backend Node.js minimaliste et rapide
qui offre des fonctionnalités et des outils robustes pour développer des applications backend
évolutives. Il vous offre le système de routage et des fonctionnalités simplifiées pour étendre le
framework en développant des composants et des parties plus puissants en fonction des cas
d’utilisation de votre application.

43
4. Configuration de l’environnement de développement

Installation de Node.js

Tout d’abord, nous devons télécharger le fichier Windows Installer (.msi) depuis le site officiel de Node.js.

Ce fichier d’installation MSI contient une collection de fichiers d’installation essentiels pour installer,
mettre à jour ou modifier la version existante de Node.js.

Le programme d’installation contient également le gestionnaire de paquets Node.js (npm). Cela signifie
que vous n’avez pas besoin d’installer npm séparément.

Visiter le site officiel : https://nodejs.org/en/

44
Installation de Node.js

Commencer le processus d’installation: Une fois que vous avez ouvert et exécuté le fichier.msi, le
processus d’installation commence.

Node.js vous offre des options pour installer des outils pour les modules natifs. Si vous êtes intéressé par
ces derniers, cliquez sur la case à cocher pour marquer vos préférences, ou cliquez sur Suivant pour
continuer avec la valeur par défaut :

45
Installation de Node.js

Le système terminera l’installation en quelques secondes ou minutes et vous montrera un


message de réussite. Cliquez sur le bouton Terminer pour fermer le programme d’installation de
Node.js.

46
Installation de Node.js

Vérifier l’installation de Node.js

Pour vérifier l’installation et confirmer que la bonne version a été installée, ouvrez l’invite de commande
votre PC et saisissez la commande suivante :

node –v

Avec Node, le gestionnaire de paquet NPM sera automatiquement installé

npm –v

npm permet de gérer vos dépendances et de lancer vos scripts

47
Généralement vous aurez besoin des commandes suivantes :

 npm install : installe le projet sur votre machine.


 npm start : démarre le projet.
 npm test : lance les tests du projet.
 npm run dev : lancer un environnement de développement.

48
Etape 1 : Création du fichier package.json

1- Commencer par créer un nouveau répertoire qui sera le nom du projet


2- Taper la commande npm init
3- Créer un fichier index.js

A la fin de cette étape, nous aurons Un fichier package.json contant les paramètres du projet ainsi
que les dépendances future.

49
Etape 2 : Installation du serveur Express

Pour installer le framework Express dans le projet, il faut exécuter la commande suivante :

npm install Express


Cette commande a pour but de télécharger depuis NPM remote repository la librairie Express ainsi que
l’ensemble des librairies dont Express a besoin pour fonctionner dans votre répertoire de travail, dans le
répertoire node_modules.

50
Pourquoi est ce qu’on a besoin d’ajouter la dépendance dans package.json?

Le fichier package.json répertorie toutes les dépendances (bibliothèques) utilisées dans le projet, ainsi que
leurs versions spécifiques. Cela permet à d'autres développeurs de savoir quelles dépendances sont
nécessaires pour faire fonctionner l'application. Aussi, en spécifiant les dépendances dans package.json,
vous assurez la répétabilité de l'environnement de développement. Cela signifie qu'un autre développeur
(ou vous-même sur un autre système) peut installer exactement les mêmes versions des dépendances, ce
qui garantit un comportement cohérent de l'application.

51
Etape 3 : Lancement du serveur Express

=> Dans cette étape, la librairie est installée dans notre


projet, l’étape suivante consiste à appeler Express dans
le fichier index.js (Une fois que le module Express est
importé, vous pouvez créer une nouvelle instance
d'application en appelant simplement la fonction
express(), en créant une nouvelle instance d'une
application Express et l'assigne à la variable app. Cette
instance représente votre application et sera utilisée pour
configurer les routes, les middleware, et écouter les
requêtes HTTP).

Pour cela on va utiliser l’éditeur Visual Studio Code


=>L’étape suivante consiste à lancer le serveur et le
mettre à l’écoute sur un port donné. Ajoutons le bout de
code suivant:

Pour lancer le Serveur, taper sur


Un terminal la Commande :
node index.js
52
5. L’essentiel du Node js

En Node.js, un module est simplement un fichier JavaScript contenant des fonctions, des objets ou des
variables que vous souhaitez partager entre plusieurs fichiers. Les modules vous permettent de
modulariser votre code, de le rendre plus facile à comprendre et de le réutiliser facilement.

Les fichiers de module sont fondamentaux pour organiser et structurer une application Node.js en
modules réutilisables et autonomes.

Pour créer un module en Node.js, voici les étapes à suivre :


Etape 1 : Créer un fichier JavaScript : Vous devez créer un fichier JavaScript contenant le code que
vous souhaitez exporter en tant que module. Par exemple, si vous souhaitez créer un module pour
calculer la somme de deux nombres, vous pouvez créer un fichier nommé "sum.js".
Etape 2: Définir les fonctions, les objets ou les variables que vous souhaitez exporter : Dans votre
fichier JavaScript, définissez les fonctions, les objets ou les variables que vous souhaitez exporter en
utilisant la syntaxe module.exports. Par exemple, voici un exemple de module qui exporte une fonction
de somme :

53
Etape 3: Importer le module : Pour utiliser le module dans un autre fichier JavaScript, vous devez
l'importer en utilisant la syntaxe require. Par exemple, pour utiliser le module "sum.js" que nous avons
créé ci-dessus, vous pouvez l'importer dans un autre fichier JavaScript en écrivant :

Dans cet exemple, nous avons importé le module "sum.js" à l'aide de l'instruction require en passant le
chemin relatif vers le fichier "sum.js". Nous avons ensuite utilisé la fonction sum exportée par le module
pour calculer la somme de deux nombres.

En résumé, pour créer un module en Node.js, vous devez définir les fonctions, les objets ou les variables
que vous souhaitez exporter dans un fichier JavaScript, utiliser la syntaxe module.exports pour exporter
le code, puis importer le module dans d'autres fichiers JavaScript à l'aide de l'instruction require.

54
Depuis l'arrivée de la norme ES6 du langage, une nouvelle directive est apparue : il s'agit de la directive
"import". Cette directive apporte de nouveaux avantages mais nécessite que le module que vous importiez
la prenne en charge.

La directive "require" indique à JavaScript d'importer la totalité du module demandée. Si le module en


question est lourd, cela peut allonger le délai d'affichage d'une page. La directive "import" permet de
n'importer qu'une partie spécifique d'un module. On gagne ainsi en légèreté et en rapidité de traitement.
De plus, la directive import peut être utilisée de manière asynchrone. On peut continuer à exécuter du
code ou à effectuer d'autres imports en parallèle de votre import initial. Ce n'est pas le cas de "require",
qui fonctionne de manière synchrone et doit attendre la fin de l'import précédent avant de s'exécuter.

55
Dans NodeJS, il peut y avoir une confusion entre les deux directives. Par exemple, pour la plateforme
Express JS, on trouve sur internet des morceaux de code avec les deux directives.

// Import avec require


const express = require("express");
//Import avec import
import express from "express";

Pourtant, la plateforme Express ne gère pas la directive "import". Si vous essayez cette directive sans
avoir installé d'autres modules, vous obtiendrez le message d'erreur "express has no default export". La
raison pour laquelle la directive "import" va fonctionner dans certains codes est la présence d'une autre
librairie, Babel.

Utilisation de Babel :

Babel est un transcompilateur JavaScript qui permet de convertir du code écrit dans des versions plus
récentes de JavaScript (comme ES6/ES2015 et au-delà) en code JavaScript compatible avec des
environnements plus anciens ou des environnements qui ne prennent pas encore en charge ces
fonctionnalités.

L'une des fonctionnalités de Babel est la capacité à transformer automatiquement les instructions
"import" en instructions "require" lorsque vous utilisez ES6 dans votre code et que vous exécutez votre
application Node.js.

56
Les bibliothèques standard Node.js : Voici la liste des bibliothèques contenues dans Node.js
considérées comme stables:

 assert : pour faire des tests.


 console : utilisée pour afficher des messages dans la console..
 debugger : Pour ajouter des points d'arrêt et exécuter le code pas à pas....
 dns : les noms de domaines.
 event : tout sur la gestion des événements.
 fs : tout sur le système de fichiers.
 global : Accéder à des variables globales.
 http : Pour créer des serveurs HTTP et des clients HTTP.
 path : gestion des chemins sur un système de fichier.

57
Suite des bibliothèques standards Node.js

 os : gestion du système: dossiers temporaires, noms d'hôtes, ...


 timers : fournit des fonctionnalités pour la gestion du temps.
 tls : pour la création de serveurs et de clients TLS/SSL sécurisés.
 dgram : pour communiquer avec d'autres applications via le protocole UDP
 zlib : compression et lecture des formats gzip.

Pour plus d’informations on peut visiter le site de la documentation officielle


https://nodejs.org/api/

58
Chapitre 2: Créer des APIs REST

1. API REST exposant des opérations CRUD sur un fichier Json

Etape 1 : Présentation de notre source de données

Etant donné que nous n’avons aucune route configuré, sur le navigateur, si on tape 127.0.0.1:80: on aura
le message d’erreur suivant:

Une fois que le serveur est lancé, on pourra développer nos API Rest, deux étapes sont nécessaires :

1- Les ressources (fichiers json, bases de données Mongodb ou mysql….)


2- Les routes : (les chemins pour récupérer , ajouter, modifier et supprimer les données disponibles
dans nos ressources)

59
Etape 1 : Présentation de notre source de données

Nous allons considérer un fichier equipes.json contenant un ensemble d’équipes de foot. L’objectifs
de cette section est d’exposer les opérations CRUD(Create, Remove, Update,Display) sur cette
source de données

Ainsi les routes que nous allons considérer sont les suivantes:

 GET /equipes(display)
 GET /equipes/:id (display)
 POST /equipes(create)
 PUT /equipes/:id (update)
 DELETE /equipes/:id (remove)

60
2. Test de l’API REST avec Postman

Notre source de données est le fichier equipes.json


contenant des Équipes.
Chaque équipe dispose des champs id, name, country
=>Placer ce fichier dans la racine de votre projet. Afin de
tester nos api rest, nous allons installer l’outil Postman

61
Postman, c'est quoi ?

Postman est officiellement présentée comme une plateforme API pour la création et l’utilisation d’API.
D’une manière générale, Postman est une plateforme qui permet de simplifier chaque étape du cycle de
vie des API et de rationaliser la collaboration, afin de créer, plus facilement et plus rapidement, de
meilleures API.

Pourquoi utiliser Postman ?

La plupart des utilisateurs de Postman recourent à cette plateforme pour la construction et la


formulation de requêtes, afin de tester des API sans avoir à renseigner de code. Parmi les nombreux
points forts de Postman, on relève :

 la possibilité d’utiliser la plateforme, quel que soit le langage utilisé pour la programmation des API
 une interface utilisateur assez simple et facile à prendre en main
 l’absence de compétences nécessaires en codage.

62
Comment marche Postman ?

Le fonctionnement de Postman se résume le plus souvent à formuler une requête en suivant la structure
spécifique (Verbe http + URI + Version http + Headers + Body) puis à obtenir une réponse.

Le code de réponse HTTP délivré par la plateforme informe ensuite le développeur du statut de la
réponse : "200 OK" pour une requête réussie, "404 Not Found" pour un échec, etc.

Comment télécharger Postman ?

Postman est compatible avec les différents systèmes d’exploitation (Linux, Windows et OS X). Pour
télécharger Postman, il suffit de se rendre sur le site internet officiel de la plateforme.

https://www.postman.com/downloads/

63
Etape 1 : Présentation de notre source de données

Etant donné que nous n’avons aucune route configuré, sur le navigateur, si on tape 127.0.0.1:80: on aura
le message d’erreur suivant:

Une fois que le serveur est lancé, on pourra développer nos API Rest, deux étapes sont nécessaires :

1- Les ressources (fichiers json, bases de données Mongodb ou mysql….)


2- Les routes : (les chemins pour récupérer , ajouter, modifier et supprimer les données disponibles
dans nos ressources)

64
Etape 2 : Route GET /equipes : Ajoutons le bout de code suivant:

Le framework Express Nous propose des méthode get, post, put delete pour manipuler les
données
 faites ctrl + c : pour Annuler le serveur puis relancer node index.js
65
Etape 2 : Route GET / equips

Avec POSTMAN, on va créer une collection pour nos 4 requetes

66
Etape 2 : Route GET / equipes

Afin de récupérer les données, ajoutons la ligne de code


suivante

Nous avons remplacé la méthode send par la


méthode json En effet notre API REST va retourner
un fichier JSON au client Et non pas du texte ou un
fichier html Nous avons également Ajouté le code de
status http ‘statut 200’ qui correspond au code
réponse http Indiquant au client que sa requête s’est
terminée avec succès

67
Etape 2 : Route GET / equipes/:id

La requête suivante est aussi une requête GET avec un paramètre «id»

68
Rappel des Middlewares :

Les middlewares sont des fonctions qui s'exécutent lors de la requête au serveur. Ces fonctions ont accès aux
paramètres de la requête et de la réponse et peuvent donc effectuer beaucoup de choses pour
améliorer/automatiser les fonctionnalités de l'API
Le middleware se situe entre la requête et la réponse : user request -> midlleware -> response

Exemple

Lors d'une requête POST, les données envoyées par le client (comme des données de formulaire ou en
JSON) sont incluses dans le corps (body) de la requête HTTP. Cependant, Node.js ne permet pas d'y accéder
directement. Pour cela, on utilise un middleware.

Ce middleware agit comme un intermédiaire entre l'arrivée de la requête sur le serveur et son traitement par
les routes. Il lit le corps de la requête, extrait les données, et les rend accessibles pour le reste de
l'application. Ainsi, nos routes peuvent facilement utiliser les données envoyées dans la requête POST.

69
La méthode app.use(express.json()) est une méthode d'Express.js qui permet de définir un middleware pour
l'analyse des corps de requête entrants au format JSON.

Route POST /equipes/

Au niveau POSTMAN, il faut envoyer un objet JSON

70
Route PUT / equipes /:id

Pour la requête PUT on doit spécifier comme paramètre l’id de l’objet à modifier

71
Route PUT / equipes /:id

On peut vérifier que la liste a été mis à jour

72
Route DELETE / equipes /:id

Enfin, la requête Delete permettant de supprimer un objet de la liste

73
Exercice

Considérer la ressource joueurs.json


Chaque joueur dispose des champs(id, idEquipe, nom, numero, poste)

1-Développer les opérations crud pour l’entité joueur(4 requetes)


2-Développer la route permettant d’afficher les joueurs d’une équipe via son id(de l’équipe).
3-Développer la route permettant de chercher un joueur a partir de son nom

74

Vous aimerez peut-être aussi