Matthias Kranz, Director Solution Architects chez Red Hat
L’expression Cloud-native n’est pas synonyme de cloud, ni de cloud-enabled. Pour profiter pleinement des avantages considérables du cloud, une entreprise doit se poser la question du développement d’applications cloud-native.
Cloud & Cloud-native: la différence est significative
Le terme cloud fait uniquement référence au déploiement de matériel et des logiciels, tels que les serveurs, le stockage, les bases de données et toutes les formes possibles d’applications et de services.
En revanche, le cloud native décrit une approche de la conception et de l’utilisation des applications, qui exploite les avantages du cloud en termes d’agilité et d’automatisation par exemple. Malgré son nom, le terme cloud native ne fait pas référence au lieu de déploiement des applications, mais à la manière dont celles-ci sont conçues, déployées et gérées. Le fait que les applications soient cloud native ne signifie pas qu’elles doivent nécessairement fonctionner dans le cloud ; un déploiement sur site est également possible. L’objectif du concept cloud-native est d’accroître la vitesse, la flexibilité et la qualité du développement des applications tout en réduisant les risques.
Enfin, la notion de Cloud-enabled signifie simplement que les applications développées de façon traditionnelle sont adaptées pour fonctionner dans le cloud. Une application dans le cloud est une application qui y a été déplacée mais qui a été développée à l’origine pour être utilisée dans un datacenter traditionnel. Il s’agit généralement de progiciels hérités.
La migration vers le cloud nécessite de modifier certaines caractéristiques de l’application ou de l’adapter au cloud. Pour cela, la méthode « Lift-and-Shift » est la plus courante. A l’inverse, une application cloud-native est déjà conçue en tenant compte des principes de multi-tenancy, de l’évolutivité élastique, de la facilité d’intégration et enfin de la gestion du cloud.
Les pierres angulaires d’un développement cloud-native
Le concept de cloud-native se caractérise essentiellement par les quatre points suivants : l’architecture basée sur les services, la communication basée sur les API, l’infrastructure basée sur les conteneurs, et enfin les processus DevOps.
- Les architectures basées sur les services telles que les microservices permettent la construction de services modulaires et peu couplés. D’autres approches d’architecture modulaire (par exemple, les mini-services) offrent aux entreprises un support pour accélérer le développement d’applications sans accroître la complexité.
- Les services sont déployés via des API réduisant ainsi la complexité et les efforts d’extensibilité et de maintenance. Cette conception basée sur les API permet de communiquer uniquement par le biais d’appels d’interface de service sur le réseau, éliminant ainsi les risques de liens directs, de modèles de mémoire partagée ou d’accès direct en lecture au stockage de données d’une autre équipe.
- Les applications cloud-natives sont basées sur des conteneurs qui permettent une véritable portabilité et un fonctionnement des applications dans différents environnements informatiques tels que le cloud public, privé et hybride. La technologie des conteneurs utilise les capacités de virtualisation du système d’exploitation pour répartir les ressources informatiques disponibles entre plusieurs applications tout en garantissant que celles-ci soient sécurisées et isolées les unes des autres. Les applications cloud-natives s’échelonnent horizontalement, de sorte que des instances d’applications supplémentaires peuvent être facilement ajoutées, souvent par le biais de l’automatisation au sein de l’infrastructure du conteneur. La faible surcharge et la haute densité permettent d’héberger plusieurs conteneurs dans la même machine virtuelle ou le même serveur physique. Les conteneurs sont donc idéaux pour la fourniture d’applications cloud-natives.
- Le développement d’applications cloud-native suit des méthodes agiles avec un continuous delivery et des principes DevOps qui se concentrent sur la création et la livraison collaborative d’applications par des équipes de développement, de qualité, de sécurité et d’opérations.
Il existe encore souvent une confusion autour des termes cloud et cloud-native. En principe, les entreprises qui s’appuient sur le cloud peuvent améliorer l’évolutivité et la disponibilité de leurs applications, en fournissant par exemple des ressources à la demande. Toutefois, pour exploiter pleinement les avantages du cloud, il est nécessaire d’adopter une nouvelle façon de développer les applications, et cela conduit au cloud-native. Le développement cloud-native est une approche basée sur des techniques éprouvées de cloud computing qui permettent un développement et une mise à jour rapides des applications tout en améliorant la qualité et en atténuant les risques.