Vous êtes sur la page 1sur 32

Chapitre 3: Les Applications Cloud Native

Réalisé par:
Mayssa Ghribi

Cours Virtualisation et Cloud


Année universitaire 2022/2023 1
Application 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.

 Une application Cloud native est conçue avec une infrastructure basée sur des conteneurs ainsi
qu’une architecture axée sur les microservices.

 Les applications Cloud natives utilisent également l’intégration continue et la distribution


(Livraison)/Déploiement en continu (CI/CD, Continuous Integration/Continuous Delivery).

2
Application Cloud Native

 Pour tirer parti des possibilités de l’approche Cloud Native, il convient de :


 Opter pour un modèle de développement qui repose sur l’utilisation de PaaS, une
plateforme en tant que service. Une PaaS offre aux développeurs un environnement
d’exécution complet: le système d’exploitation, le stockage, l’accès réseau, les logiciels
serveur comme par exemple le système de gestion de base de données, et les runtimes
d’exécution des composants logiciels.
 Intégrer les concepts de DevOps, notamment de livraison et déploiement en continu
de microservices, voire de conteneurs.

 Les microservices, c’est une méthode de design d’applications décomposées en différentes


parties autonomes, qui peuvent être versionnées, déployées et gérées indépendamment les
unes des autres.

3
Application Cloud Native

 Le DevOps, c’est avant tout une démarche qui consiste à faire collaborer étroitement les
équipes de développement et d’études avec les équipes des opérations et d’exploitation.
Cette collaboration implique d’aller jusque dans la responsabilité commune du succès ou
de l’échec.

 Le DevOps, c’est la collaboration entre les développeurs de logiciels et les administrateurs


systèmes dans le but de fournir des logiciels de haute qualité qui répondent aux défis des
clients. Cette démarche crée un environnement de développement dans lequel les tests et la
mise en production sont plus rapides, plus fréquents et plus cohérents.

4
Application Cloud Native

 Un conteneur d’application est une méthode de virtualisation qui permet de regrouper le


code d’une application et toutes ses dépendances dans une seule et même unité indépendante
(le conteneur ou container, en anglais).
 Les applications deviennent ainsi indépendantes de l’environnement dans lequel elles
s’exécutent.
 La virtualisation se fait donc au niveau de l’application et non au niveau de l’infrastructure ce
qui lui permet d’être déployée correctement sur n’importe quel environnement. Cette
indépendance vis-à-vis de l’environnement permet également d’obtenir une application aux
comportements prévisibles.
 La popularité des containers a largement profité de l’apparition d’outils open-source tels que
Docker, ou Kubernetes. 5
Application Cloud Native

 Le « CI » de CI/CD désigne toujours l'« intégration continue », à savoir un processus


d'automatisation pour les développeurs. Avec l’intégration continue, les développeurs
fusionnent aussi souvent que possible leurs changements de code vers la branche
principale (un référentiel partagé). Dès qu’une modification est validée, des processus
automatisés de build et de test sont exécutés pour valider l’exactitude de la modification.
 La livraison continue (CD) est une extension de CI, où le logiciel est conçu, configuré et
paramétré de manière à ce qu’il puisse être mis en production automatiquement et à tout
moment.
 Le déploiement continu va encore plus loin que la livraison continue, en orchestrant
automatiquement le déploiement des applications au client à chaque changement.
6
Application Cloud Native

Les avantages de l’approche Cloud native sont les suivants :


•Développement accéléré. Avec des applications basées sur des microservices et des
systèmes de test intégrés aux déploiements de production, les équipes de développement
peuvent mettre à jour, réparer et publier des applications plus rapidement.
•Protection contre les défaillances. Étant donné que les conteneurs sont isolés, une
défaillance au sein d’un conteneur n’a aucun impact sur les autres : une application Cloud
native est donc intrinsèquement plus fiable.
•Évolutivité simple. Une application Cloud native peut évoluer automatiquement pour
répondre aux besoins futurs de l’entreprise.
•Technologies ouvertes. Les applications Cloud natives s’appuient souvent sur des
technologies Open Source et reposent sur la transparence et l’interopérabilité. 7
Application Cloud Native
Pour utiliser la puissance de l’application Cloud native, les entreprises doivent :

