Applications cloud natives : Lancements accélérés, risques réduits, croissance garantie

Partager

Qu’est-ce qu’une application cloud native ?

L’approche cloud native vise à développer et exécuter des applications capables d’exploiter tous les avantages du cloud. Ces dernières années, le cloud a bouleversé l'ordre établi dans presque tous les secteurs. Et la raison est simple. Grâce à lui, les entreprises ont pu réduire les investissements consacrés à leurs data centers internes au profit de ressources de calcul illimitées, disponibles à la demande et facturées à l’utilisation. De fait, la réduction des coûts informatiques a fait tomber les barrières à l’entrée. Désormais, la compétitivité d'une entreprise dépend directement de sa capacité à concrétiser rapidement de nouvelles idées. D'où la montée en puissance des logiciels. Les start-ups l'ont bien compris, c'est pourquoi elles misent sur les approches cloud natives pour disrupter les secteurs traditionnels.

Pour se mettre à l'heure du Cloud Native, les entreprises ont besoin d’une plateforme de création et d’exploitation dédiée, capable d’automatiser et d’intégrer les nouveaux concepts du développement logiciel − du DevOps aux conteneurs, en passant par le déploiement continu et les microservices :





Dans une approche DevOps, développeurs et opérations IT travaillent main dans la main pour automatiser le processus de déploiement logiciel et les modifications d'infrastructure. Cette approche instaure une culture et un cadre propices pour des développements, tests et lancements plus rapides, plus fiables et plus fréquents.

Dans un modèle de déploiement continu, chaque modification applicative est mise en production dès sa finalisation. Nul besoin d’attendre la sortie d'une nouvelle version (au terme de l’intégration de multiples modifications), ni même de planifier une fenêtre de maintenance. Ainsi, chaque lancement devient un « non-événement ». Les équipes déploient des modifications de manière fiable, plus fréquente et moins risquée, tout en raccourcissant drastiquement la boucle de feedback. L’enjeu : intégrer les déploiements au cœur du processus métier et de la compétitivité de l'entreprise.

Les microservices désignent un type d'architecture où une application est développée sous la forme d’une collection de mini-services. Chaque service implémente des fonctionnalités métiers spécifiques, s'exécute dans son propre processus et communique via une API HTTP. Vous pouvez déployer, modifier, monter en capacités et redémarrer chaque microservice de façon indépendante, généralement à partir d'un système automatisé permettant des mises à jour fréquentes en production, sans aucun impact sur le client.

Par rapport aux machines virtuelles (VM) standards, les conteneurs offrent à la fois des gains d'efficacité et de rapidité. Grâce à la virtualisation au niveau du système d’exploitation (OS), vous pouvez diviser une instance d’OS de façon dynamique en plusieurs conteneurs isolés, chacun possédant son propre système de fichiers en écriture et quota de ressources. Le faible impact de la création et suppression des conteneurs, combiné à la haute densité d'une VM unique, font des conteneurs un vecteur idéal pour le déploiement de microservices individuels.


« Ce que nous avons appris, c'est que le marché ne nous attend pas. Peu importe la qualité de l’ingénierie, du développement, du déploiement ou de la formation des équipes. Pour faire mouche, un produit doit sortir au bon moment. Après l’heure, c’est plus l’heure. »

James McGlennon
Vice-président exécutif et DSI, Liberty Mutual Insurance Group



Les avantages des applications cloud natives

Les applications cloud natives sont spécialement conçues pour le cloud. Le principe ? De petites équipes dédiées créent et déploient ces applications à partir d'une plateforme facilement scalable et découplée du matériel. À la clé, les entreprises disposent d'applications hautement agiles, résilientes et déployables dans divers formats de cloud.

Compétitivité

L’approche cloud native implique un revirement des objectifs : d'un simple outil de réduction des coûts informatiques, le cloud se transforme en moteur de votre croissance. À l’ère du logiciel, les grandes gagnantes seront les entreprises capables de développer et déployer rapidement des applications en réponse aux besoins de leurs clients. Une fois déployées, les applications doivent s’exécuter sous forme de services scalables et disponibles en continu.

Flexibilité

Les entreprises peuvent créer des applications qui s’exécuteront sur n’importe quel cloud, sans aucune modification. Leurs équipes ont ainsi la possibilité de migrer ou distribuer leurs applications entre divers clouds publics et privés pour satisfaire leurs priorités et réduire leurs coûts.

Développement optimal

Avec l'approche cloud native, les développeurs n'ont plus à tenir compte des contraintes d'exécution et de montée en charge sur une diversité d'infrastructures cloud. Ils se recentrent ainsi sur l'écriture de code à plus forte valeur ajoutée. Les applications de type « twelve-factor », utilisant des services courants dans des environnements de développement standardisés, suivent un modèle de « contrat » garantissant l'exploitation optimale de la plateforme cloud native sous-jacente.

