Le découplage dans l'architecture logicielle déplace la complexité

  • par Derek Comartin
  • Publié sur Derek Comartin (CodeOpinion)
  • Sélectionné le
  • Architecture
Le découplage dans l'architecture logicielle déplace la complexité - Derek Comartin (CodeOpinion)
Image : Derek Comartin (CodeOpinion)

Que se passe-t-il lorsqu'un utilisateur clique sur le bouton « Passer la commande » ?

Pour l'utilisateur final, c'est très simple : un simple clic. Mais dans un système complexe, de nombreuses opérations se déroulent en coulisses. Il faut enregistrer la commande, le paiement, débiter la carte bancaire du client, réserver le stock, envoyer un e-mail de confirmation et éventuellement comptabiliser les points de fidélité. Des analyses, des recommandations ou d'autres processus peuvent également être déclenchés par la commande.

Du fait de la multitude de choses qui se passent, il y a aussi beaucoup de choses qui peuvent mal tourner.

On nous dit souvent que le découplage est une excellente chose. Utilisez des abstractions. Utilisez l'injection de dépendances. Remplacez les appels directs par des messages et des files d'attente. Utilisez une architecture de type publication/abonnement et événementielle.

Tout cela peut être utile, mais ce ne sont pas des objectifs. Plus important encore, ce n'est pas gratuit.

Chaque étape que vous évitez d'appeler une méthode en mémoire ajoute une nouvelle forme de complexité et un nouveau coût. Vous pourriez gagner en indépendance de déploiement, en extensibilité, en scalabilité ou en disponibilité. Mais vous introduisez un élément supplémentaire qu'il vous faut désormais comprendre, exploiter et déboguer.