Ne créez pas de microservices, recherchez un couplage lâche

Blog

MaisonMaison / Blog / Ne créez pas de microservices, recherchez un couplage lâche

Jul 12, 2023

Ne créez pas de microservices, recherchez un couplage lâche

Par : Chris Bertinato le 29 août 2023 Étant donné que la demande de performances applicatives fiables ne cesse de croître, il n'est pas surprenant que de nombreuses entreprises construisent leurs systèmes en pensant à leur expansion future. Beaucoup

Par : Chris Bertinato le 29 août 2023

Étant donné que la demande de performances applicatives fiables ne cesse de croître, il n'est pas surprenant que de nombreuses entreprises construisent leurs systèmes en pensant à leur expansion future. De nombreux experts du secteur ont souligné que les microservices sont le meilleur moyen de pérenniser un système, mais il serait peut-être préférable d'utiliser plutôt le terme « services de bonne taille », car il n'existe pas de stratégie unique qui fonctionne pour chaque entreprise à tout moment. . Plutôt que de réfléchir aux dernières tendances à adopter comme stratégie, les équipes devraient plutôt reconnaître et se concentrer sur le facteur sous-jacent du couplage. Les systèmes sont plus flexibles et dynamiques s’il existe un couplage lâche entre les composants les plus susceptibles de changer.

Le couplage, dans le contexte des systèmes, fait référence à la manière dont les composants d'un système sont connectés. Des interfaces sont nécessaires pour un couplage lâche. Pour les systèmes électriques, ces interfaces sont implémentées sous forme de connecteurs physiques avec des broches et des prises et des protocoles décrits en termes de niveaux de tension. L'analogie du système logiciel avec un connecteur électrique est une interface de programmation d'application (API), qui pourrait être implémentée sous la forme d'un ensemble de fonctions ou de ressources basées sur HTTP, entre autres. Mais une interface seule ne suffit pas pour un couplage lâche. Cette interface doit également être quelque peu stable, c'est-à-dire qu'un utilisateur peut compter sur cette interface pour être là, avec ses entrées restant les mêmes pendant une longue période ou, du moins, changeant de manière prévisible.

Lorsque les composants d’un système sont faiblement couplés, ces composants peuvent être modifiés en interne sans perturber de manière significative le reste du système. Prenons un exemple quotidien : l’ampoule. Les douilles d'ampoule ont une taille standard avec des filetages standard et une tension standard. L'ampoule elle-même a évolué à travers différents types de matériaux, du filament aux LED, le tout sans nécessiter de changement dans les lampes et les luminaires. Prenons maintenant un exemple simple dans les systèmes logiciels : un serveur HTTP et une banque de données, telle qu'un cache, une file d'attente ou une base de données. Dans la plupart des cas, il serait avantageux de placer une interface entre le serveur et la banque de données qui faciliterait la modification de l'implémentation de la banque de données. Une fois que ces deux composants ne sont que faiblement couplés, les éléments susceptibles de changer peuvent le faire sans nécessiter de modifications significatives des autres éléments.

Si les composants de votre système sont trop étroitement liés, le moindre changement pourrait faire des ravages ailleurs dans le système. Vous pourriez comparer cette structure à un groupe de plantes cultivées à proximité. Parce que toutes les tiges sont entrelacées, essayer de remplacer une plante par une nouvelle sera un défi, car un faux mouvement pourrait facilement déraciner de nombreuses autres plantes.

En revanche, dans un système faiblement couplé, des changements peuvent être apportés avec la certitude que lorsqu’un composant rencontre un problème, le reste du système restera résilient. Cette confiance se traduit par une plus grande flexibilité pour apporter des modifications, permet de réduire les délais de commercialisation des nouvelles fonctionnalités et produits et offre potentiellement un avantage concurrentiel.

Un avantage corollaire du couplage lâche est l’évolutivité : lorsque les interfaces sont situées aux endroits les plus susceptibles de changer, il sera plus facile pour le système d’évoluer. Les interfaces sont censées être stables et opaques, de sorte que tout ce qui se passe derrière elles est généralement inconnu et sans rapport avec l'utilisateur de cette interface. Ainsi, tant que les interfaces restent stables, les systèmes qui les sous-tendent sont libres de changer et donc d’évoluer.

S’il est vrai que les stratégies de microservices prennent en charge le couplage lâche, ce n’est pas le seul moyen. Des stratégies architecturales plus simples peuvent permettre à des projets plus petits ou plus récents de bénéficier des avantages d'un couplage lâche de manière plus durable, générant moins de frais généraux que la construction d'une infrastructure axée sur les microservices.

Les choix architecturaux concernent autant la composante humaine de la construction et de l’exploitation des systèmes logiciels que des préoccupations techniques telles que l’évolutivité et les performances. Et c’est dans la composante humaine que les microservices peuvent échouer.