•Adopter des plates-formes conformes aux standards du secteur et offrant une


flexibilité maximale. Les plates-formes de développement Cloud natives accélèrent
l’écriture de code, permettent une évolutivité fiable des applications et garantissent une plus
grande sécurité. Les intégrations de chaînes d’outils précâblées contribuent à l’accélération
du développement et de la fourniture.

•Choisir une plate-forme qui prend en charge la portabilité entre les Clouds. Une plate-
forme Cloud native qui prend en charge la portabilité des applications entre diverses
ressources peut optimiser la flexibilité et le déploiement sur différents Clouds.

•Sélectionner une plate-forme qui évite toute dépendance. Lors de l’utilisation d’un
environnement Cloud as-a-service public propriétaire, les applications et les données
peuvent être liées à cet environnement précis. En choisissant une plate-forme offrant une
flexibilité maximale, il est plus facile et moins onéreux de déplacer les applications vers la
ressource Cloud optimale. 8
Application Cloud Native

Facteur Explication
1 - Base de code Base de code unique pour chaque microservice, stockée dans son propre référentiel. Suivi avec
le contrôle de version, elle peut être déployée sur plusieurs environnements (AQ,
préproduction, production).
2 – Dépendances Chaque microservice isole et package ses propres dépendances, en adoptant les modifications
sans avoir d’impact sur l’ensemble du système.
3 – Configurations Les informations de configuration sont déplacées hors du microservice et externalisées par le
biais d’un outil de gestion de configuration en dehors du code. Le même déploiement peut se
propager entre les environnements avec la configuration appropriée appliquée.
4 – Services de stockage Les ressources auxiliaires (magasins de données, caches, répartiteurs de messages) doivent être
exposées via une URL adressable. Cela dissocie la ressource de l’application, ce qui lui permet
d’être interchangeable.
5 – Générer, mettre en Chaque version doit appliquer une séparation stricte entre les étapes de génération, de mise en
production, exécuter œuvre et d’exécution. Chacune doit être marquée avec un ID unique et prendre en charge la
possibilité de restaurer. Les systèmes CI/CD modernes aident à respecter ce principe.
6 – Processus Chaque microservice doit s’exécuter dans son propre processus, isolé des autres services en
cours d’exécution. Externalisez l’état requis à un service de stockage tel qu’un cache distribué
ou un magasin de données.
9
Application Cloud Native
Facteur Explication
7 – Liaison de port Chaque microservice doit être autonome avec ses interfaces et ses fonctionnalités exposées sur son
propre port. Cela permet l’isolement d’autres microservices.
8 – Concurrence Lorsque la capacité doit augmenter, effectuez un scale-out des services horizontalement sur plusieurs
processus identiques (copies) par opposition au scale-up d’une seule grande instance sur l’ordinateur le
plus puissant disponible. Développez l’application pour qu’elle effectue un scale-out simultané dans des
environnements cloud transparents.
9 – Élimination Les instances de service doivent pouvoir être éliminées. Privilégiez le démarrage rapide pour augmenter
les opportunités d’extensibilité et les arrêts appropriés pour laisser le système dans un état correct. Les
conteneurs Docker ainsi qu’un orchestrateur répondent intrinsèquement à cette exigence.
10 – Parité Dév/Prod Conservez les environnements dans le cycle de vie de l’application aussi similaire que possible, ce qui
évite les raccourcis coûteux. Ici, l’adoption des conteneurs peut apporter une contribution considérable
en favorisant le même environnement d’exécution.
11 – Journalisation Traitez les journaux générés par les microservices en tant que flux d’événements. Traitez-les avec un
agrégateur d’événements. Propagez les données de journal aux outils de gestion des
journaux/d’exploration de données comme Azure Monitor ou Splunk et éventuellement à l’archivage à
long terme.
12 – Processus Exécutez des tâches d’administration/de gestion, telles que le nettoyage des données ou l’analytique
d’administration informatique, en tant que processus ponctuels. Utilisez des outils indépendants pour appeler ces tâches
à partir de l’environnement de production, mais séparément de l’application. 10
Introduction à IBM Cloud

 La plateforme IBM Cloud associe la plateforme sous forme de service (PaaS) à