Alignement des opérations sur les métiers

À travers des processus automatisés, les opérations IT peuvent adopter une approche lean et se mettre au diapason des priorités métiers. Plutôt que de se concentrer sur les tâches d’administration ordinaires, elles peuvent se consacrer à l'amélioration des processus tout en supprimant les risques liés aux erreurs humaines. Enfin, grâce à des corrections et montées de version automatiques à tous les niveaux, elles peuvent éliminer les interruptions de service et l’intervention de techniciens chevronnés.


Comparatif : Applications cloud natives vs. Applications traditionnelles
Applications cloud natives
Applications d’entreprise traditionnelles
Prévisibilité. Les applications cloud natives suivent un cadre ou « contrat » spécifique conçu pour maximiser leur résilience par la description de comportements prévisibles. L’infrastructure orientée conteneurs et hautement automatisée des plateformes cloud conditionne le mode d’écriture logicielle. Les 12 principes qui composent la méthodologie applicative à douze facteurs illustrent bien un tel « contrat ». Imprévisibilité. Intrinsèquement, l’architecture et le modèle de développement des applications traditionnelles les empêchent d’exploiter tout le potentiel des plateformes cloud natives. Ces applications se déclinent dans des versions plus lourdes, plus longues à développer, peu scalables et sujettes à de nombreux points de défaillance uniques.
Abstraction de l'OS. Dans une architecture applicative cloud native, les développeurs utilisent une plateforme comme moyen d'abstraction des dépendances sous-jacentes de l'infrastructure, ce qui simplifie les migrations et montées en charge. La solution d’abstraction la plus efficace ? Une plateforme formalisée, Pivotal Cloud Foundry par exemple, idéale pour des opérations sur une infrastructure cloud comme Google Cloud Platform (GCP), Microsoft Azure ou Amazon Web Services (AWS). Dépendance OS. L’architecture applicative traditionnelle permet aux développeurs de créer des liens de dépendance étroits entre l’application et le système d’exploitation, les matériels, le stockage et autres services sous-jacents. Or, ces dépendances rendent complexe et périlleuse toute migration ou montée en charge des applications vers de nouvelles infrastructures, ce qui ne favorise pas la transition vers un modèle cloud.
Capacités sur mesure. Une plateforme d’applications cloud natives automatise le provisionnement et la configuration de l'infrastructure, permettant ainsi une allocation dynamique de vos ressources selon vos besoins applicatifs. En vous appuyant sur une exécution cloud native, vous optimisez la gestion du cycle applicatif dans sa globalité : des montées en charge jusqu'aux opérations de restauration, en passant par l'utilisation et l'orchestration des ressources disponibles. Capacités surdimensionnées. Pour chaque application, l’approche informatique traditionnelle consiste à concevoir une solution d’infrastructure dédiée et sur mesure (on parle de « snowflakes » en anglais), ce qui allonge les délais de déploiement. Résultat : l’infrastructure est dimensionnée en fonction des estimations de pics de charge, ce qui la laisse le plus souvent en surcapacité sans pour autant pouvoir évoluer au-delà du seuil maximal défini.
Collaboration. L’approche cloud native favorise l'adoption du DevOps. Outre une savante combinaison de talents, de processus et d’outils, vous instaurez une collaboration plus étroite entre vos développeurs et vos opérations IT, avec à la clé l'envoi plus rapide et plus fluide du code applicatif en production. Cloisonnement. Dans une approche traditionnelle, le code applicatif fini passe sans transition des développeurs aux opérations, dont la mission est de mettre ce code en production. La politique interne prend alors le pas sur le client. On assiste à des conflits et renvois de responsabilités qui ralentissent les déploiements et démoralisent les collaborateurs.
Déploiement continu. Les équipes informatiques déploient chaque mise à jour logicielle dès sa finalisation. Résultat : elles raccourcissent leur boucle de feedback et restent ainsi au plus proche des besoins de leurs clients. Le déploiement continu fonctionne encore mieux en conjonction avec d’autres approches, comme le développement centré sur les tests ou l’intégration continue. Développement en cascade. Traditionnellement, les nouvelles versions de logiciels sortent de façon régulière, généralement à des semaines voire des mois d’intervalle, une fois tout le code incorporé dans la version. Pourtant, de nombreux composants sont prêts avant l’heure et n’ont d’autre dépendance que le véhicule artificiel de cette version. Pendant ce temps, les fonctionnalités que les clients demandent, voire exigent, tardent à venir. Si bien que l’entreprise manque de nombreuses occasions de se démarquer, de conquérir de nouveaux clients et d’accroître son chiffre d’affaires.
Indépendance. Une architecture de microservices décompose les applications en une série de mini-services indépendants et faiblement couplés. Ces services sont eux-mêmes rattachés à des équipes de développement autonomes et de petite taille. Cette configuration permet des mises à jour fréquentes et indépendantes, ainsi que des montées en charge et des basculements/redémarrages sans impact sur les autres services. Dépendance. Les architectures monolithiques regroupent de nombreux services disparates dans un seul et même pack de déploiement, avec pour conséquences des dépendances inutiles entre les services, ainsi qu’une perte d’agilité au cours du développement et des déploiements.
Scalabilité automatique. L’automatisation à grande échelle permet d'appliquer un ensemble de règles cohérentes à des environnements et déploiements de toutes tailles. Résultat : vous éliminez les interruptions de service liées aux erreurs humaines. L’approche cloud native va au-delà d'une automatisation ad hoc, cas classique dans l'orchestration traditionnelle orientée virtualisation. De fait, dans une architecture cloud native, l’automatisation et l’orchestration travaillent pour les équipes de manière homogène, plutôt que de contraindre ces dernières à coder de tels processus au cas par cas, pour chaque application. En d’autres termes, l’automatisation simplifie le développement et l’exécution d’applications faciles à gérer. Évolutivité manuelle. Une infrastructure manuelle repose sur des opérateurs humains qui définissent et gèrent les configurations serveurs, réseau et de stockage. Compte tenu du degré de complexité, les opérateurs mettent énormément de temps à diagnostiquer les problèmes et ne parviennent pas à faire évoluer leurs environnements à grande échelle. Les solutions d’automatisation créées manuellement risquent de coder en dur les erreurs humaines dans l’infrastructure.
Restauration accélérée. L’environnement d’exécution et l’orchestrateur de conteneurs ajoutent une couche de virtualisation dynamique à haute densité à vos VM. L’orchestration gère le placement des conteneurs de façon dynamique à travers un cluster de VM. L’objectif est double : assurer à la fois une scalabilité élastique et une reprise/un redémarrage rapide en cas de panne. Reprise lente. Une infrastructure basée sur les VM est conceptuellement inadaptée aux impératifs de rapidité et d’efficacité des microservices. Longues à démarrer et à stopper, les VM individuelles pèsent sur l’infrastructure avant même le déploiement du code applicatif.


