Promouvoir la conception modulaire

Last reviewed 2024-12-06 UTC

Ce principe du pilier "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 un scaling flexible, des mises à jour indépendantes et une séparation future des composants.

Présentation du principe

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, qu'une architecture monolithique ou à 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.

Le scaling ciblé peut vous aider à optimiser l'utilisation des ressources et à réduire les coûts de plusieurs manières :

  • Il ne provisionne que les ressources nécessaires pour chaque composant et alloue moins de ressources aux composants moins exigeants.
  • Il ajoute des ressources pendant les périodes de trafic élevé pour maintenir l'expérience utilisateur.
  • Il supprime les ressources sous-utilisées sans compromettre les performances.

La modularité améliore également la maintenabilité. 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. Lorsque les performances sont essentielles, une approche plus étroitement couplée peut être appropriée. La conception du système 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 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 comme un service autonome. Mettez en œuvre un plan de gestion des défaillances pour les sous-processus ou les services moins importants qui n'ont pas d'incidence sur le temps de réponse des services principaux.

Concevez 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 pendant que les utilisateurs interagissent avec votre système. Divisez les tâches volumineuses en blocs plus petits qui peuvent ê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 :

Équilibrez 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 (mémoire, stockage et puissance de traitement, par exemple) pour des opérations spécifiques. Une surallocation de ressources peut entraîner des coûts inutiles, tandis qu'une sous-allocation peut compromettre les performances.

Utilisez des interfaces bien définies

Assurez-vous que les composants modulaires communiquent efficacement via des interfaces claires et standardisées (telles que des API et des files d'attente de messages) pour réduire la surcharge des couches de traduction ou du trafic superflu.

Utilisez 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, car vous pouvez développer, réduire ou redémarrer le service sans perdre les données nécessaires aux requêtes ou processus en cours.

Choisissez 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 en fonction de leur compatibilité avec la modularité.

Pour en savoir plus, consultez les ressources suivantes :