Favoriser la conception modulaire

Last reviewed 2024-12-06 UTC

Ce principe du pilier d'optimisation des performances du Google Cloud framework d'architecture fournit des recommandations pour vous aider à promouvoir une conception modulaire. Les composants modulaires et les interfaces claires peuvent permettre une mise à l'échelle flexible, des mises à jour indépendantes et une future séparation des composants.

Présentation des principes

Comprendre les dépendances entre les composants de l'application et les composants du système pour concevoir un système évolutif

La conception modulaire offre flexibilité et résilience, que l'architecture monolithique ou de microservices ait été déployée initialement. En décomposant le système en modules indépendants et bien définis avec des interfaces claires, vous pouvez faire évoluer des composants individuels pour répondre à des demandes spécifiques.

La mise à l'échelle ciblée peut vous aider à optimiser l'utilisation des ressources et à réduire les coûts de la manière suivante:

  • Il ne provisionne que les ressources nécessaires à chaque composant et alloue moins de ressources aux composants moins exigeants.
  • Ajoute des ressources supplémentaires pendant les périodes de forte activité afin de maintenir l'expérience utilisateur.
  • Supprime les ressources sous-utilisées sans compromettre les performances.

La modularité améliore également la facilité de maintenance. Les unités plus petites et autonomes sont plus faciles à comprendre, à déboguer et à mettre à jour, ce qui peut accélérer les cycles de développement et réduire les risques.

Bien que la modularité présente des avantages importants, vous devez évaluer les compromis potentiels sur les performances. L'augmentation de la communication entre les modules peut entraîner une latence et des frais généraux. Recherchez un équilibre entre modularité et performances. Une conception hautement modulaire n'est pas forcément adaptée à tous les cas. Lorsque les performances sont essentielles, une approche plus étroitement couplée peut être appropriée. La conception de système est un processus itératif, au cours duquel vous examinez et affinez continuellement votre conception modulaire.

Recommandations

Pour promouvoir les conceptions modulaires, tenez compte des recommandations des sections suivantes.

Optez pour un couplage faible

Concevez une architecture faiblement couplée. Les composants indépendants avec des dépendances minimales peuvent vous aider à créer des applications évolutives et résilientes. Lorsque vous planifiez les limites de vos services, vous devez tenir compte des exigences de disponibilité et d'évolutivité. Par exemple, si un composant a des exigences différentes de celles de vos autres composants, vous pouvez le concevoir en tant que service autonome. Implémentez un plan de gestion des défaillances élégantes pour les sous-processus ou services moins importants qui n'ont pas d'impact sur le temps de réponse des services principaux.

Concevoir pour la simultanéité et le parallélisme

Concevez votre application pour qu'elle prenne en charge plusieurs tâches simultanément, comme le traitement de plusieurs requêtes utilisateur ou l'exécution de tâches en arrière-plan lorsque les utilisateurs interagissent avec votre système. Divisez les tâches volumineuses en segments plus petits pouvant être traités en même temps par plusieurs instances de service. La simultanéité des tâches vous permet d'utiliser des fonctionnalités telles que l'autoscaling pour augmenter l'allocation de ressources dans des produits tels que les suivants:

Équilibrer la modularité pour une allocation flexible des ressources

Dans la mesure du possible, assurez-vous que chaque composant n'utilise que les ressources nécessaires (comme la mémoire, l'espace de stockage et la puissance de traitement) pour des opérations spécifiques. Une surallocation de ressources peut entraîner des coûts inutiles, tandis qu'une sous-allocation de ressources peut compromettre les performances.

Utiliser des interfaces bien définies

Assurez-vous que les composants modulaires communiquent efficacement via des interfaces claires et standardisées (telles que les API et les files d'attente de messages) afin de réduire les coûts liés aux couches de traduction ou au trafic superflu.

Utiliser des modèles sans état

Un modèle sans état peut vous aider à gérer chaque requête ou interaction avec le service, indépendamment des requêtes précédentes. Ce modèle facilite l'évolutivité et la récupération. Vous pouvez ainsi développer, réduire ou redémarrer le service sans perdre les données nécessaires pour les requêtes ou les processus en cours.

Choisir des technologies complémentaires

Choisissez des technologies qui complètent la conception modulaire. Évaluez la compatibilité des langages de programmation, des frameworks et des bases de données avec la modularité.

Pour en savoir plus, consultez les ressources suivantes :