l'infrastructure sous forme de service (IaaS) afin d'offrir une expérience intégrée.

 La plateforme IBM Cloud inclut plusieurs composants qui offrent une expérience cohérente
et fiable.
 Une console robuste utilisée comme serveur frontal pour la création, l'affichage et la
gestion de vos ressources de cloud.
 Un composant Identity and Access Management (IAM) qui authentifie de manière
sécurisée les utilisateurs pour les services de plateforme et contrôle l'accès aux ressources
de manière cohérente dans IBM Cloud.
 Un catalogue composé de centaines de produits pris en charge.
 Un mécanisme de recherche et d'étiquetage pour le filtrage et l'identification de vos
ressources.
 Un système de gestion des comptes et de facturation présentant une utilisation exacte des
plans de facturation et une protection contre la fraude aux cartes de crédit.
11
Introduction à IBM Cloud

 IBM Cloud propose une gamme complète d'options de calcul sur lesquels les
développeurs peuvent exécuter leurs applications.
 Un runtime est un ensemble de ressources informatiques utilisées pour exécuter une
application.
 IBM propose cinq méthodes principales pour déployer, exécuter et faire évoluer les
charges de travail y compris les plateformes (cloud Foundry), les machines (serveurs
virtuelles), des conteneurs (IBM Cloud Kubernets), des serveurs bare metal(serveur
dédidé) et des dispositifs sans serveur.

12
Introduction à IBM Cloud

13
Introduction à IBM Cloud

14
Introduction à IBM Cloud IBM Cloud catalog: Starter kits

Un kit de démarrage (A starter kit) contient un exemple d'application et son environnement


d'exécution, son environnement de ressources et ses services prédéfinis associés.

15
Introduction à IBM Cloud Exemples de kits de démarrage :

• Application Web Node.js avec Express.js: Ce kit de démarrage est préconfiguré en tant
qu'application Web avec Express.js qui utilise l'environnement d'exécution Node.js.
• Microservice Node.js avec Express.js et Microservice Java avec Spring : Ce kit de
démarrage est préconfiguré en tant que microservice avec Express.js ou bien il utilise Spring
Boot. Il permet à l'utilisateur d'utiliser le IBM Cloud Developer Tools CLI pour exécuter et
déboguer localement, puis déployer sur Kubernetes, CloudFoundry ou un pipeline DevOps.
• Microservice Java avec MicroProfile et Java EE: Ce kit de démarrage est préconfiguré en
tant qu'application de microservice Java avec les outils nécessaires pour configurez votre
environnement de développement et déployez-le sur Kubernetes via une chaîne d'outils
DevOps.
16
Introduction à IBM Cloud

• Démarreur de plate-forme Internet des objets: Ce kit de démarrage inclut la plate-


forme IBM Watson IoT qui utilise l'exemple Node-RED Node.js application. Avec ce
kit de démarrage, l'utilisateur peut simuler rapidement un appareil IoT, créer des cartes,
générer données, et commencez à analyser et à afficher les données dans le tableau de
bord Watson IoT Platform.
• Mobile de base: Cette application de démarrage mobile pré-provisionne des services
push, en plus de donner un code pour l'application mobile comme point de départ.

17
Introduction à IBM Cloud Catalogue IBM Cloud: Création a starter kit

Voici un exemple de l'application Web Node.js avec le kit de démarrage Express.js :

1. Sélectionnez l'application Web Node.js avec le kit de démarrage Express.js dans le


catalogue, puis cliquez sur Créer application.
2. Remplissez les champs requis dans le formulaire comme le nom de l'application et le
groupe de ressources, qui sont défini p ar défaut. Ensuite, cliquez sur Créer.
3. Vous êtes redirigé vers la page de détails du kit de démarrage. Vous pouvez
télécharger le code en cliquant Télécharger le code.
4. Il est possible de déployer cette application sur le runtime Cloud Foundry, IBM
Kubernetes Service ou Virtual Server, puis configurez le pipeline de livraison
continue.
5. Le kit de démarrage peut également être connecté à plusieurs services.

