Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Quarkus
  3. Introduction à Cloud Ready et Cloud Native
Extrait - Quarkus Développer des applications microservices en Java pour le cloud et Kubernetes
Extraits du livre
Quarkus Développer des applications microservices en Java pour le cloud et Kubernetes Revenir à la page d'achat du livre

Introduction à Cloud Ready et Cloud Native

Cloud Ready

Cloud Ready, littéralement prêt pour le cloud en français, désigne un ensemble de principes de développement d’applications pour les rendre aptes à être déployées dans le cloud, ou dans un orchestrateur de conteneurs.

Lorsqu’on parle d’applications Cloud Ready, on cite souvent les 12 factor app principles qui sont un ensemble de douze principes (ou facteurs) pour le développement d’applications à déployer dans le cloud ou Kubernetes. Ces principes ont été définis par la société Heroku et sont disponibles à l’URL : https://12factor.net/fr/

images/03EP01.png

Ces douze facteurs sont les suivants :

1. Base de code : avoir une base de code unique avec un système de contrôle de version pour tous les déploiements.

2. Dépendances : déclarer explicitement et isoler les dépendances.

3. Configuration : stocker la configuration dans l’environnement.

4. Services externes : traiter les services externes comme des ressources attachées. 

5. Assembler, publier, exécuter : séparer strictement les étapes d’assemblage et d’exécution.

6. Processus : exécuter l’application comme un ou plusieurs processus sans état.

7. Associations de ports : exporter les services via des associations...

Applications prévues pour les conteneurs

Les applications Cloud Ready vont, la plupart du temps, être déployées dans un conteneur ou dans une solution de type Function-as-a-Service (FaaS).

Il est donc utile, dans le développement d’une application, de prendre en compte son fonctionnement au sein d’un conteneur. Bonne nouvelle, comme nous l’avons déjà précisé, Quarkus a été conçu pour fonctionner dans un conteneur.

Un conteneur va démarrer une application dans un processus isolé, à partir d’une image de conteneur généralement créé lors de la phase d’intégration ou de déploiement continu d’une application. La technologie de conteneur la plus courante est Docker, mais les orchestrateurs modernes de conteneurs ainsi que les fournisseurs cloud supportent généralement n’importe quel conteneur obéissant au standard OCI (Open Container Initiative).

Red Hat a écrit un livre blanc qui liste sept principes pour le développement d’applications pensées pour les conteneurs. Il est schématisé dans cette infographie :

images/03EP02.png

Source https://kubernetes.io/blog/2018/03/principles-of-container-app-design/ - CC BY 4.O

Ces principes sont les suivants :

  • Une seule préoccupation : chaque conteneur répond à une seule préoccupation...

Cloud Native

Nous utiliserons dans ce livre le terme anglais Cloud Native et pas Cloud Natif car il désigne une approche et une architecture reconnues.

Pour reprendre la définition de Wikipédia (https://en.wikipedia.org/wiki/Cloud-native_computing) :

Cloud Native est une approche de développement logiciel qui utilise le cloud pour « créer et exécuter des applications évolutives dans des environnements modernes et dynamiques tels que les clouds publics, privés et hybrides ».

Les technologies telles que les conteneurs, les micro-services, les fonctions serverless et l’infrastructure immuable [...] sont des éléments communs de ce style architectural.

Certaines fonctionnalités offertes par un fournisseur cloud sont dites serverless ou sans serveur en français. C’est bien sûr un abus de langage, il y a bien des serveurs quelque part (dans les centres de données du fournisseur de cloud), mais ceux-ci ne sont pas visibles pour l’utilisateur qui va utiliser un service totalement géré par le fournisseur cloud proposant de la mise à l’échelle à 0 et du paiement à l’utilisation.

Selon sa définition, une application est cloud native si elle utilise les fonctionnalités d’un fournisseur de cloud dans son architecture. C’est le cas par exemple si elle fait usage...