- Scalable: You know your idea is awesome and millions of people will want to use your system. So make it scalable so lots and lots of people can use it.
- Fault-tolerant: If something goes down, people will be upset and it will affect your revenue and profit. So make it fault-tolerant.
tip: have redundant stuff that can replace the broken stuff. - High-availability: You want your users to have access to your system 24x7x365. So make it highly available.
tip: avoid single point of failures, deploy rolling updates. - Secure: You don’t want a bunch of hackers to steal your data and sell it on secret markets. Bad things can happen to your business, your customers, your profits and your CEO(what if it is you) may get fired.
tip: Use things like authorization, authentication, encryption. - Loosely Coupled: Technologies change(and try to improve), what if you want to replace a particular technology with something that is more suitable. So make things loosely coupled that way you can replace stuff. Loose coupling also helps in reusing the stuff.
- Why re-invent the wheel? Use proven architectrual design patterns and proven software design principles.