18
Introduction à IBM Cloud Catalogue IBM Cloud: Création a starter kit

19
Introduction à Cloud Foundry

Cloud Foundry est une plate-forme en tant que service (PaaS) open source sur IBM Cloud
qui vous permet de déployer et de mettre à l'échelle des applications sans gérer de serveurs.

20
Déploiement d'applications Cloud Foundry avec IBM Cloud CLI

Vous pouvez utiliser les commandes ibmcloud dev de Developer Tools sur la ligne de
commande ou la console de développement d'application IBM Cloud basée sur le Web
pour la génération, l'exécution en local et le déploiement d'une application Node.js

IBM Cloud CLI


Activez le développement rapide d'applications et gérez facilement votre compte et vos
ressources IBM Cloud. L'interface de ligne de commande IBM Cloud comprend un
ensemble d'interfaces de ligne de commande et d'outils puissants pour interagir avec IBM
Cloud.
Les commandes cloud Foundry sont accessibles en utilisant la commande: ibmcloud cf
Pour consulter la liste complète de toutes les commandes disponibles, executer:
ibmcloud cf help –a

21
Déploiement d'applications Cloud Foundry avec IBM Cloud CLI
 Avant de commencer, vérifier que vous avez un accès à un compte IBM Cloud et que IBM
Cloud CLI est installé sur votre PC.
 Connectez-vous à votre compte IBM Cloud. Si vous n'avez pas de compte, vous pouvez
vous enregistrer pour obtenir un compte gratuit.

Ou bien tapez: ibmcloud login et suivre les


instructions

Vous êtes invité à entrer votre email, votre mot de


passe et votre région pour déployer votre application.

 Une fois connecté, configurez le point de


terminaison de l'API Cloud Foundry en exécutant
la commande suivante :
ibmcloud target --cf
22
Déploiement d'applications Cloud Foundry avec IBM Cloud CLI

Déployer votre première application Node.js.


Étape 1 : comprendre l'exemple d'application
 Clonez l'exemple d'application en exécutant la commande suivante: git clone
https://github.com/IBM-Cloud/get-started-node
 Accéder au dossier get-started-node, qui contient les fichiers suivant:

23
Déploiement d'applications Cloud Foundry avec IBM Cloud CLI

Avant de continuer à explorer les fonctionnalités de Cloud Foundry, nous devons


comprendre l'exemple d'application Node.js. Il existe plusieurs fichiers et dossiers dans
l'exemple d'application, et chacun est utilisé à des fins différentes. (Les couleurs qui mettent
en évidence le texte sont décrites dans le graphique à droite de la structure du fichier.)

 Le fichier package.json fournit des métadonnées sur l'application et ses dépendances, et


comment l'application peut être démarrée, c'est-à-dire le fichier JavaScript que vous
utilisez dans "npm start".
 Lorsque vous exécutez "npm install", Node.js extrait les dépendances de NPM et les
place dans "node_modules".
 Dans ce projet, server.js est utilisé comme point de départ de l'application.
 Pour déployer des applications Cloud Foundry sur IBM Cloud, vous avez besoin d’un
fichier manifest.yml. Le fichier manifeste répertorie les configurations de déploiement, y
compris le nom de l'application, la quantité de mémoire que l'instance doit avoir et le
routage.
24
Déploiement d'applications Cloud Foundry avec IBM Cloud CLI

 Pour empêcher le téléchargement de fichiers et de dossiers non essentiels lorsque vous


déployez votre application, créez un fichier « ignore file ».
 Le fichier .cfignore empêche cf push de télécharger tous les fichiers et dossiers répertoriés
dans le fichier.

25
Déploiement d'applications Cloud Foundry avec IBM Cloud CLI

 Étape 2 : Déployer l'exemple d'application


 Ouvrez le dossier de l'exemple d'application et exécutez ibmcloud cf push.
 Comme le montre la diapositive, les déploiements Cloud Foundry sont livrés avec une