Les applications cloud natives vous intéressent ? Voici les points à retenir.

Transformation des opérations IT.

De simple garante du statu quo, votre équipe opérationnelle se transformera en championne de l’amélioration et de l’automatisation des processus pour offrir plus de valeur aux différents métiers. Fini les interventions manuelles. Avec une plateforme cloud native, votre équipe déploie et exploite ses applications tout en profitant de fonctionnalités automatiques de monitoring et de résolution des problèmes.

Priorisation des workloads.

Attention, l’approche cloud native ne convient pas à tous les workloads. Ensemble, les fonctions IT et métiers doivent se concerter pour définir les priorités des workloads existants et nouveaux. Pour chacun, l'objectif est de déterminer la faisabilité technique, l’importance stratégique et le ROI d’une exécution cloud native. Outre des développements entièrement nouveaux, divers modèles de « replatforming » peuvent vous accompagner dans cette évaluation.

Adoption de directives claires pour les développeurs.

Pour exploiter tous les avantages d’une plateforme cloud native, vos développeurs doivent s'en tenir aux principes des 12 facteurs et utiliser des plateformes et services standardisés. Certains développeurs se sentiront peut-être les mains liées mais en définitive, les avantages offerts par la plateforme cloud native devraient avoir raison de leurs réticences.

Approche « build » ou « buy » ?

De nombreuses équipes envisagent le développement de leur propre plateforme à partir d’une combinaison de technologies open-source d’automatisation et de conteneurs. Toutefois, elles découvrent rapidement qu’il leur faut plus de composants que prévus. Elles doivent également déployer des efforts conséquents pour intégrer tous ces éléments, ce qui retarde évidemment le démarrage du développement d’applications. Une fois qu'elles disposent d'une telle plateforme, elles doivent ensuite en effectuer la maintenance. À l'inverse, avec une plateforme intégrée et éprouvée comme Pivotal Cloud Foundry, les équipes peuvent se concentrer dès le premier jour sur la création d’applications porteuses de valeur pour les métiers, sachant que la plateforme couvre toutes les questions opérationnelles et d'infrastructure.

Inutile de faire cavalier seul.

Comme souvent, l'apprentissage « en immersion » reste la meilleure solution. Au contact des équipes Pivotal Labs, vos développeurs pourront s'imprégner des pratiques de développement agile (DevOps, déploiement continu, etc.) et développer de nouveaux réflexes de programmation. On trouve une pléthore d'informations sur ce modèle : faites-en l'expérience et jugez par vous-même ! Aujourd'hui, 75 % des équipes pensent que leur entreprise manque d’agilité. Si vous en faites partie, c’est l’occasion idéale d’oser quelque chose de nouveau.




Next
Pivotal Perspectives