Grand angle

Anatomie d’une Modern App

  • Date de l’événement 04 Oct. 2023
  • Temps de lecture min.

“J’ai passé mon application dans le cloud ! Suis-je moderne ?”.

Oui ! Mais ce n’est qu’une première étape pour rendre votre application future-proof. Si la communauté tech peine à trouver une définition commune sur ce qu’est une Modern App, nous avons chez Smile une petite idée du sujet.

 

Granularité et ouverture

Une Modern App suit une architecture orientée autour du concept de services, dont les microservices. Avec une approche native du cloud, les développeurs se concentrent sur la création de services spécialisés, appelés microservices. Mises en commun, ces unités individuelles très granulaires constituent une application complète, mais chacune d’entre elles peut être déployée et gérée en toute autonomie tout en étant capable de communiquer vers l’extérieur grâce à des APIs.

 

Containers et fonctions

Une Modern App se base sur des containers pour rendre les microservices plus faciles à gérer. Un niveau d’abstraction supplémentaire est d’utiliser directement des fonctions, micro-services directement déployés et gérés par les fournisseurs cloud. L’objectif est d’avoir un modèle opérationnel aussi “serverless” que possible en permettant un couplage lâche entre les grandes briques.

 

Architecture orientée évènements

La programmation orientée évènements est un paradigme d’architecture qui consiste à décomposer les actions/interactions de l'utilisateur en flux d'événements. Les Modern Apps sont conçues pour concevoir les microservices en tirant parti de ces événements, en les gérant de façon asynchrone pour faciliter leur découplage.

 

Gestion de la donnée : sur-mesure et découplée

Là où une application monolithique s’appuie traditionnellement sur une base donnée unique, le découpage en micro-services permet d’utiliser des structures de gestion de données adaptées à chaque type de données et leurs usages spécifiques.

 

Agilité : abstraction, automatisation, and standardisation

Plus qu’un pattern d’architecture, les applications cloud natives s’inscrivent dans processus de développement intégré type “devops”, méthode de développement qui met l’accent sur la communication, l’intégration et la collaboration entre les équipes pour permettre un déploiement rapide des produits digitaux. Ce processus met par ailleurs l’accent sur la mise en place de garde-fous au niveau qualité et sécurité pour tendre vers une logique “dev-sec-ops”.

Pourquoi utiliser ces technologies ?

Les Modern Apps viennent s’opposer aux solutions dites "monolithiques" traditionnelles. Celles-ci portent un périmètre large, souvent trop large, et bien au-delà du périmètre métier auquel elles tentent de répondre. La conséquence directe est une inadéquation fonctionnelle, un couplage fort entraînant de l’interdépendance entre les systèmes, et une réduction de la capacité à livrer des fonctionnalités rapidement.
De plus, le frontend et le backend sont liés et les web services sont souvent sous-dimensionnés pour servir le besoin d’omnicanalité. Il est donc nécessaire d’avoir le ciment nécessaire pour assembler ces briques de façon cohérente, et selon le niveau de service attendu, la glue et les solutions ne seront pas les mêmes.

En découpant le code d’une application en microservices, les développeurs peuvent rapidement déployer des mises à jour pour n’importe quelle partie de l’application. L’approche moderne permet d’accélérer le train de livraison, diminuer les temps de build et d'accroître la flexibilité de l’ensemble. L’ambition autour du cloud natif : faire en sorte que l’IT devienne une commodité pour servir le métier.

Marché et maturité

Les technologies derrière le cloud natif sont matures :

  • Modèle serverless : K8S ou Knative sont utilisés depuis des années. Les modèles FaaS sont plus récents et évoluent vite, mais datent déjà de 2015 pour AWS. 
  • Approche découplée : single-Page-App / PWA / GraphQL sont dans le paysage digital depuis un moment ;
  • Les offres du cloud public sont très éprouvées et les instances déployées par des milliers d’utilisateurs.

Quels projets seraient difficiles à réaliser sans ce type de technologies ?

Sans approche moderne, certains projets seraient particulièrement complexes à mettre en œuvre :

  • L’adaptation rapide au changement du métier : réactivité automatisée des services à la charge ;
  • L’analyse de données : traitement massif de données, stockage et calculs ;
  • Les objets connectés et les périphériques mobiles : gérer des milliers de capteurs ;
  • L’innovation sans goulot d’étranglement : lancer de nombreux projets sans consacrer pour chacun de lourds investissements ;
  • La massification des données et son stockage : l’accroissement et la conservation longue durée des données.
     
Guillaume Lanthier

Guillaume Lanthier

Responsable AI Factory