Architecture

Article

Agilisation du SI et accélération du time to market

Nous vivons dans une ère de transformation digitale des entreprises où le logiciel est omniprésent. Il devient un facteur différenciant permettant de se démarquer de la concurrence. Dans ce contexte, les entreprises sont toutes à la recherche d’agilité leur permettant d’accélérer le time to market de leurs applications. Ce besoin touche toutes les organisations qu’elles évoluent dans un marché fortement concurrentiel ou non. Par exemple pour une administration, l’accélération du time to market permettra d’être plus réactif à une évolution des contraintes réglementaires.

Les géants du Web ont ouvert la voie de l’agilisation et de l’accélération du time to market. De nombreuses succes story témoignent de ce fait. Flickr a contribué l’essor du DevOps avec une publication datant de 2009 intitulée « 10 mises en production par jour ». Netflix, très  en pointe dans les aspects microservices et conteneurisation, propose tout un éventail de briques logicielles en open source. Google utilisait des conteneurs avant même leur démocratisation par Docker et est l’origine du Kubernetes l’orchestrateur qui devient un standard de fait.

Pour amener les entreprises « classiques » à atteindre une agilité à 360, l’on dispose ainsi d’une boite à outils technologique et organisationnelle éprouvée par les géants du web.

Ce premier billet est consacré au recensement des solutions techniques et organisationnelles que l’on peut utiliser pour agiliser le SI.

Méthodes Agiles de développement : Nécessaire mais pas suffisant

L’agilisation des relations entre MOA et équipe de développement a été traitée en premier, les méthodes dites Agiles ont un taux d’adoption assez élevé dans les organisations. Force est de constater que la réduction du délai entre l’expression d’un besoin métier et l’implémentation de la fonctionnalité dans une version logicielle est nécessaire mais pas suffisante. Il faut désormais s’attaquer au délai entre le commit dans un gestionnaire de source et la mise à disposition du service dans l’environnement de production.

De l’intégration continue : largement répandu mais à optimiser

Le niveau de maturité des entreprises concernant l’intégration continue est plutôt élevé. Il s’agit cependant d’un vaste domaine qu’il convient d’optimiser.

Un gestionnaire de source comme Git, impose certes une rupture importante dans les usages maîtrises par les développeurs, son adoption contribue cependant à agiliser les développements. Git est notamment très adapté organiser ses développements par fonctionnalité métier (feature).

Un outil de construction de build comme Jenkins est très répandu. Les dernières innovations proposées en particulier les pipelines, le plugin multi branches et l’intégration avec Docker permettent de réduire l’effort de paramétrage procurant gain de temps et fiabilisation.

L’automatisation des tests est un aspect à ne pas négliger. Avoir un taux de couverture de code significatif est nécessaire pour accélérer le rythme de livraison tout en gardant un bon niveau de qualité des livrables.

Livraison continue & Déploiement continu – DevOps

Le next step de l’intégration continue est la livraison en continu qui permet des livraisons automatisés des environnements avec une étape d’approbation humaine avant le déploiement dans l’environnement de production.

Le step ultime est le déploiement continu, dans ce mode de fonctionnement chaque commit git est susceptible d’être poussé en PROD si les tests automatisés sont validés et les seuils de qualimétrie atteint (exemple : taux de couverture de code).

Si ces deux éléments sont réduit à de l’outillage ils apportent un gain limité. Il convient d’adopter une culture DevOps pour apporter un gain majeur sur l’agilité de l’organisation.

Microservices

Les architectures classiques, dites monolithique, sont certes basées sur de bons principes telle que la séparation en couches, elles souffrent de limitations. La limitation principale réside dans le fait d’être déployé dans un livrable unique. Ceci impactent la scalabilité lors de l’exécution de l’application mais également la scalabilité des équipes de développement lors de la phase de build d’application complexe.

Avec les architectures microservices, on constitue des équipes orientées produit qui couvre une fonctionnalité métier autonome. Une application est constituée d’un ensemble de microservices disposant chacun de leur propre cycle de vie, permettant une relivraison ciblé des évolutions métier. Cette granularité plus fine des unités de livraison offre également des avantages en termes de scalabilité lors du RUN.

Conteneur applicatif

Les conteneurs applicatifs visent à transposer dans l’informatique la révolution apportée par les conteneurs dans le transport de marchandise.

Techniquement il ne s’agit que d’isolation de processus, type de fonctionnalité existant depuis de nombreuses années sous Linux. Docker a permis de démocratiser ces techniques et les a complété d’un registre public d’image. Accompagnant la percée des microservices, le timing était parfait pour créer un produit en passe de révolutionner la manière de gérer nos applications, à l’instar de la virtualisation ayant révolutionné la manière de gérer nos serveurs.

Déployé dans un cluster géré par un orchestrateur, l’on dispose des résiliences et d’une scalabilité très abouties.

Cloud

La grande famille du « As A Service » couvre différents besoins : IaaS (Infrastructure), CaaS (Container), PaaS (Platform), SaaS (Software).

On distingue également différentes typologie de cloud : Public, Privé et Hybride.

Pour les entreprises françaises le frein à l’utilisation du cloud public est souvent limité par une contrainte de souveraineté des données. L’ouverture prochaine par des acteurs majeurs de datacenter en France devrait levée ce frein.

La mutualisation des ressources liées à la sécurité permet aux géants du cloud d’offrir un niveau de sécurité qui dépasse le niveau de sécurisation que l’on atteint généralement sur une infra on premise.

Les solutions hybrides permettent de réaliser un débordement sur le cloud public pour offrir une élasticité complète de l’infrastructure.

API Management

Clé de voute de l’économie numérique les API permettent à la fois de développer un écosystème partenaire dans un contexte B2B et également d’adresser le multicanal  dans un contexte B2C.

Pour apporter de la valeur à ses API il est nécessaire de mettre à disposition de données présentes au cœur du SI, or ces données sont souvent sensibles. L’aspect sécurisation est un enjeu majeur qu’il devient nécessaire de centralisé à l’aide d’un outil dédié à l’API Management.

Il également possible de gérer la monétisation de l’utilisation de ses API via la mise en œuvre de « plan » d’utilisation associé à des niveaux de limitation d’usages.

Dans un contexte B2B ou open Data, il est nécessaire de proposer un portail développeur permettant de faciliter l’utilisation des API et de promouvoir sont adoptions.

En synthèse

«Le tout est plus que la somme de ses parties» © Aristote

Prise unitairement, chaque solution à un apport limité, c’est en combinant tout ou partie de ces solutions que l’on atteint l’agilité maximale.

Exemple de mise en oeuvre globale : Exposition d’API Rest via une API gateway redirigeant vers des backend respectant une architecture microservice. Déploiement de l’API Gateway et des backend  sous forme de conteneurs dans une plateforme PaaS exploitant le cloud hybride. Déploiement continu en mode DevOps.

Nouveau commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Solve : *
20 + 11 =


Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.