C’est tout l’objet du développement d’applications « cloud native », une approche visant à concevoir et architecturer les applications en gardant à l’esprit le modèle d’infrastructure et de provisionning “self-service” du cloud. Au lieu de s’adosser à des serveurs ou bases de données on premise, ces applications cloud native reposent sur des services faisant abstraction des couches hardware et de leur maintenance – et dans certains cas de l’OS. Les équipes peuvent ainsi se concentrer sur les tâches de développement à valeur ajoutée. Mais comment repenser le SI pour répondre à ces défis et aller vers le « cloud native » ? Laurent Broudoux, Solution Architect chez Red Hat, a accepté de nous livrer quelques conseils pour mieux s’engager dans la voie de la transformation. 

Repenser le SI pour s’adapter aux paradigmes du cloud

S’engager dans une démarche cloud native implique effectivement de repenser son système d’information afin d’adopter les paradigmes du cloud dans un modèle hybride ; l’idée étant de consommer les services de la même manière que ce soit en interne ou chez le cloud provider. « Dans cette transformation, la dimension humaine est essentielle » remarque Laurent Broudoux. De l’idée qui émerge des entités métiers jusqu’à la production, il faut être en mesure de livrer rapidement les nouvelles fonctionnalités, de les exploiter et de livrer des correctifs. Pour cela, la démarche nécessite de repenser le SI en suivant trois axes principaux :  

 - Rationaliser ses outils et processus de gestion, notamment au niveau de l’infrastructure, qui reste un socle indispensable. « Adopter l’ensemble des paradigmes du cloud de manière transparente et optimisée implique de rationaliser les processus et outils d’industrialisation, notamment le déploiement d’infrastructure et la gestion du cycle de vie des socles logiciels. C’est une fondation technologique essentielle » souligne Laurent Broudoux,

 - Rendre le SI plus agile et sécurisé afin de simplifier le déploiement des applications dans un modèle scalable et portable quelle que soit la cible, on-premise, dans le cloud ou encore en mode edge. « Les paradigmes d’architecture et de packaging des applications ont énormément évolués vers des modèles plus simples et totalement portables. Ils doivent être totalement intégrés aux pratiques des architectes de la DSI moderne » ajoute Laurent Broudoux,

 - Se mettre au service des équipes projets et leur proposer un accès rapide et simple à des technologies de développement d’application adaptées, afin qu’elles puissent développer, tester et mettre en production sans complexité. « API, event streaming, big data, mobile, web, … les cas d’usages sont légions et exigent des technos adaptées à chaque besoin. La construction d’un catalogue de solutions et services prêts-à-l’emploi est un élément indispensable d’une refonte cloud native. » précise Laurent Broudoux.

L’Usine Logicielle, première étape vers une démarche d’application cloud native 

Mais par où commencer ? L’Usine Logicielle est souvent une première étape fondatrice et fédératrice des équipes. Par « Usine Logicielle » on entend la plateforme qui agrège tous les outils nécessaires à la mise en place d’un processus DevOps à la fois résiliant, tolérant aux pannes et évolutif. Ce sujet permet donc de mêler les différents acteurs et compétences de la DSI pour définir de nouveaux processus, plus fluides et au service des lignes métiers.     

« Le fait d’avoir commencé sa transformation par un travail sur l’Usine Logicielle permet de fournir aux développeurs des possibilités extrêmement simples et sécurisées de mise en production sur tous les environnements (développement, test, pré-production et production) sans avoir à se soucier de l’infrastructure sous-jacente. » précise Laurent Broudoux. « On se dirige de plus en plus vers une démarche polyglotte du développement des applications. En fonction des typologies d’applications sur lesquelles ils travaillent, les développeurs choisissent les technologies les plus adaptées à leur besoin : architectures serverless pour répondre à un besoin de service éphémère, exigences de pilotage par la data, etc. L’usine logicielle leur fournit un accès simple à ces technologies et libère leur capacité à innover. » 

Les quatre piliers du développement d’application cloud native

L’Usine Logicielle est souvent un bon point de départ permettant de faire émerger toute la dimension humaine de la transformation - processus d’approvisionnement, tests, livraisons. Elle stimule également la mise en œuvre de quatre points fondamentaux à prendre en compte pour aller vers une démarche cloud native.

Tout projet de développement d'application Cloud Native s'appuie sur des fondamentaux. Le premier d'entre-eux consiste à bâtir l'application sur les paradigmes d'une architecture orientée services.

1/ Des architectures orientées services

