Alors que les technologies Cloud Native arrivent à une certaine maturité, de nombreuses entreprises cherchent à moderniser leurs applications ‘maison’ et notamment les applications qu’elles considèrent comme différenciantes et génératrices de valeur pour l’entreprise. Dans ce contexte, l’utilisation des microservices et des conteneurs fait de plus en plus sens.

Les architectures modulaires reposant sur des microservices apportent plusieurs bénéfices et notamment :

  • L’application monolithique peut être transformée par étape en extrayant peu à peu des microservices.
  • Les microservices peuvent être mis à jour, étendus et déployés plus rapidement, indépendamment les uns des autres et sans mettre en péril l’ensemble de l’applicatif.

Ils sont le fer de lance du mouvement DevOps et, couplés aux conteneurs, sont particulièrement adaptés aux applications Cloud Native. C’est la raison pour laquelle on constate une vraie percée en entreprise.

 

Conteneurs, DevOps, microservices sont interdépendants et reliés, ils permettent de développer plus rapidement et plus efficacement des services applicatifs.

Les microservices, c’est une méthode de design d’applications décomposées en différentes parties autonomes, qui peuvent être versionnées, déployées et gérées indépendamment les unes des autres

détaille Marc Gardette, directeur de la stratégie Cloud de Microsoft France.

Cela permet une grande agilité dans les développements. Ce design attractif est presque évident pour des applications Cloud natives

Une approche boostée par le mouvement DevOps

À la base, il y a la volonté des équipes informatiques de travailler de façon plus efficace avec les équipes métiers, en proposant plus rapidement des logiciels capables d’évoluer à la demande. L’utilisation de méthodes de développement agiles et l’adoption des principes du mouvement DevOps ont nécessité l’apparition de nouvelles approches de collaboration avec un cycle de développement court.

Les microservices et les conteneurs apparaissent comme la réponse naturelle à cette tendance.

Deux mondes proches, mais pas forcément liés : toutes les applications en conteneur ne sont pas des microservices et tous les microservices ne sont pas déployés sous la forme de conteneurs.

Chez Microsoft, c’est Azure Service Fabric qui a d’abord été au cœur de cette révolution. Ce serveur d’applications dédié aux microservices se charge de mettre en oeuvre les solutions nécessaires à cette approche : gestion des états, des versions, des affinités, optimisation des performances et load balancing automatique sont assurés par Service Fabric.

Mais aux côtés de ces services dédiés aux applications à base de microservices, des solutions de plus bas niveau, comme les conteneurs Docker, montent en puissance. Les microservices existent depuis longtemps. Mais ce sont les conteneurs qui ont permis de concrétiser plus largement cette approche. De même, les conteneurs existent depuis longtemps, mais ont pris leur envol avec l’arrivée de Docker. Les conteneurs promettent de révolutionner l’IT, en passant les OS au second plan et en permettant une évolution forte des process.

En permettant d’assembler, de publier et de déployer plus rapidement, les conteneurs donnent tout son sens à la démarche DevOps et ont un effet démultiplicateur sur ses avantages.

Chez Microsoft, l’intégration de la technologie Kubernetes via Azure Kubernetes Service (AKS) apporte les services notamment d’orchestration, de déploiement et de montée en charge pour mettre en place une architecture extensible et flexible ( « clusters ») sur la base de ces conteneurs.

La conteneurisation et l’architecture Microservices

Les conteneurs sont un nouveau moyen de déployer des applications, qui rapproche davantage les professionnels IT et les développeurs informatiques des entreprises en phase avec la démarche DevOps.

Ils rendent les développeurs plus indépendants des systèmes informatiques et permettent de créer des scénarios avancés sans toucher au modèle de sécurité ni à l’infrastructure principale.

Autres points décisifs, les conteneurs :

  • sont réactifs car ils utilisent le système d’exploitation hôte et partagent les bibliothèques appropriées
  • ne gaspillent pas les ressources de l’hôte contrairement aux machines virtuelles
  • permettent l’isolation des bibliothèques et des fichiers binaires spécifiques à l’application qu’ils exécutent
  • sont gérés par un moteur de conteneurisation

La conteneurisation a toute sa place dans une architecture dans laquelle l’application est divisée en plusieurs services communiquant entre eux.

Plus légers que la virtualisation, les conteneurs sont idéaux pour accueillir des microservices (à raison d’un par conteneur), auxquels ils apportent un certain degré d’indépendance. Les conteneurs sont indéniablement un booster, pour les microservices, et donc pour le mouvement DevOps.

En effet, les conteneurs peuvent embarquer directement les runtimes et les frameworks dont le code aura besoin pour fonctionner. Toutes les dépendances nécessaires sont packagées dans le conteneur directement au côté de l’application.

Les conteneurs sont avant tout un format de packaging qui facilite la portabilité

explique Marc Gardette directeur de la stratégie Cloud de Microsoft France

Ils n’intéressent donc pas que les DevOps. Leur réplicabilité facilitée par la présence des Runtimes n’impose pas la nature du mode de développement

Docker a donné ses lettres de noblesse aux conteneurs

