Secrets to Amazon's succcess

Start with a press release of what features the user will see and work backwards to check that you are building something valuable.

End up with a design that is as minimal as possible. Simplicity is the key if you really want to build large distributed systems.

Take it for granted stuff fails, that’s reality, embrace it. For example, go more with a fast reboot and fast recover approach. With a decent spread of data and services you might get close to 100%. Create self-healing, self-organizing lights out operations.

Open up your system with APIs and you’ll create an ecosystem around your application.

Only way to manage as large distributed system is to keep things as simple as possible. Keep things simple by making sure there are no hidden requirements and hidden dependencies in the design. Cut technology to the minimum you need to solve the problem you have. It doesn’t help the company to create artificial and unneeded layers of complexity.