General Guiding Principles

• Stop guessing your capacity needs

• Test systems at production scale

• Automate to make architectural experimentation easier

• Allow for evolutionary architectures

  • Design based on changing requirements

• Drive architectures using data

• Improve through game days

  • Simulate applications for flash sale days

Best Practices – Design Principles

• Scalability: vertical & horizontal

• Disposable Resources: servers should be disposable & easily configured

• Automation: Serverless, Infrastructure as a Service, Auto Scaling...

• Loose Coupling:

  • Monoliths are applications that do more and more over time and become bigger

  • Break it down into smaller, loosely coupled components

  • A change or a failure in one component should not cascade to other components

• Services, not Servers:

  • Don’t use just EC2

  • Use managed services, databases, serverless, etc!

Last updated