Prêt pour les Cloud Native Applications ?

Embrasser les Cloud Native Applications demande de revoir et de faire évoluer la plupart des paradigmes de production. Penser, produire, déployer et pouvoir tirer profit d'une application Cloud demande de faire évoluer les pratiques de conception et d’implémentation. Êtes-vous prêt ?

Pour regarder cette vidéo, vous devez consentir aux Cookies de notre partenaire Youtube

Ces cookies permettent de partager ou réagir directement sur les réseaux sociaux auxquels vous êtes connectés ou d'intégrer du contenu initialement posté sur ces réseaux sociaux. Ils permettent aussi aux réseaux sociaux d'utiliser vos visites sur nos sites et applications à des fins de personnalisation et de ciblage publicitaire.

Quelques bonnes pratiques

Les modèles de déploiement traditionnels hérités d’Internet conservent une affinité et une configuration qui reste majoritairement statique. Les Black Fridays et autres événements du commerce en ligne ont tous démontré les uns après les autres les limites du modèle de passage à l’échelle vertical. Pour tirer profit du Cloud, une application nécessite modularité, autonomie, indépendance et gestion d’états afin de rendre possible le passage à l’échelle en termes de charge, de volumétrie ou de disponibilité. La conception d’une application Cloud doit s’appuyer sur des principes qui rendent possibles une implémentation compatible avec ces propriétés.

Ainsi, les 12-Factor Apps ou les Open Data Center Alliance (OCDA) Patterns font partie des approches conceptuelles à privilégier. Les 12-Factor Apps sont une collection de principes de conception répondant aux enjeux des applications Cloud natives.  Ils permettent de construire des applications qui fonctionnent en tant que services et de préparer leur déploiement dans le Cloud. Ces derniers mettent l’accent sur des questions de performance, de sureté et d’aptitude au passage à l’échelle. Ils favorisent la configuration déclarative, les processus sans état ou autonomes ainsi qu’une dépendance minime avec l’environnement de déploiement. Les 12-Factor Apps visent également à apporter des solutions pour répondre aux motivations du passage dans le Cloud : déploiement des applications indépendant de l’environnement cible et gestion des états indépendante de l’application, permettant ainsi passage à l’échelle et élasticité par automatisation.

Le traitement des traces, la déclaration des services externes et les principes natifs de concurrence contribuent à renforcer la garantie de bon fonctionnement de l’application. Dans le même esprit, les patrons de conception de l’ODCA visent un objectif similaire en proposant des bonnes pratiques de construction et d’implémentation de services dans le Cloud.

Microservices et conteneurs

D’un point de vue implémentation, une approche à base de microservices ou de conteneurs contribue à porter tout ou partie des propriétés de conception évoquées. Les principes structurels des microservices rendent possible un modèle d’architecture Cloud qui s'appuie sur :

  • des services,
  • des composants indépendants appelés via des appels externes,
  • une gestion de donnée massivement décentralisée.

L’élément à ne surtout pas oublier est la capacité à superviser les services, de manière à détecter automatiquement la nécessité de relancer un service ou d’étendre son nombre d’instances pour répondre à la charge.

Une approche à base de conteneurs, comme Docker, répond également à ces enjeux en proposant un modèle d’isolation permettant d’exécuter une application indépendamment de son infrastructure sous-jacente ou des autres conteneurs qui contribuent à la production de l’application. Nous avons ainsi une garantie d'un déploiement identique, permettant de réduire les problèmes causés par les différences entre les environnements (développement, qualification ou production).

Le code au cœur du Cloud

Concernant la construction de l’infrastructure et de la plate-forme, une approche de type Infrastructure as Code ou Platform as Code permet de passer d’un modèle d’ingénierie de production classique à un modèle Cloud. Infrastructure et plate-forme sont alors considérées comme des éléments dynamiques, implémentés d’une façon similaire à une application. Le code de la plate-forme contenant les instructions de création de l’infrastructure, s’exprime de manière déclarative dans le même référentiel que le code de l’application, tout comme les dépendances ou les variables d’environnement.

Il n'est alors plus question de sanctuariser une plate-forme technique physique à gérer, versionner et faire évoluer. C’est l'activité d’un processus d’intégration continue qui va construire et provisionner une plate-forme, gérée de manière descriptive, que l’on instancie et consomme à la demande.

Conclusion

Si les architectures Cloud permettent de reprendre la recette magique des GAFA, la façon de concevoir et implémenter les applications pour en tirer parti doit évoluer progressivement. Reproduire des pratiques traditionnelles dans des environnements Cloud conduirait à des implémentations certainement plus couteuses et plus laborieuses à amener en production.

Une approche de type Infrastructure / Platform as Code ou conteneur parait être un bon point de départ pour prendre une impulsion dans le monde des Cloud Native Applications. Cela pose les bases d’une conception permettant de pleinement profiter de la promesse de valeur du Cloud, qu’il soit public, privé… voire hybride.

 

Pour aller plus loin

Cloud : des infrastructures qui s'adaptent à vos besoins

Vitesse, disponibilité, montée en charge, mobile : la recette magique des GAFA ?

Comment doper ses solutions avec Docker et DevOps ?

Philippe Ensarguet
Philippe Ensarguet

Chief Technology Officer, je dirige la stratégie technologique pour la transformation d’Orange Business en entreprise de services digitaux née du réseau. Fort de 25 ans d'expérience, je bénéficie d’un point de vue privilégié sur l’évolution des stacks techniques, des outils et des pratiques.