Docker est un outil conçu à la fois pour les développeurs et les administrateurs système, ce qui le rapproche par nature des nombreuses chaînes d’outils DevOps (développeurs + opérations). Les développeurs peuvent se consacrer à l’écriture de code sans presque avoir à se soucier du système sur lequel il fonctionnera. Ils peuvent aussi s’appuyer sur l’un des milliers de programmes déjà conçus pour s’exécuter dans un conteneur Docker dans le cadre de leur application. Pour le personnel des opérations, Docker donne de la flexibilité et réduit potentiellement le nombre de systèmes nécessaires en raison de son faible encombrement et la diminution des frais afférents.

Sur le Cloud Azure de Microsoft, les conteneurs Docker peuvent être déployés dans des machines virtuelles via Azure Container Service.

Le déploiement bare metal (i.e « sur serveur physique ») est rarement choisi par les acteurs hyperscales, dont fait partie Microsoft

analyse Marc Gardette.

Pour ces sociétés, la multiplicité des services et la volumétrie supposent du tout virtualisé, du tout Cloud.

La problématique de la sécurité, Microsoft y a aussi pensé avec les conteneurs Hyper-V. En intégrant un kernel virtualisé spécifique au cœur du conteneur, ils offrent un meilleur niveau de sécurité.

La densité sera un peu moins importante, mais la logique propre aux conteneurs sera préservée

explique notre intervenant Microsoft.

Conteneur_schéma

Plus légers, les conteneurs sont présents en plus grand nombre sur chaque serveur.

DevOps, microservices et conteneurs se marient très bien avec les infrastructures Iaas qui présentent le même degré d’agilité. Ce principe d’infrastructure composable via des pools de ressources (CPU, mémoire, disque, réseau, etc.) librement attribuables permet de créer des infrastructures adaptées aussi bien aux systèmes legacy qu’aux microservices.

Défis techniques et nouvelles responsabilités

Les défis des entreprises n’ont jamais été aussi nombreux qu’aujourd’hui. Entre l’intégration d’un service tiers en urgence ou une montée en charge à des niveaux improbables, les Microservices apparaissent comme la recette miracle pour :

  • gérer rapidement tout type d’événements
  • être plus libres et plus rapides dans l’introduction de nouvelles technologies.

Plus innovantes, les entreprises gagnent aussi en compétitivité.

Outre le besoin d’automatisation et d’outillage, les environnements Cloud Native présentent certains nouveaux défis techniques et notamment une certaine maturité dans la gestion de l’infrastructure.

Les solutions Cloud Native augmentent aussi le travail des développeurs qui, s’ils dépendent moins de l’IT, doivent en revanche davantage spécifier et gérer les besoins de leurs applications. Avec les conteneurs, la responsabilité du suivi des versions passe au DevOps et nécessite un contrôle adéquat.

Au fur et à mesure que vous évoluez vers une architecture Cloud Native, les développeurs applicatifs doivent se soucier de la qualité de service en termes de performance, d’évolutivité et de transparence de la localisation pas forcément en adéquation avec l’état d’esprit des développeurs.

La voie tracée vers le Cloud

Les atouts d’agilité et d’évolutivité ne sont pas les seuls à expliquer l’intérêt actuel pour les pratiques, architectures et technologies Cloud Native. Certaines de ces dernières sont aussi un chemin tout tracé pour déployer les applications directement ou ultérieurement dans le cloud – en général un PaaS – avec des possibilités que n’offre pas la simple migration d’une application existante dans un IaaS (Lift & Shift).

Ainsi, selon Gartner, les entreprises cherchent désormais à se défaire de leurs applications basées sur des VM hébergées dans le cloud (IaaS). Soit en les remplaçant par des alternatives SaaS, soit en les réécrivant en mode Cloud Native.

La principale raison de ce changement réside dans les coûts à long terme associés à des applications qui ne sont pas optimisées pour le cloud. Les autres bénéfices en matière de performance, de montée (ou descente) en charge et de disponibilité sont autant d’arguments supplémentaires pour une réécriture

explique le cabinet de conseil.

Par ailleurs, les applications Cloud Native, opérant avec des technologies PaaS, peuvent intégrer les multiples services – notamment serverless – disponibles sur ces plateformes. Un atout en matière d’innovation qui devrait booster les dépenses dans le cloud, prédit Forrester:

La plupart des applications d’entreprise seront améliorées grâce à l’incroyable éventail de technologies émergentes mises au point dans le nuage, depuis les nouvelles bases de données jusqu’aux dispositifs informatiques de pointe, en passant par l’Internet des objets, l’apprentissage automatique et l’intelligence artificielle

De vrais atouts pour le business

Les applications Cloud Native vont probablement prospérer et modifier durablement la manière dont les entreprises développent et intègrent les applications au cœur de leur activité avec en ligne de mire de gagner en compétitivité. Les organisations les plus avancées en la matière qui mettent l’informatique au service du business, enregistrent des gains en matière d’agilité, d’expérience client et de coûts…

La complexité des architectures liées aux microservices est certes un frein, largement compensée par les problématiques de scalabilité, de robustesse et de souplesse dans la mise en place de nouvelles évolutions.