1. design for failure recovery 2. design for scale in/out 3. design for multi-tenancy 4. design for security 5. design for visibility 6. design for compatibility