gamme de valeurs par défaut, y compris mais pas limité au buildpack, à la pile et au nombre
d'instances.
 Étant donné que vous avez spécifié "random-route: true" dans manifest.yml, Cloud Foundry
fournit un route nommée "getstartednode-patient-elephant.mybluemix.net".

26
Déploiement d'applications Cloud Foundry avec IBM Cloud CLI

Étape 3 : Vérifier si votre application est en cours d'exécution


Vous pouvez afficher les détails de votre application en exécutant la commande suivante:
ibmcloud cf app GetStartedNode

Le statut de base d'une demande comprend :


• Nom de l'application.
• État demandé.
• Parcours de l'application. Une application peut avoir plusieurs routes.
• Quand « cf push » a été exécuté pour la dernière fois.
• Version d'image du conteneur de base (pile).
• Buildpack utilisé pour le déploiement.
• Nombre d'instances en cours d'exécution.
• Utilisation de la mémoire.
• État de santé et statistiques de chaque instance en cours d'exécution pour cette application.
Ici, nous utilisons l'instance par défaut pour ce déploiement.
27
Déploiement d'applications Cloud Foundry avec IBM Cloud CLI

Pour découvrir comment vos répertoires d'application sont structurés après leur déploiement,
utilisez SSH vers l'application déployée en exécutant la commande suivante :
ibmcloud cf ssh GetStartedNode
28
Déploiement d'applications Cloud Foundry avec IBM Cloud CLI

Les étapes suivantes vous guide dans les procédures de génération, d'exécution en local et de
déploiement d'une application Node.js à l'aide de la console de développement
d'application IBM Cloud.

29
Déploiement d'applications Cloud Foundry avec IBM Cloud CLI

Étape 1: Création d'une application Node.js


1.Connectez-vous à votre compte IBM Cloud. Si vous n'avez pas de compte, vous pouvez
vous enregistrer pour obtenir un compte gratuit.
2.Accédez à la console de développement d'applications IBM Cloud et sélectionnez un kit de
démarrage écrit en Node.js ou cliquez sur la vignette Créer une application pour utiliser un kit
de démarrage vierge. Sélectionnez ensuite l'onglet Créer.
3.Donnez un nom à votre application et sélectionnez un groupe de ressources.
4.Si vous choisissez de continuer avec l'interface de ligne de commande plutôt que la chaîne
d'outils, téléchargez le projet sur votre machine locale, unzip puis cd dans le répertoire racine.

30
Déploiement d'applications Cloud Foundry avec IBM Cloud CLI

Étape 2: Ajout d'un service


1.Revenez à votre application dans IBM Cloud App Service.
2.Sur la page Détails de l'application, cliquez sur Créer un service, ou sur Connecter des
services existants si vous avez déjà des services que vous souhaitez connecter à cette
application.
3.Sélectionnez le type de service que vous souhaitez et suivez les invites pour ajouter un
service existant à votre application ou pour créer une instance de service. Ainsi, pour ajouter
une base de données NoSQL à votre application, sélectionnez la catégorie Bases de données,
puis sélectionnez Cloudant pour bénéficier d'un développement gratuit avec le plan Lite. IBM
Cloud met à disposition le service pour vous, en fonction du plan sélectionné.
4.Une fois le service mis à disposition, cliquez sur Télécharger le code pour régénérer
l'application avec le logiciel SDK qui se connecte à votre service.

31
Déploiement d'applications Cloud Foundry avec IBM Cloud CLI

Étape 3: Exécution d'applications en local


1.Utilisez la commande ibmcloud dev build pour générer votre application.
2.Utilisez la commande ibmcloud dev run pour exécuter l'application en local. Votre
application est exécutée dans les conteneurs Docker sur votre système local. Vous pouvez tester
votre application dans un navigateur en accédant à http://localhost:3000.

Étape 4: Déploiement dans IBM Cloud


Utilisez la commande ibmcloud dev deploy pour un déploiement sur IBM Cloud en tant
qu'application Cloud Foundry.

Pour un déploiement sur IBM Container Services dans IBM Cloud, utilisez la commande
suivante :
ibmcloud dev deploy –target container

32

Vous aimerez peut-être aussi