Voici une série de bonnes pratiques pour vos applications à forte exigence en terme de montée en charge. Je pense qu’il est intéressant de prendre en compte ces bonnes pratiques pour des développements moins exigeants en terme de scalabilté, parce qu’elles vont dans la sens de la robustesse de vos produits.

1. Asynchronous – Utilisez des patterns asynchrones le plus souvent possible.

2. Swim Lanes – Veillez à isoler vos clients (par catégorie éventuellement) pour éviter l’effet boule de neige d’une problème technique vers vos autres clients.

3. Cache – Mettre en oeuvre des caches au niveau des différentes couches

4. Monitoring – Maitrisez le comportement de votre application d’un point de vue utilisateur

5. Replication – Repliquez vos données pour faciliter la reprise sur erreur mais aussi pour décharger vos bases en lecture.

6. Sharding – Structurez votre application et les données associées par service ou client (partitionnement horizontal)

7. Use Few RDBMS Features – Utilisez votre SGBD principalement pour ses capacités associées à la persistance.

8. Slow Roll – Mettez en ligne progressivement vos nouvelles versions de code, sur un nombre réduit de serveurs.

9. Load & Performance Testing – Testez systématiquement la performance de la nouvelle version de votre application avant de passer en production.

10. Capacity Planning / Scalability Summits – Calculez la capacité dont vous disposez sur chaque tiers, et chaque service de votre système.

11. Rollback – Ayez toujours la possibilité de revenir à une version antérieure

12. Root Cause Analysis – Favorisez un environnement de travail où vos ressources chercheront systématiquement à identifier et résoudre les causes réelles associées au problème identifié.

13. Quality From The Beginning – La qualité ne peut pas être testée, c’est une part inhérente au produit dès sa conception.