General Guiding Principles:
Stop guessing capacity: Might end up sitting on expensive idle resources or dealing with the performance implications of limited capacity.
Test systems at production scale: Can create a production-scale test environment on demand.
Automate to make architectural experimentation easier: Automation allows you to create and replicate your workloads at low cost and avoid the expense of manual effort.
Allow for evolutionary architectures: Allow for systems to evolve over time so that businesses can take advantage of innovations as a standard practice.
Drive architectures using data: Make fact-based decisions on how to improve your workload.
Improve through game days: Test how your architecture and processes perform by regularly scheduling game days to simulate events in production.
General Design Principles:
Be scalable - Vertically and horizontally.
Disposable resources - Servers should be easily disposable and easily configured.
Automation - Serverless, auto-scaling, etc.
Loose coupling - Break a monolith down into smaller, loosely coupled components so a failure doesn't affect other components.
Services, not servers - Using managed services and going serverless rather than just using EC2 instances.
Best Practices:
Decouple your components - Also called loose coupling.
Think parallel - Experiment different architectures in parallel.
Implement elasticity - Can scale in and scale out to meet the demand without any human intervention.
Design for failure - Being pessimistic.
Last updated