Werner Vogels, CTO of Amazon, wrote this post three years ago when AWS completed 10 years. At a time when I am constantly thinking about & making engineering choices at my startup, these are some great fundamentals to follow.
1. Build evolvable systems: Keep the possibilities & scale of the future in mind. Build an architecture in which you can introduce new software components without taking the service down.
2. Expect the unexpected: Everything eventually fails over time. Many failure scenarios will be unknown at design and build time. Build systems that embrace failure as a natural occurrence.
3. Primitives not frameworks
4. Automation is key
5. APIs are forever: Designing APIs is a very important task as you’d only have one chance to get it right.
6. Know your resource usage
7. Build security in from the ground up: To build secure services, it is necessary to integrate security at the very beginning of service design
8. Encryption is a first-class citizen: Encryption must be a high priority for your business because it is a high priority for your customer’s business.
9. The importance of the network
10. No gatekeepers
A quote I liked in this article:
“There is no compression algorithm for experience.”
9 mins read