Architecture d'un site web : du monolythe au module au composant

Par Christian,
dans Actualité digitale

Pourquoi est-ce que Symfony2 est sur le devant de la scène, et pourquoi est-ce qu’on vous le recommande de plus en plus pour vos applications web ? Pour répondre à cette question, je vous propose qu’on regarde un peu ce qui se passe sous le capot de votre site, d’hier à aujourd’hui.

Historiquement, votre site web avait tendance à avoir une architecture dite monolithique : une application qui gère l’intégralité des données, services et fonctionnalités proposées, à l’utilisateur final comme au webmaster. A un stade où l’Interweb était nouveau et les technologies encore naissantes, ce type d’architecture était logique car les sites web étaient isolés les uns des autres et simples fonctionnellement.
Ce type d’architecture est simple à mettre en oeuvre, et permet de développer de nouvelles applications relativement rapidement. En revanche, leur maintenance est plus compliquée, et cette complexité croit de manière exponentielle au fur et à mesure qu’on les fait évoluer.

Enter les CMS : des applications dédiées à la gestion de contenu éditorial pour le web. L’objectif des CMS, au delà de faciliter l’administration des données, est de s’inscrire dans la durée. Pour cela, ces applications ont souvent été construites autour d’une architecture dite modulaire. Ce sont les fameux modules ou plugins que vous retrouvez dans WordPress ou d’autres Drupal.
Ce modèle permet d’adapter l’application aux besoins de l’utilisateur : vous avez besoin d’ajouter des sondages sur le site ? Il y a un plugin pour ça. Ce type d’application est également plus simple à maintenir, car les interventions vont être limitées au plugin concerné. Cela permet de réduire les risques d’impact ou de régression sur le reste de l’application.

Aujourd’hui encore, cette architecture d’application convient à beaucoup de cas d’utilisation est cohérente pour nombre de sites web.

En revanche, les technologies et leurs usages n’ont pas cessé d’évoluer. De nouveaux besoins sont apparus avec l’avènement des objets connectés et les réseaux sociaux notamment : l’interconnexion et l’interopérabilité des systèmes.

L’architecture qui répond à ces besoins repose sur le concept de composants. Dans ce modèle, le site web n’est pas qu’une application, aussi modulaire soit-elle. C’est un regroupement de composants interconnectés. Cette architecture permet à chaque composant d’être spécialisé et repose sur une forte notion d’interopérabilité : chaque composant doit pouvoir dialoguer et fonctionner non seulement avec les autres composants de l’application mais aussi les composants ou les applications d’autres systèmes.

La différence entre une architecture modulaire et une architecture basée sur les composants peut ne pas être évidente. Je vous propose d’imaginer que vous êtes une application web vivante, et vous avez une tâche importante à faire : boire du café.
Il y a fort longtemps, quand nous n’étions que des organismes unicellulaires, on aurait ingéré le café à travers notre membrane externe pour l’intégrer à nous-même.
Mais depuis les êtres vivants ont évolués. Maintenant, on va pouvoir utiliser notre plugin « main » pour prendre une tasse de café. Ce plugin main va pouvoir interagir avec notre plugin bouche pour ingérer le doux nectar.
Et certains d’entre nous sont dotés d’une architecture composée. Ils ont une assistante, appelons la Sophie, qui peut aller chercher leur café. Sophie est faite pour ça, elle est autonome, et si vous voulez plutôt donner la tasse de café à quelqu’un d’autre, c’est possible aussi. Elle peut même vous amener autre chose que du café.

Cette architecture apporte un maximum d’évolutivité aux applications. Elle est plus complexe à mettre en oeuvre. Mais elle apporte beaucoup plus de possibilités.

Symfony2 est structuré en Bundles, les composants. Le framework permet d’intégrer des composants externes qui n’ont pas été développés sous Symfony au travers de ces Bundles. Le coeur de Symfony est constitué de composants PHP utilisables en dehors du framework.
Ce concept de composant est donc un fondement de Symfony2, ce qui en fait un framework parfaitement adapté au développement d’applications « nouvelle génération ».

par Christian

Laisser un commentaire

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

Rechercher