Microservices, Agilité et DevOps, un cocktail puissant

24 Avril 2019
microservices
Les systèmes informatiques deviennent de plus en plus larges et complexes à gérer. Les entreprises actuelles ont donc tendance à instaurer des méthodes de management et de culture mieux adaptées à ces systèmes ainsi que des approches d’architecture idéales tels que les microservices.

Malgré des équipes informatiques talentueuses, compétentes et des années d’avancées dans l’architecture et les travaux de développement, il est toujours difficile de relever les défis en utilisant des approches de développement monolithique, c’est-à-dire où l’application est développée en un seul bloc. En suivant ce type d’architecture, il est presque impossible de répondre rapidement aux besoins quand les applications doivent être maintenues, modifiées et mises à l'échelle par une équipe nombreuse et fortement interdépendante.

Pour répondre à ce besoin, ont été développés les microservices qui correspondent à un ensemble de patterns pour l’architecture logicielle, le développement et le déploiement qui eux-mêmes reposent sur la vitesse et l'agilité. De petits services et équipes indépendants s’occupent aussi du déploiement automatisé pour supporter les pannes. Ce type d’architecture aide à optimiser les délais de livraison et ainsi la commercialisation du produit fini.

L’architecture monolithique traditionnelle repose sur la création d’une application développée en un seul composant unifié et souvent large. Il existe une différence fondamentale entre une architecture monolithique, une architecture orientée services et les microservices. Avec ces derniers, les développeurs décomposent et isolent des éléments logiciels, qui communiquent via des API REST, SOAP ou autre et qui sont mises à l’échelle indépendamment.

architecture_microservices

L’utilisation d’une architecture microservices a plusieurs bénéfices :

  • Productivité : Les petites équipes spécialisés par microservice travaillent en parallèle et cette spécialisation leur permet alors une plus grande productivité que les équipes plus nombreuses. Elles permettent d’accélérer les prises de décision et les implémentations au sein du composant.
  • Isolement : Si l'un des composants tombe en panne, cela n’impacte pas l’ensemble de l’application. Cet avantage donne aux développeurs la liberté de développer et de déployer des services en fonction des besoins sans forte interdépendance entre les services.
  • Évolutivité et modularité : La bonne séparation du rôle de chaque microservice permet aux développeurs de gérer facilement l’évolution des microservices.
  • Scalabilité 
  • Facilité de déploiement : Les microservices individuels et isolés sont beaucoup plus faciles et rapides à déployer dans les pipelines d’intégration et déploiement continu. Seul le service concerné est modifié et redéployé lorsqu'une mise à jour est nécessaire.

 

Quelle différence existe-t-il entre l’architecture orientée services (SOA) et les microservices ?

SOA est une architecture qui permet aux divers systèmes d’information de l’entreprise, également appelés services, de communiquer entre eux, souvent par l’intermédiaire d’un bus de message. Ils sont implémentés sur différentes plateformes et utilisent multiples langages en mettant en œuvre un système dit de « couplage faible ».

L’architecture orientée services est similaire aux microservices en termes de modularité et de finalité : chaque service a effectivement un rôle et une responsabilité à gérer qui lui sont propres. Ils partagent plus ou moins les mêmes avantages. Par contre, ils diffèrent sur plusieurs critères :

  • La première différence est la taille des services. La taille des services dans SOA est relativement grande vis-à-vis de celle des microservices.
  • Dans une architecture orientée services, les services peuvent partager une source de données, contrairement aux microservices où chaque service est totalement indépendant.
  • Des points précédents découlent une communication entre les services SOA plus simple que pour les microservices. Cela a pour conséquence une modélisation et une conception plus difficile du côté des microservices.
  • Les microservices sont souvent containérisés avec des outils comme Docker qui permettent d’optimiser le temps de démarrage et le temps de déploiement, et de mieux gérer les ressources.
  • Dans SOA, on risque de perdre l’agilité si la taille des services est importante, c’est-à-dire dans le cas d’équipes de plus de 10 personnes.

application_soa

 

Quel est l’intérêt d’organiser les équipes agiles autour des microservices ?

Les pratiques modernes ont tendances à réorganiser et modifier les responsabilités des équipes. Ces dernières deviennent de plus en plus autonomes et auto-organisatrices, ce qui va de pair avec la manière d’aborder les microservices.

