Twenty Key System Design Principles
20) Spend Money…but not blindly
18) Remove/Identify SPOFs
17) Maintain Tight Security
16) Consolidate Your Servers
15) Automate Common Tasks
13) Establish Service Level Agreements
10) Maintain Separate Environments
9) Invest in Failure Isolation
8) Examine the History of the System
6) Choose Mature Software
5) Select Reliable and Serviceable Hardware
3) Exploit External Resources
2) One Problem, One Solution
1) KISS: Keep It Simple Simple