Les Black Fridays (et autres événements de vente en ligne qui se sont multipliés) ont démontré les limites des modèles traditionnels de sites Web et leur incapacité à s’adapter aux pics d’utilisation. Pour tirer parti du Cloud et permettre les montées de charge en volumétrie et utilisation, une application nécessite de la modularité, avec une bonne autonomie et indépendance entre ses composants.

Si vous souhaitez développer une application native pour le cloud, il faut la concevoir et la déployer de façon à bénéficier de tous les avantages du cloud, en termes de performance, flexibilité, qualité et facilité de déploiement, c’est le cas des applications Cloud Native.

Cependant, le développement d’applications Cloud Native suppose quelques prérequis et notamment :

  • La mise en place de méthodes agiles alignées sur les principes de DevOps, notamment la livraison et le déploiement continus
  • Une architecture orientée services et modulaire
  • Une réduction de la complexité via l’utilisation d’APIs
  • La mise en place de conteneurs, pour faciliter la portabilité vers différents environnements dans le cas d’un besoin ‘Multi-Cloud’

Ces 4 fondamentaux constituent les piliers d’une application Cloud Native. Une fois ces bases posées, il s’agit de tout faire pour les mettre en œuvre de manière satisfaisante

Faire évoluer la culture et les mentalités pour aller vers DevOps

Au-delà de la mise en place d’outils, l’enjeu est surtout de convaincre les collaborateurs du bien-fondé de cette démarche. L’adoption de la démarche DevOps nécessite de repenser totalement l’organisation de l’entreprise et de casser les silos de l’organisation vers une approche plus intégrée et collaborative.

Commencer petit (moderniser une application monolithique existante par exemple)

Commencez par un petit projet visible de tous avec un objectif atteignable. Cette approche de type ‘fast monolith’ consiste à refondre une application monolithique pour

  • la rendre plus modulaire
  • bénéficier de meilleures performances liées au cloud
  • se familiariser avec les grands principes du cloud
  • créer des émules

 

Utiliser des services applicatifs dans le cloud pour accélérer le développement

C’est quelque chose que vous faites déjà comme par exemple

  • la diffusion d’un questionnaire interne via la plateforme Google Drive,
  • l’utilisation de messagerie en ligne
  • l’emploi d’outils de communication/collaboration comme Skype.

De nombreux services prêts à l’emploi sont disponibles dans le cloud, que ce soit en SaaS ou sur des PaaS/IaaS : cache, moteur de workflow, connecteurs, API de mobilité, virtualisation de données, etc.

Opter pour une infrastructure à la demande

Les développeurs doivent pouvoir accéder à l’infrastructure dont ils ont besoin au moment où ils en ont besoin.

Les plateformes IaaS ou CaaS offrent des ressources hautement scalables, pouvant être ajustées sur demande en fonction des besoins de l’utilisateur. Il suffit d’une connexion internet pour accéder à une ressource depuis n’importe quel endroit. De plus, ces environnements incluent l’automatisation des tâches administratives, le scaling dynamique, la virtualisation de bureau …

 

Automatiser pour accélérer la livraison des applications

En automatisant vous gagnerez en efficacité et en rapidité. L’enjeu est également de réduire l’intervention humaine sur les tâches répétitives pour limiter les risques d’erreurs et, surtout, de permettre aux développeurs de se focaliser sur des tâches à plus haute valeur ajoutée.

Des outils d’automatisation permettent de déployer des processus répétables, afin de décharger les collaborateurs de tâches récurrentes et d’aller plus vite.

 

Mettre en œuvre la livraison continue et des techniques de déploiement avancées

Livrer fréquemment permet d’éprouver, fiabiliser la procédure, mais surtout de vous donner un feedback plus tôt et réduire, autant que possible, les coûts d’ajustement et les frustrations éventuelles (aussi bien celles des développeurs obligés de retravailler leur code et celles des utilisateurs obligés de patienter).

L’automatisation permet de rendre le processus de déploiement fiable et réplicable (sans risque d’erreur humaine).

 

Évoluer vers des architectures plus modulaires

Il peut s’agir d’architectures basées sur les microservices, dans lesquelles les applications sont découpées en composants les plus petits possibles, afin d’avoir une granularité fine et des processus partagés par plusieurs applications.

Microservices et conteneurs

Les principes structurels des microservices sont rendus possibles par 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ées massivement décentralisée.

Une approche à base de conteneurs, comme Docker, répond également à ces besoins en permettant d’exécuter une application indépendamment de son infrastructure sous-jacente. Nous avons ainsi la 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). Cette indépendance vis-à-vis de l’environnement permet d’obtenir une application aux comportements plus prévisibles.

Des services d’orchestration fournissent, notamment, 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 architecture de type PaaS (Platform as a Service) et/ou CaaS (Container as a Service), couplée à une approche Infrastructure As Code (provisionnement des ressources et déploiement automatisés)  parait être un bon point de départ pour mettre un pied dans le monde des Cloud Native Applications. Cela pose les bases d’une conception susceptible de profiter pleinement des avantages du Cloud, quels qu’ils soient.

Contrairement aux applications migrées vers le cloud, les applications nativement conçues pour celui-ci sont capables d’exploiter tous les avantages d’une telle architecture tout en étant moins coûteuses et plus flexibles.