La loi de Conway dit que le type d’arrangement des équipes est similaire à la manière dont les microservices ont été conçu. Autrement dit, la structure globale de l’application reflète l’organisation et le découpage de l’équipe en sous-équipes indépendantes. De ce fait, l’effectif des équipes sera réduit, et ils bénéficieront ainsi d’une communication plus fluide, de cérémonies agiles plus fructueuses et d’itérations plus rapides sur des fonctionnalités ciblées.

Une organisation verticale, où chaque équipe agile se charge d’un ou plusieurs microservices, incluant la partie API, logique métier et accès aux données, permettra aux équipes de maîtriser leurs responsabilités de bout en bout et de fournir des résultats plus rapidement. Ceci engendrera une bonne maîtrise et une agilité qui progressera au fur et à mesure que l’architecture logicielle évolue.

Une équipe agile de Build and Run se compose généralement de 6 à 10 personnes. Sachant que les équipes en microservices sont composées de moins de personnes comparées aux autres architectures, il découle de l’alliance agilité-microservices une meilleure productivité. Ce genre d’équipe possède généralement les ressources nécessaires pour fournir un composant logiciel de qualité : des développeurs, un intégrateur, un testeur, un Scrum et un Product Owner

 

En quoi l’expertise DevSecOps est bénéfique dans cette approche ?

Le terme DevOps a pour but d’améliorer la relation entre le développement et les opérations.

Avoir des pratiques DevOps aura une grande valeur ajoutée dans cette organisation autour des microservices. Les équipes seront autonomes et seules décisionnaires concernant le provisionnement des ressources, ce qui est l’un des buts des microservices et qui convient parfaitement à l’architecture Cloud en utilisant des modèles de livraison tel que ‘on-demand computing’ qui permet de provisionner des ressources à la demande. En effet, la culture DevOps vient avec de l’automatisation des tâches répétitives à travers des pipelines d’intégration ainsi qu’une optimisation continue du flux de travail et ceci permettra d’augmenter la vélocité et l’agilité de l’équipe. Sans oublier aussi l’aspect sécurité du produit, qui est l’une des pratiques DevSecOps. Celle-ci se différencie du DevOps grâce à une invitation des représentants sécurité aux itérations agiles de démonstration et aux revus de codes, et prend pleinement en compte la sécurité avec le suivi des anomalies et aussi dans les pipelines d’intégration continue. DevSecOps préconise d'intégrer la sécurité en cours de développement plutôt que de l'appliquer à la fin uniquement.

devops        devsecops

L’architecture microservices insiste sur la réduction et le fractionnement des composants d’application. Cela est conforme avec la culture DevOps, qui privilège les conteneurs permettant aux composants de fonctionner indépendamment les uns des autres et indépendamment de leur environnement.

Finalement, afin de pouvoir gérer une vingtaine de microservices plus facilement, il est nécessaire de mettre en place un système de logging et de monitoring, à la base des pratiques DevOps, qui permettra d’avoir un suivi et une vision globale sur les différents aspects de l’écosystème en production. Ceci permettra de tracer les requêtes qui font appels aux différents microservices et permettra aux développeurs d’identifier facilement la source de problème en cas de panne. L’expertise DevOps simplifie donc la gestion de nombreux microservices distincts et dévient nécessaire dans ce type d’environnement.

De nos jours, le passage aux microservices est devenu une obligation pour plusieurs entreprises qui travaillent sur des systèmes informatiques très larges. C’est une approche architecturale parfaitement compatible avec les méthodes de management Agile d’aujourd’hui et la culture DevSecOps.

 

Ilias Naamane L'auteur :

Ilias Naamane, consultant Full-Stack & DevOps chez AUSY, a suivi une formation d’ingénieur, renforcée ensuite par un master en informatique et fondement d’ingénierie. Ses 3 années d’expérience dans le secteur lui permettent une connaissance forte et une spécialisation poussée dans le développement fullstack et DevOps.

Passionné par l’architecture logicielle, les microservices, les modèles de conception et toujours curieux d’apprendre, il a notamment pu acquérir au fil de ses expériences passées et présentes des compétences dans le développement des microservices avec diverses technologies, en adoptant la culture DevOps et tout en travaillant dans des environnements Agiles.

 

Aussi n’hésitez pas à visiter notre offre Run to Agile Operations.

Parlons ensemble de vos projets.

contatcez-nous