Il faut commencer par bâtir l’application sur les paradigmes d’une architecture orientée services. « Plus concrètement, l’application doit être composée de différents services distincts possédant une cohérence forte et faiblement couplés entre-eux », explique Laurent Broudoux. « Ainsi, on peut faire évoluer un service en minimisant l’impact sur les autres services qui composent le Système d’Information. Les applications sont alors considérées comme des produits comportant des fonctionnalités qui évoluent au fil du temps et qui font l’objet de développement très rapides, avec une phase de test et la possibilité de les supprimer si elles ne donnent pas entière satisfaction. 

2/ Des composants communiquant via APIs

Chaque composant - ou service - se devant d’être autonome, il est indispensable de mettre l’accent sur les APIs : ces fameux points d’intégration permettant de réutiliser facilement une fonctionnalité, voire de l’ouvrir à des partenaires. « La technologie est importante mais là encore c’est avant tout une question de processus et de gouvernance afin de permettre aux APIs de tenir leurs promesses. Une vigilance particulière doit être apportée sur le design et le versioning des contrats d’API » explique Laurent Broudoux. Ces APIs sont aussi destinées à devenir asynchrones et temps réel : on parle notamment de streaming d’événements pour découpler les systèmes.

3/ Une infrastructure basée sur les conteneurs

« Quand on accumule des centaines de composants et de services, la gestion doit devenir industrielle si on ne veut pas que l’ensemble devienne un cauchemar à exploiter et à mettre en production ». Les conteneurs offrent une unité de déploiement d'application et un environnement d'exécution autonomes. Les conteneurs sont en fait le bras armé d’un passage à l’échelle de l’architecture orientée services : ils garantissent l’autonomie, la sécurité et la flexibilité des composants de votre SI. Le conteneur devient la brique de base composant toute application et facilitant le déploiement de nouvelles technologies et innovations dans la DSI.

4/ Une dynamique DevOps forte

Dans la logique DevOps, chaque acteur peut agir sur tous les éléments de la chaîne « c’est-à-dire que le développeur est aussi garant de la mise en production de sa fonctionnalité » souligne Laurent Broudoux. L’avantage est de pouvoir compter sur des équipes expertes qui maîtrisent la chaîne de bout en bout. Il est aussi beaucoup plus facile d'exploiter et de gérer un incident en production, le collaborateur qui a développé l'application connaissant ses rouages et les problèmes qui peuvent survenir. Et l’extension de la dynamique DevOps à l’échelle de l’Entreprise devient aujourd’hui possible grâce à l’homogénéité apportée par les conteneurs !

Red Hat OpenShift pour faciliter la transition vers de nouvelles architectures cloud

Ces quatre piliers du cloud native sont les fondamentaux de Red Hat OpenShift, une plateforme facilitant la transition vers ces nouvelles architectures ainsi que la gestion du cycle de vie d’applications conteneurisées. Acteur majeur de la Cloud Native Computing Foundation (CNCF), Red Hat a construit cette solution pour permettre de tenir la promesse de livrer plus rapidement de nouvelles fonctionnalités et gérer efficacement la complexité du SI. L’originalité de cette solution tient dans une approche best-of-breed composée des meilleurs projets de la CNCF, Kubernetes entre autres.

Bien que ces sujets paraissent essentiellement techniques, attention encore une fois à ne pas négliger les transformations fortes liées à la démarche DevOps. « Nous ne laissons jamais nos clients franchir ce cap sans les accompagner. Chez Red Hat, cet accompagnement se matérialise par l’Innovation Lab, avec une démarche visant à réaliser ensemble avec nos clients des MVP (minimum viable product) » conclut Laurent Broudoux. 

A retenir

« En fonction de votre niveau de maturité, adaptez votre stratégie d’adoption de l’environnement cloud natif et définissez sur quel axe vous allez prioritairement travailler. Le plus simple est certainement de commencer à introduire la démarche DevOps en s’appuyant sur les conteneurs afin d’obtenir des applications sous la forme d’un ensemble de services faiblement couplés. Petit à petit, vous allez rendre votre infrastructure plus modulaire et tendre naturellement vers les architectures microservices. »

En savoir plus :
- Comprendre ce qu’est une application Cloud-Native: https://www.redhat.com/fr/topics/cloud-native-apps 

- Les solutions Red Hat de développement Cloud Native: https://www.redhat.com/fr/solutions/cloud-native-development

- Guide stratégique pour le développement d’applications Cloud-Native : https://www.redhat.com/fr/engage/cloud-native-meets-hybrid-cloud-strategy-guide