Artlessly stolen from the High Scalability Blog:
AFK Partners has release what they feel are the Best Practices for Scalability:
1. Asynchronous - Use asynchronous communication when possible.
2. Swim Lanes – Create fault isolated “swim lanes” of hardware by customer segmentation.
3. Cache - Make use of cache at multiple layers.
4. Monitoring - Understand your application’s performance from a customer’s perspective.
5. Replication - Replicate databases for recovery as well as to off load reads to multiple instances.
6. Sharding - Split the application and databases by service and / or by customer using a modulus.
7. Use Few RDBMS Features – Use the OLTP database as a persistent storage device as much as possible.
8. Slow Roll – Roll out new code versions slowly, to a small subset of your servers without bringing the entire site down.
9. Load & Performance Testing – Test the performance of the application version before it goes into production.
10. Capacity Planning / Scalability Summits – Know how much capacity you have on all tiers and services in your system.
11. Rollback – Always have the ability to rollback a code release.
12. Root Cause Analysis - Ensure you have a learning culture that is evident by utilizing Root Cause Analysis to find and fix the real cause of issues.
13. Quality From The Beginning – Quality can’t be tested into a product, it must be designed in from the beginning.