Favoriser la conception modulaire

Last reviewed 2024-12-06 UTC

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

Présentation des principes

Comprenez 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 vous ayez initialement déployé une architecture monolithique ou de microservices. En décomposant le système en modules indépendants et bien définis avec des interfaces claires, vous pouvez mettre à l'échelle 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 plusieurs façons :

  • Elle ne provisionne que les ressources nécessaires à chaque composant et alloue moins de ressources aux composants moins exigeants.
  • Ajoute des ressources lors des périodes de fort trafic pour 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é offre des avantages considérables, vous devez évaluer les compromis potentiels en termes de performances. L'augmentation de la communication entre les modules peut entraîner une latence et une surcharge. Recherchez un équilibre entre modularité et performances. Une conception très modulaire peut ne pas convenir à tous les cas d'utilisation. Lorsqu'il est essentiel d'obtenir de bonnes performances, une approche plus étroitement couplée peut être appropriée. La conception de systèmes est un processus itératif dans lequel vous examinez et affinez en permanence 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. Des composants indépendants avec un minimum de dépendances 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 comme un service autonome. Mettez en œuvre un plan de gestion des défaillances pour les sous-processus ou services moins importants qui n'ont pas d'incidence sur le temps de réponse des services principaux.

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

Concevez votre application pour qu'elle puisse effectuer plusieurs tâches simultanément, comme traiter plusieurs requêtes utilisateur ou exécuter des tâches en arrière-plan pendant que les utilisateurs interagissent avec votre système. Divisez les tâches volumineuses en segments plus petits qui peuvent être traités en même temps par plusieurs instances de service. La concurrence 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 :

Modularité équilibrée pour une allocation flexible des ressources

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

Utiliser des interfaces bien définies

Assurez-vous que les composants modulaires communiquent efficacement grâce à des interfaces claires et standardisées (comme les API et les files d'attente de messages) pour réduire les frais généraux 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 aux requêtes ou processus en cours.

Choisir des technologies complémentaires

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

Pour en savoir plus, consultez les ressources suivantes :