Que veut-on dire par faire des applications modernes?

Il y a la vieille façon de faire des systèmes d’information. Ces applications sont souvent qualifiées d’applications monolithiques. Mais qu’en est-il des applications « modernes« ? Qu’ont-elles de si spéciales? J’ai une bonne partie de la réponse pour vous, en fait, Amazon AWS nous arrive avec une belle explication sur ce qu’est une application moderne.

Note : applications et système d’information seront des synonymes dans cet article pour simplifier mon propos.

D’abords, expliquons quelque peu ce qu’est une application, qu’un système d’information. Dans mes mots, je vous dirais que c’est un ensemble de composantes technologiques, d’outils et services de sécurité, de programmes informatiques codés dans des langages de programmation qui manipulent des données pour offrir un service à l’utilisateur (ou l’organisation) dans un objectif bien précis. Nous, gens en technologie de l’information, nous bâtissons des systèmes d’information.

Voici ce qu’en pense WIKIPEDIA : « Le système d’information (SI) est un ensemble organisé de ressources qui permet de collecter, stocker, traiter et distribuer de l’information1, en général grâce à un réseau d’ordinateurs. »

La vieille façon de faire un système d’information est assez simple. Toutes les composantes énumérées précédemment se retrouvent dans un bloc. Seule la composante sécurité se retrouve en grande partie à l’extérieur de ce bloc monolithique.

Voici la représentation qu’Amazon AWS propose en lien avec les applications monolithiques:

Cette façon de faire a été et est encore en place dans bien des organisations. Elle a fait « la job » et a rendu de fiers services depuis biens des années, mais ses défauts commencent à avoir plus de poids dans la balance que ces qualités. Ils sont nombreux ces défauts, en voici quelques uns :

  • le moindre changements apportent son lot de tests, validations, de corrections ici et là qui font en sorte de voir arriver ces changements qu’une ou 2 fois par année pour bien des systèmes d’information;
  • les données se retrouvent dans des monstres (en volume et en complexité donc en $) de bases de données dont l’entretien et la moindre manipulation deviennent un cauchemar;
  • Les composantes du monolithe deviennent à saveur unique. Le langage de programmation, le choix du stockage des données, le type de traitement (serveurs), etc.. sont trop souvent conjugués au singulier (un langage, un type de stockage, etc..) pour tout le bloc.

L’approche moderne appelée microservice pourrait se résumer simplement par « diviser pour mieux régner en utilisant le bon outil pour le bon besoin ». Il s’agit en fait de découper le système d’information en composantes simples qui sont construites avec les meilleurs outils/services pour effectuer la tâche exigée. Et le saint Graal survient lorsque ces composantes peuvent être utilisées par plusieurs systèmes d’information.

Le plus important avantage des applications modernes selon moi est la grande vélocité de mise en place des changements. Parce qu’un changement s’applique à une composante autonome et non sur le bloc en entier. Quelques tests sur la composante modifiée et de tous petits tests d’intégration avec le reste des autres composantes servent à conclure qu’un changement est adéquat. On parle ici de la possibilité d’effectuer des changements au mois, à la semaine… à la journée.

Autre point positif qui s’inscrit dans « le bon outil pour le bon besoin » est le choix du langage de programmation. Certains langages sont plus adéquats pour faire des calculs, d’autres pour le procédurale, etc… L’approche moderne de faire des applications permet de choisir le bon langage (et de le changer au besoin) pour répondre à l’exigence du besoin à répondre. S’ajoute aussi le choix du stockage de données. Une base de donnée relationnelle ne répond pas adéquatement à un besoin lié à l’utilisation de données basées sur le temps par exemple. Alors, pourquoi ne pas utiliser le bon stockage pour le bon type de données?

Avoir de petites composantes permet plus facilement d’automatiser les tests et leur déploiement. Imaginez une composante qui n’a comme tâche que de retourner les totals des achats d’un client sur une période de temps déterminée. Faire un test automatisé sur ce genre de fonction est assez simple car les résultats souhaités sont très prévisibles. Pour le déploiement, pousser une fonction et ses mises à jour dans un contexte sans serveur (serverless) qu’il soit avec des conteneurs ou dans des fonctions (FaaS) restent assez simple. L’infra As Code (IaC) (où faire de l’infrastructure à l’aide de la programmation) prend alors tout son sens de par sa simplicité et son au niveau d’automatisation.

Et la sécurité dans tout cela? Sécurité souvent de périmètre dans un contexte du monolithe, la sécurité change en profondeur dans les applications modernes. On voit apparaître :

  • le no-trust : on ne donne accès à rien n’y personne et on ajoute des accès qu’au minimum de ressources (même s’il provient de l’intérieur du périmètre de confiance);
  • la sécurité par rôles : RBAC.
  • Les validations de conformité se fait au niveau du « code » ayant servi à déployer les infrastructures et non plus sur les composantes elles-même;
  • et la liste continue de façon de faire de la sécurité dans un contexte d’applications modernes.

Je vous invite à lire ce document d’Amazon AWS qui détaillent certains de mes propos.

Les applications modernes changent la façon dont vous créez de la valeur pour le client. De nombreuses entreprises innovent plus rapidement en changeant la façon dont elles conçoivent, construisent et gèrent les applications, grâce à ce que nous appelons des applications modernes. Les applications modernes augmentent l’agilité de vos équipes et la fiabilité, la sécurité et l’évolutivité de vos applications.
Les applications modernes sont construites plus rapidement que jamais, avec la possibilité de s’adapter rapidement à des millions d’utilisateurs potentiels, d’avoir une disponibilité mondiale, de gérer des pétaoctets, voire des exaoctets de
données, et de réagir en quelques millisecondes

https://pages.awscloud.com/rs/112-TZM-766/images/MA20-Modern-Applications-eBook-FINAL-FR-CA.pdf

Poursuivez la discussion sur vos systèmes de mission : luc@luc.cloud

Luc Pâquet

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

%d blogueurs aiment cette page :