Aller au contenu principal

Design Patterns et architecture logicielle

« Diviser pour mieux régner »

Ces éléments ne sont pas liés à un langage, mais sont une manière de coder.

Les Design Patterns en quelques mots

Les Design Patterns sont des structures de code permettant d’atteindre des objectifs particuliers dans la structure du code.

Dans une application, on doit parfois créer l’équivalent d’un adaptateur dans la vie réelle : il faut intégrer un bout de code, mais celui-ci ne « rentre pas bien » dans notre code. Comme dans la vie réelle, il y a des techniques peu pratiques/réutilisables (par exemple souder) et des techniques plus adaptées (utiliser un embout).

Les Design Patterns ne sont que des lignes de code, mais agencées correctement, rendent des codes indépendants et pourtant interconnectés, comme sur la carte mère d’un ordinateur.

Comprendre et appliquer les Design Pattterns augmente la « réparabilité » et l’évolutivité des applications, par le remplacement/l’ajout rapide de parties du code. Les « plugins » dans un logiciel sont un exemple de Design Patterns.

L'architecture logicielle en quelques mots

L’architecture logicielle pousse les Design Patterns un cran plus loin en permettant de découper un logiciel en différentes parties complètement indépendantes, souvent hébergées sur des serveurs différents.

L’architecture logicielle, c’est un peu transformer un « programme Dieu » en une fourmilière : chaque partie du programme est indépendante mais toutes sont tournées vers l’objectif commun. On appelle souvent ces différentes parties des « microservices ».

D’autres problématiques interviennent avec l’architecture logicielle :

  • Il faut s’assurer que toutes les parties du programme fonctionnent correctement, peuvent échanger facilement des informations, et ne perdent pas d’information en chemin.
  • Il faut s’assurer que ces différentes parties peuvent si nécessaire fonctionner en autarcie.

Comprendre et appliquer l’architecture logicielle permet de remplacer rapidement des parties d’un programme, mais également d’en démultiplier certaines parties : par exemple, si un microservice est trop sollicité, on peut le dupliquer. C’est une manœuvre beaucoup plus compliquée à mettre en place avec un programme indivisible.

Deux schémas : le premier est intitulé Microservices approch (approche micro-servicielle), l'autre appelé Traditional approach (approche traditionnelle).
Dans le schéma microserviciel, un bloc "UI" avec trois sous-blocs représente la partie visuelle de l'application. Reliée par des flèches y arrivant, des blocs "Stateful services" et "Stateless services with relational databases", des applications externes founissant des données.
Dans le schéma traditionnel, une approche par application unique ou d'application "3-Tier", divisée en plusieurs blocs. Cette application est reliée à une unique base de données monolitique. La légende explique :
  • Single app process or 3-Tier approch
  • Several modules
  • Layered modules

Navigation rapide